首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Mathprog编写的线性规划中变量的已知值

用Mathprog编写的线性规划中变量的已知值
EN

Stack Overflow用户
提问于 2012-05-16 13:17:47
回答 1查看 888关注 0票数 2

我有一个用MathProg编写的线性规划。我的未知二进制变量是一个二维数组,定义为:

代码语言:javascript
复制
var x{i in V, l in L}, >=0, <=1;

其中V和L是整数的集合。

但是,有些变量的值是预先知道的,我想为求解器指定这一点,以减少ILP的大小。例如,我知道x4,l,当l=2为1时,对于任何其他值,l是零。目前,我将其指定为约束

代码语言:javascript
复制
s.t. initial4{i in V: i=4}:   sum{l in L}(l*x[i,l]) = 2;

我想知道这是否是预先指定未知数子集的有效方法。

理想情况下,我希望将这些信息与数据部分一起放在单独的文件中,而不是在模型文件中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-16 15:57:10

为每个变量创建一个上限和下限:

代码语言:javascript
复制
var x{i in index_set}, >=x_L[i], <=x_U[i];

调整已知值的下界和上界。

下面是一个MathProg片段,将x[2]修正为零:

代码语言:javascript
复制
set index_set;

param x_L{index_set};
param x_U{index_set};

var x{i in index_set}, >=x_L[i], <=x_U[i];

s.t.

dummy:
  sum{i in index_set} x[i] = 2;

solve;

display x;

data;

set index_set := 1, 2, 3;

param x_L default 0;
param x_U default 1 :=
2 0;

end;

从(过滤的)输出可以清楚地看出,预处理器足够聪明,可以将x[2]修正为0:

代码语言:javascript
复制
glpsol --math test.mod 

OPTIMAL SOLUTION FOUND BY LP PREPROCESSOR

x[1].val = 1
x[2].val = 0
x[3].val = 1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10619389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档