MATLAB Answers

Linear programming code not showing the solution

37 ビュー (過去 30 日間)
Hmm!
Hmm! 2021 年 2 月 27 日
コメント済み: Hmm! 2021 年 2 月 28 日
I extracted the following code from an online pdf that solves basic feasible solution of linear programming problems.
function vert = feassol(A, b)
% Basic feasible solutions vert to the system of constraints
% Ax = b, x >= 0.
% They are stored in columns of the matrix vert.
[m, n] = size(A);
warning off
b = b(:);
vert = [];
if (n >= m)
t = nchoosek(1:n,m);
nv = nchoosek(n,m);
for i = 1:nv
y = zeros(n,1);
x = A(:,t(i,:))\b;
if all(x >= 0 & (x ~= inf & x ~= -inf))
y(t (i, :)) = x;
end
end
else
error('Nuber of equations is greater than th neumber of variables.')
end
if ~isempty(vert)
vert = delcols(vert);
else
vert = [];
end
end
To test the code, the author used the system
A = [1 1 1 0; 0 1 0 1];
b = [6; 3];
and obtain the results
vert = feassol(A, b)
vert =
0 0 3 6
0 3 3 0
6 3 0 0
3 0 0 3
But whenever I run the code, I get
>> vert = feassol(A,b)
vert =
[]
What am I not doing right with the code? Any help will be much appreciated. Thanks in advance!

回答 (2 件)

Walter Roberson
Walter Roberson 2021 年 2 月 27 日
Where do you assign something nonempty to vert?
Why do you calculate y since you never use it?
  9 件のコメント
Hmm!
Hmm! 2021 年 2 月 28 日
Sorry. It is another written function that I had to called. I have just figure it out.

サインインしてコメントする。


Matt J
Matt J 2021 年 2 月 27 日
編集済み: Matt J 2021 年 2 月 27 日
As long as your feasible set is bounded, you can use this FEX submission instead,
A = [1 1 1 0; 0 1 0 1];
b = [6; 3];
[args{1:4}]=addBounds([],[],A,b,[0;0;0;0]);
vert=lcon2vert(args{:}).'
for which I get the result,
vert =
6.0000 3.0000 -0.0000 -0.0000
0.0000 3.0000 3.0000 -0.0000
-0.0000 0 3.0000 6.0000
3.0000 0 0 3.0000

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by