程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在具有求和函数的 cplex 中包含带有决策变量的 if 语句大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在具有求和函数的 cplex 中包含带有决策变量的 if 语句?

开发过程中遇到如何在具有求和函数的 cplex 中包含带有决策变量的 if 语句的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在具有求和函数的 cplex 中包含带有决策变量的 if 语句的解决方法建议,希望对你解决如何在具有求和函数的 cplex 中包含带有决策变量的 if 语句有所启发或帮助;

如何转换具有决策变量的约束部分中的 If 语句。 costvship 是运输的可变成本,只有当 sum(m in M)x[m][n]*h[p][n]*weight[m] 大于阈值 Weight 时才需要包括在内。这里 x[m][n] 和 h[p][n] 是二进制变量。

 forall(p in P,n in N){Costship[p][n] == costfshiP*z[p][n] + costvshiP*(sum(m in M)(x[m][n]*h[m][p]*weight[m])- Weight);

}

解决方法

如果约束为真,您可以使用逻辑约束来增加额外成本。

让我更改 zoo example 以表明:

int nbKids=300;
float costBus40=500;
float costBus30=400;

int penalty=1000;
 
dvar int+ nbBus40;
dvar int+ nbBus30;
 
minimize
 costBus40*nbBus40  +nbBus30*costBus30  + (nbBus40+nbBus30<=8)*penalty;
 
subject to
{
 40*nbBus40+nbBus30*30>=nbKids;
} 

你也可以用 sum 写

int nbKids=300;

{int} sizes={40,30};
float costBus[sizes]=[500,400];


int penalty=1000;
 
dvar int+ nbBus[sizes];

 
minimize
  sum(s in sizes)costBus[s]*nbBus[s] + (sum(s in sizes) nbBus[s]<=8)*penalty;
 
subject to
{
 sum(s in sizes)s*nbBus[s]>=nbKids;
} 

大佬总结

以上是大佬教程为你收集整理的如何在具有求和函数的 cplex 中包含带有决策变量的 if 语句全部内容,希望文章能够帮你解决如何在具有求和函数的 cplex 中包含带有决策变量的 if 语句所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:cplexif语句