GAMS:避免在CPLEX中扫描明显错误的解决方案

时间:2018-03-12 09:30:42

标签: modeling cplex gams-math mixed-integer-programming

我在GAMS中遇到以下问题

我实现了位置路由问题。在检查.log文件的时候,我注意到了一些东西,如果我修复它可能会加速计算时间。 我先说一个例子:

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

设定

Glide.with(mcontext)
                .applyDefaultRequestOptions(RequestOptions.centerCropTransform()
                        .diskCacheStrategy(DiskCacheStrategy.RESOURCE))
                .load(videourl)
                .into(thumbnailimg);

二元变量

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.

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

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

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

最优性Gap然后"跳跃"当打开更少的仓库时,到近乎最佳的解决方案(参见附件截图)。所以基本上花了很多时间扫描显然"坏"解决方案。实际上,我有意识地使用了明显最佳解决方案只包含一个仓库的示例。

我向你提问:

我怎样才能指导CPLEX解决由一个仓库组成的解决方案,而不会在模型中提供最大数量的可能已打开的仓库(即总和(WH,z(WH))= l = 1;)

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

我还试图将仓库开放成本设置得高得离谱。但是,仍然会检查包括打开最大数量的可能仓库的解决方案,并且会丢失时间。

对不起,很长的帖子 我希望我已将所有必要的信息放入:)

期待您的建议

亲切的问候 亚当

logfile

0 个答案:

没有答案