如何在CPLEX中编写这样的约束(放置l+1是正确的)?
s_ijml + x_ijml*p_ij <= s_i‘’j‘m(l+1)
其中s和x是决策变量,i,j,m,l是指数。
谢谢,
发布于 2014-11-11 17:22:01
试试这个:
{int} i_indexes = ...;
{int} j_indexes = ...;
{int} m_indexes = ...;
{int} l_indexes = ...;
dvar float+ s[i_indexes][j_indexes][m_indexes][l_indexes];
forall(i in i_indexes, j in j_indexes, m in m_indexes, l in l_indexes) {
l != last(l_indexes) => s[i][j][m][l] <= s[i][j][m][nextc(l_indexes, l)];
}发布于 2016-12-14 15:49:03
在上面的答案中,'index's不能是{int},以便您需要的索引使用'range‘。只需将代码更改为:
int N_i=...;
int N_j=...;
Range I_indexes=1..N_i;
Range I_indexes=1..N_j;https://stackoverflow.com/questions/26848648
复制相似问题