【问题标题】:Operator not available for dvar float+ * float[][range]运算符不适用于 dvar float+ * float[][range]
【发布时间】:2021-07-26 03:36:51
【问题描述】:
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)] );
          
} 

错误消息针对最后一行 Util:Operator not available for dvar float+ * float[][range]。我已经检查了有关此主题的其他帖子,并且问题在括号中。即使添加括号,错误仍然存​​在。感谢您的帮助。

【问题讨论】:

    标签: optimization cplex ilog


    【解决方案1】:

    processMapping 是 3D 数组而不是 2D 数组

    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)])] );
           
    

    会更好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 2014-08-07
      • 2016-04-24
      • 2016-07-22
      • 2012-06-29
      • 2015-02-23
      相关资源
      最近更新 更多