【问题标题】:Linear Programming feasible using linprog and unfeasible using Gurobi in Matlab线性规划在 Matlab 中使用 linprog 可行,使用 Gurobi 不可行
【发布时间】:2018-11-15 15:38:03
【问题描述】:

我有以下非常简单的线性规划问题要在 Matlab 中解决

clear

%The unknown
%x=[x1,...,x10];

%The constraints
%x2+x8=Phi12
%x3+x7=Phi21
%x5=infvalue;
%x10=infvalue;

%The known parameters 
Phi12=-3.3386;
Phi21=3.0722;
infvalue=50;

sizex=10; %size of the unknown

问题承认解决方案。

当我使用linprogr 实现此 LP 时,它会找到解决方案。

当我使用 Gurobi 求解器实现这个 LP 时,它告诉我这个问题是不可行的。

我做错了什么?这是我的代码。

beq=[Phi12; Phi21; infvalue; infvalue];

rAeq=[ 1 1 ...
       2 2 ...
       3 ...
       4]; 

cAeq=[ 2 8 ...
       3 7 ...
       5 10]; 

fillAeq=[1 1 ...
         1 1 ...
         ones(1,2)];

Aeq=sparse(rAeq, cAeq,fillAeq, size(beq,1),sizex); 
Aeqfull=full(Aeq);

%linprogr
f=zeros(sizex,1);
xlinprog = linprog(f,[],[],Aeqfull,beq);

%Gurobi
clear model;
model.A=Aeq;
model.rhs=beq; 
model.sense=repmat('=', size(Aeq,1),1);
model.obj=f;
resultgurobi=gurobi(model); 

在我试图了解发生了什么的过程中:如果我用任何 值代替 -3.3386,那么 Gurobi 就可以完美运行。么么哒

【问题讨论】:

    标签: matlab linear-programming gurobi


    【解决方案1】:

    在 Matlab 的 linprog 中,它默认为您的变量 x 保存 -inf = 0。因此,您需要将变量的下限设置为 -信息:

    model.lb = -inf * ones(sizex, 1);
    

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多