我们有一个supplier/depot (指数d)和几个工厂(指数f),在T月(指数t)期间对不同的产品 (p)有需求。有一个车队的卡车(指数v)与不同的卡车类型的(指数k) (例如,其中有些有冰箱),这限制了一些产品只运载该卡车类型。我们在仓库和工厂之间有一组预定义的路由(索引r) (工厂之间存在路由)。
卡车从供应商处装载货物,并使用预先确定的路线,在这些路线中可以访问多个工厂,并最终返回仓库进行下一次装载。在一个月内,每辆卡车可以从仓库运送货物到j工厂多次。因此,变量x_{p,k,r,f,n,t}是v型货车(k型)可以从仓库装载货物,并在t时刻通过rout r到达工厂f的乘积p,这类车辆受V_k限制。
计数器n是一辆卡车在一个月内向同一工厂运送相同产品、路线的次数。目标是将总成本降到最低。最简单的例子是车辆在一个月内走上了仓库、->工厂、->仓库、->工厂、1工厂。在这种情况下,我们有两个指数x_{p,k,r,f,1,t}和x_{p,k,r,f,2,t}来区分这两轮。这就是问题所在,这个模型产生了许多备选的解决方案。例如,如果我们有4辆k型卡车,那么一个解决方案是(我们称之为解决方案1):
x_{p,k,r,f,1,t} =6
x_{p,k,r,f,2,t} = 4.
另一种解决办法(解决方案2)是:
x_{p,k,r,f,1,t} =4
x_{p,k,r,f,2,t} = 6.
Whish与解决方案1基本相同(只是顺序改变)。
随着问题规模的扩大,许多不同的解决方案的总成本是相同的。我们想出一种减少解空间(交替解)的方法,同时保持所有可能的目标值。
发布于 2022-03-17 19:31:42
查看Cplex解决方案池以及如何设置其筛选器。
发布于 2022-03-17 19:47:57
此参数可用于筛选cplex解决方案池:
对人口的限制(生成的解决方案数目)
请查看下面的链接:
https://www.ibm.com/docs/en/icos/20.1.0?topic=pool-which-parameters-control-solution
发布于 2022-03-18 07:40:04
您应该添加额外的约束来消除对称性。
例如
forall(p,k,r,f,t) forall(n in 1..N-1) x_{p,k,r,f,n,t}<=x_{p,k,r,f,n+1,t}将摆脱一些重复的解决方案
在一个较小的例子中,如动物园实例,
在OPL CPLEX中
int nbKids=300;
float costBus40=500;
float costBus30=400;
dvar int+ nbBus40;
dvar int+ nbBus40b;
dvar int+ nbBus30;
minimize
costBus40*nbBus40 +costBus40*nbBus40b +nbBus30*costBus30;
subject to
{
40*(nbBus40+nbBus40b)+nbBus30*30>=nbKids;
} 可能会导致许多重复的解决方案。附加约束
nbBus40b<=nbBus40;会把一些
https://stackoverflow.com/questions/71486233
复制相似问题