Hi,
same question at
https://stackoverflow.com/questions/68524238/operator-not-available-for-dvar-float-floatrange/68540426#68540426Please try to avoid cross posting.
processMapping is a 3D array not a 2D array
forall(t in Periods)
forall(pr in Processes)
forall(s in Suppliers)
Util[pr,t+NbPeriods*(s-1)] == sum(p in Parts) (Supply[p,t+NbPeriods*(s-1) * ftoi(ProcessMapping[s,p, pr+NbProcesses*(s-1)])] );
works better
------------------------------
[Alex] [Fleischer]
[EMEA CPLEX Optimization Technical Sales]
[IBM]
------------------------------
Original Message:
Sent: Mon July 26, 2021 05:08 PM
From: Paul Rubin
Subject: Operator not available for dvar float+ * float[][range]
When you declare ProcessMapping, you give it three dimensions. In the line where the error occurs, I only see two indices for it.
------------------------------
Paul Rubin
Professor Emeritus
Michigan State University
Original Message:
Sent: Mon July 26, 2021 01:03 AM
From: JM Tan
Subject: Operator not available for dvar float+ * float[][range]
int NbPeriods = ...; range Periods = 1..NbPeriods;int NbParts = ...; range Parts = 1..NbParts;int NbSuppliers = ...; range Suppliers = 1..NbSuppliers;int NbProcesses = ...; range Processes = 1..NbProcesses;int NbPS[1..NbParts, 1..NbProcesses*NbSuppliers] = ...;float Demand[Parts][Periods] = ...;float BOH[Parts] = ...;float Capacity[Suppliers][Processes] = ...;float ProcessMapping[s in 1..NbSuppliers, pr in 1..NbProcesses, p in 1..NbParts] = NbPS[p, pr+NbProcesses*(s-1)];float Price[Parts][Suppliers] = ...;dvar float+ Supply[1..NbParts, 1..NbPeriods*NbSuppliers];dvar float+ EOH[Parts][Periods];dvar float+ Util[1..NbProcesses, 1..NbPeriods*NbSuppliers];minimize sum( t in Periods ) DOIDelta[t] ; subject to { forall(p in Parts) EOH[p][0] == BOH[p]; forall(p in Parts) forall( t in Periods) EOH[p][t] == EOH[p][t-1] + sum(s in Suppliers) Supply[p,t+NbPeriods*(s-1)] ; forall(t in Periods) forall(pr in Processes) forall(s in Suppliers) Util[pr,t+NbPeriods*(s-1)] == sum(p in Parts) (Supply[p,t+NbPeriods*(s-1)] * ProcessMapping[p, pr+NbProcesses*(s-1)]/ Capacity[s][pr] ); }
The error message is for the last Util line: Operator not available for dvar float+ * float[][range].
Appreciate your help.
------------------------------
JM Tan
------------------------------
#DecisionOptimization