我在其他编程语言中见过类似的问题,但没有能够在CPLEX中解决下面的问题。
我有两个条件需要满足。
就所有(风味上,时间上)而言,生产量应除以60。
下面我尝试过的代码不起作用。
forall(f in flavour, t in time) quantity[f][d] % 60 == 0;所有外包冰淇淋的数量应除以5。
有人能帮上忙吗?
发布于 2021-11-16 08:34:46
modulo不是线性的,所以您应该引入新的决策变量。
int nbKids=300;
float costBus40=500;
float costBus30=400;
dvar int+ nbBus40;
dvar int+ nbBus30;
dvar int+ nbBus40div3;
dvar int+ nbBus30div3;
minimize
costBus40*nbBus40 +nbBus30*costBus30;
subject to
{
40*nbBus40+nbBus30*30>=nbKids;
// Plus let s add that numbers of buses have to be 3 multipliers
nbBus40==3*nbBus40div3;
nbBus30==3*nbBus30div3;
} https://stackoverflow.com/questions/69985851
复制相似问题