1

我在 GAMS 中有以下问题

我实现了一个位置路由问题。在检查 .log 文件时,我注意到如果我修复它可以大大加快计算时间。我先举个例子:

假设我们有一个由 s1*s140 个节点组成的所有节点的集合 S,而节点 i1*i10 代表潜在的仓库,而 i11*i140 代表要服务的客户。所以我们有

i "all nodes" /i1*i40/
WH(i) "only potential Warehouse locations" /i1*i10/
K(i) "only customer sites" /i11*i140/

alias(i,j)

二进制变量

z(WH) 1 if warehouse location WH is opened
y(K,WH) 1 if customer site K is assigned to warehouse WH
x(i,j) If node j is immediately headed to after node i.

参数

WHKAPA Capacity of a warehouse
d(K) Demand of a customer.
Cfix Opening Costs for a warehouse
dist(i,j)

目标函数最小化固定开放成本和路由成本。

虽然将仓库的容量设置得足够大,以便能够为所有客户提供服务,并为每个仓库设置高昂的开业成本,但我的假设是,最佳解决方案是开设一个为所有客户服务的仓库。

我的假设是正确的,但是我注意到 CPLEX 首先需要很长时间来检查解决方案空间以打开通往许多仓库的方式。

当打开的仓库更少时,最优性差距会“跳跃”到接近最优的解决方案(见附件截图)。所以基本上很多时间都花在扫描明显“坏”的解决方案上。实际上,我有意识地使用了明显最好的解决方案必须仅包含一个仓库的示例。

我对你的问题:

我如何“指导” CPLEX 结帐由首先打开的仓库组成的解决方案,而不给出模型中可能打开的仓库的​​最大数量(即 sum(WH, z(WH)) =l= 1 ; )

我尝试使用 .prior 后缀和 mipordind = 1 选项来分支优先级。Cplex 仍然检查了由 10 个打开的仓库组成的解决方案,所以我认为它没有帮助。

我还试图将仓库开仓成本设置得高得离谱。然而,包括打开尽可能多的仓库在内的解决方案仍然受到检查并浪费时间。

对不起,我希望我已经把所有必要的信息都放在了:)

期待您的建议

亲切的问候亚当

日志文件

4

0 回答 0