0

我在其他编程语言中看到过类似的问题,但无法在 CPLEX 中解决以下问题。

我有两个条件需要满足。

  1. 生产的冰淇淋只能在每批 60 个调味批次中使用,并且可以在同一天食用。

forall(f in flavor, t in time) 生产数量的数量应该可以被 60 整除。

我在下面尝试的代码不起作用。

forall(f in flavour, t in time) quantity[f][d] % 60 == 0;
  1. 外购冰淇淋无论口味如何,只能以每 5 个单位购买

forall(t in time) 外包冰淇淋的数量应可被 5 整除

任何人都可以帮助使用上述功能之一吗?

4

1 回答 1

0

模不是线性的,因此您应该引入新的决策变量。

请参阅使优化变得简单模数示例

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;
 
 
} 
于 2021-11-16T08:34:46.787 回答