У меня есть следующая очень простая задача линейного программирования, которую нужно решить в 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
Проблема допускает решение.
Когда я реализую этот LP с помощью linprogr
, он находит решение,
Когда я внедряю этот LP с помощью решателя Gurobi, он говорит мне, что проблема невозможна.
Что я делаю не так?Вот мой код.
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 работает отлично.Whta