首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPLEX中的分段线性规划

CPLEX中的分段线性规划
EN

Stack Overflow用户
提问于 2021-12-17 02:38:35
回答 1查看 102关注 0票数 0

我在构建CPLEX中的运输成本表达式时遇到了问题。特别是,它是一个分段线性函数的物质流动,反映了规模经济。考虑到从工厂到仓库的运输成本,我们分别将Tfm和Qf1fm作为从工厂j到仓库m运输f族产品的基线运输成本,以及产品族f从工厂j到仓库m的物流。R代表流量所属的范围。这是密码

代码语言:javascript
复制
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文件

代码语言:javascript
复制
 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。

代码语言:javascript
复制
  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];
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-18 08:32:18

您有超出界限的错误,但是如果您更改

代码语言:javascript
复制
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];

转到

代码语言:javascript
复制
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工作很好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70387828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档