【发布时间】:2019-12-12 16:26:48
【问题描述】:
我正在使用 IBM ILOG CPLEX。我有一个二元决策变量 zbt[b][t]。现在我需要根据是否满足以下条件为其分配 0 或 1
sum(b in PitBlocks, i in PitExits, m in Plants, t in TimePeriods) ( Xbimt[b][i][m][t]) + sum( b in PitBlocks, i in PitExits, s in Stockpiles, t in TimePeriods)(Xbist[b][i][s][t]) >= oreTons[b]
Xbimt , Xbist 是决策变量,而浮点 oreTons[b] 是浮点数
我试过了
if (sum(b in PitBlocks, i in PitExits, m in Plants, t in TimePeriods) ( Xbimt[b][i][m][t]) + sum( b in PitBlocks, i in PitExits, s in Stockpiles, t in TimePeriods)(Xbist[b][i][s][t]) >= oreTons[b]) {zbt[b][t]: =1} 否则 {zbt[b][t]:=0} ;
我得到了几个语法错误,比如预期的 =,意外的 else
我正在尝试的部分如下: Zbt = 1 如果
∑(i=1)^I▒∑(m=1)^M▒∑(t=1)^T▒"Xbimt +" ∑( i=1)^I▒∑(s=1)^S▒∑(t=1)^T▒"Xbist >0" 否则 Zbt = 0
【问题讨论】:
-
我在上面的帖子中添加:即使像下面这样的东西会有所帮助。但这也会产生错误。 xyz = sum(b in PitBlocks, i in PitExits, m in Plants, t in TimePeriods) Xbimt[b][i][m][t] + sum( b in PitBlocks, i in PitExits, s in Stockpiles, t in TimePeriods) Xbist[b][i][s][t]; forall(b in PitBlocks, t in TimePeriods ) { if (xyz >= oreTons[b]) {zbt[b][t]==1;} else {zbt[b][t]==0;} }
标签: conditional-statements variable-assignment opl