我在构建CPLEX中的运输成本表达式时遇到了问题。特别是,它是一个分段线性函数的物质流动,反映了规模经济。考虑到从工厂到仓库的运输成本,我们分别将Tfm和Qf1fm作为从工厂j到仓库m运输f族产品的基线运输成本,以及产品族f从工厂j到仓库m的物流。R代表流量所属的范围。这是密码
sum(f in Fa, j in Pl, m in Wh, r in ra)
piecewise(t in 1..NbPieces-1) {Coef[t]*T[f][j][m] -> Breakpoint[t]; Coef[NbPieces]*T[f][j][m]} Qf1[f][j][m][r];这是我的.dat文件
NbPieces=4;
Coef=[1, 0.95, 0.89, 0.8];
Breakpoint=[40, 100, 1000];但是,程序不能提取表达式。有人能帮我解决这个错误吗?
编辑:谢谢,亚历克斯·弗莱舍!我修好了上面的那个。然而,最优解仍未达到。我想我确实犯了别的错误。当我添加约束,以确保每个产品家族中的产品流量之和必须等于该产品族从一个阶段到另一个阶段的流量时,我不确定它是否正确。
这是我的约束代码,Q2是产品i从仓库m到配送中心k的流动速率,Qf2是产品族f从仓库m到配送中心k的流量。族1包括产品1-6,10。家庭2: 7-9,家族3: 11-14。
forall (i in pr, m in Wh, k in DC)
sum(i in pr:i<=6 || i==10) Q2[i][m][k] == sum(r in ra,f in Fa:f==1)Qf2[f][m][k][r];
forall (i in pr, m in Wh, k in DC)
sum(i in pr:i<=9 || i>=7) Q2[i][m][k] == sum(r in ra,f in Fa:f==2)Qf2[f][m][k][r];
forall (i in pr, m in Wh, k in DC)
sum(i in pr:i>=11) Q2[i][m][k] == sum(r in ra,f in Fa:f==3)Qf2[f][m][k][r];发布于 2021-12-18 08:32:18
您有超出界限的错误,但是如果您更改
sum(f in Fa, k in DC, l in CZ, r in ra)
piecewise(t in 1..NbPieces-1) {Coef[t]*T3[f][k][l] -> Breakpoint[t]; Coef[NbPieces]*T3[f][k][l]} Qf2[f][k][l][r];转到
sum(f in Fa, k in DC, l in CZ, r in ra)
piecewise(t in 1..NbPieces-1) {Coef[t]*T3[f][k][l] -> Breakpoint[t]; Coef[NbPieces]*T3[f][k][l]} Qf3[f][k][l][r];那就成功了。你确定Qf2在这里吗?Qf3工作很好
https://stackoverflow.com/questions/70387828
复制相似问题