我在 CPLEX 中构建运输成本的表达式时遇到问题。特别是,它是物料流的分段线性函数,反映了规模经济。考虑从工厂到仓库的运输成本,我们将 T[f][j][m] 和 Qf1[f][j][m][r] 表示为从工厂 j 运输家庭 f 的产品的基准运输成本分别到仓库 m 和产品族 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];