减少优化中替代解决方案的大小

发布于 2025-01-14 08:20:33 字数 1034 浏览 1 评论 0原文

我们有一个供应商/仓库(索引 d)和几个工厂(索引 f),在 T < 期间对不同产品 (p) 的需求已知。未来一个月(指数 t)。有一个卡车车队(索引 v),具有不同的卡车类型(索引 k)(例如,其中一些有冰箱),这限制了仅将某些产品运送到该卡车类型。我们在仓库和工厂之间有一组预定义的路线(索引r)(工厂本身之间存在路线)。

卡车从供应商那里装载货物,并按照预先定义的路线,可以访问多个工厂,最后返回仓库进行下一次装载。一个月内,每辆卡车可能多次将货物从仓库运送到工厂 j 。因此变量 x_{p,k,r,f,n,t} 是类型 v(类型 k)的卡车可以从仓库装载并通过路线 r 运至工厂 f 的产品 p 的数量在时间 t。某种类型的车辆受V_k限制。

计数器 n 是一种卡车类型在一个月内将相同产品、路线运送到同一工厂的次数。目标是最小化总成本。 最简单的情况是车辆走depot -> depot -> 路径。工厂 1 ->仓库->一个月内 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 基本相同(只是顺序改变)。

随着问题规模的扩大,许多不同的解决方案具有相同的总成本。我们想考虑一种方法来减少解决方案空间(替代解决方案),同时保留所有可能的目标值。

We have a supplier/depot (index d) and several factories (index f) with demand known for different products (p) during T month (index t) ahead. There is a fleet of trucks (index v) with different truck types (index k) (e.g., some of them have fridge) which restricts carrying some products just to that truck type. We have a set of pre-defined routes (index r) between depot and factories (there exists routes between factories themselves).

A truck loads goods from the supplier and uses the pre-defined routes in which multiple factories can be visited, and finally gets back to the depot for the next load. In a month each truck may carry goods from the depot to factory j more than once. So variable x_{p,k,r,f,n,t} is the amount of product p that truck type v (of type k) can load from depot and through rout r take to factory f at time t. The vehicles of a type are limited by V_k.

The counter n is the number of rounds in a month that a truck type takes the same product, route, to the same factory. The goal is to minimize the total cost.
The simplest case is where a vehicle takes the path depot -> factory 1 -> depot -> factory 1 in a month. In this case we have two index x_{p,k,r,f,1,t} and x_{p,k,r,f,2,t} to differentiate these two rounds.
Here is the problem, this model generates many alternate solutions. For example if we have 4 trucks of type k, then one solution is (we call it solution 1):

x_{p,k,r,f,1,t} = 6

x_{p,k,r,f,2,t} = 4.

Another solution (solution 2) is:

x_{p,k,r,f,1,t} = 4

x_{p,k,r,f,2,t} = 6.

Whish is basically the same as solution 1 (just the order changes).

As the problem size enlarges, many different solutions have the same total costs. We would like to think of a method to decreasing the solution space (alternate solutions), while keeping all possible objective values.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

最佳男配角 2025-01-21 08:20:33

查看 CPLEX 解决方案池以及如何设置其过滤器。

Check out Cplex solution pool and how to set its filters.

伴梦长久 2025-01-21 08:20:33

这是可用于过滤 cplex 解决方案池的参数:

填充限制(生成的解决方案数量)

检查以下链接:

https://www.ibm.com/docs/en/icos/20.1.0?topic=pool-which-parameters-control-solution

This is the parameter that you can use to filter cplex solution pool:

Limit on populate (number of solutions generated)

Check the link below:

https://www.ibm.com/docs/en/icos/20.1.0?topic=pool-which-parameters-control-solution

烟雨扶苏 2025-01-21 08:20:33

您应该添加额外的约束来消除对称性。

例如,

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}

将摆脱一些重复的解决方案

在较小的示例中,例如 zoo 示例

在 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;

将消除一些

You should add additional constraints to get rid of symmetries.

For instance

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}

will get rid of some duplicate solutions

In a smaller example like the zoo example,

in 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;
 
} 

may lead to many duplicate solutions.
The additional constraint

nbBus40b<=nbBus40;

willget rid of some

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文