linprog cannot find solution

5 vues (au cours des 30 derniers jours)
Dany
Dany le 20 Sep 2020
Commenté : Dany le 23 Sep 2020
I am running a problem with constraints of equality, inequality and the limits of the variables. The formulation of the problem is correct, but the solver returns empty, or "no feasible solution found". How do I get linprog to find a solution?. Next I show the matrices and the result.
f = [ 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
A = [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 -2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 -2 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 ];
b = [ 0
0
0
0
0
0
0
0
0.3927
0.3927
0.3927
0.3927
0.3927
0.3927
0.3927
0.3927
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0];
Aeq= [
-1 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0.462 0 0.308 0.924 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 -1 -1 -1 0 0 0 0 0 1 0 0 -1.537 0.924 0.462 0.613 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 -1 -1 0 1 0 0 0 0 -0.924 -0.385 0 0.924 0.385 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 1 0 0 0 0 0 0 0 1 0 -0.462 0 0.77 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 1 1 0 0 0 0 0 0 1 -0.613 -0.924 0 2.461 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 -0.385 0 0 0.385 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 2.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.6667 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 -5 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 -2.5 0 2.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 0 -3.2258 0 0 3.2258 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 -5 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -2.0833 0 0 2.0833 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 -1 0 0 0 0 -1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 -1 0 0 -1 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 -1 0 -1 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 1 0 0 0 0 1 -1 0 0 0 0 -1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 1 0 -1 0 0 0 -1 0 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 -1 0 0 -1 0 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 1 0 -1 0 0 0 -1 0 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 1 0 0 -1 0 0 -1 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 1 -1 0 0 0 0 1 -1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 1 0 0 -1 0 0 1 0 0 -1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 0 0 0 -1 0 1 0 0 0 -1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3 3 0 0 0 0 1 -1 0 0 0 0 1 -1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3 0 3 0 0 0 1 0 -1 0 0 0 1 0 -1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3 0 0 3 0 0 1 0 0 -1 0 0 1 0 0 -1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3 0 3 0 0 0 1 0 -1 0 0 0 1 0 -1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3 0 0 3 0 0 1 0 0 -1 0 0 1 0 0 -1 ];
beq = [ 0.8000
2.4000
0.4000
1.6000
2.4000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0];
lb = [ -1 -0.8 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 -10 -10 -10 -10 -10 0 0 0 0 0 0 0 0 0 0 0 0 ];
ub = [1.0, 0.8, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.5, 3.6, 6.0, 2.4, 1.6, 2.4, 10.0, 10.0, 10.0, 10.0, 10.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0, 1000.0];
options=optimoptions('linprog','Display','off');
options.Display='off';
X = linprog(f,A,b,Aeq,beq,lb,ub,options);
X = []
  1 commentaire
John D'Errico
John D'Errico le 20 Sep 2020
Modifié(e) : John D'Errico le 20 Sep 2020
How do you know a solution exists? Said differently, why do you THINK a solution exists?

Connectez-vous pour commenter.

Réponses (1)

John D'Errico
John D'Errico le 20 Sep 2020
Modifié(e) : John D'Errico le 20 Sep 2020
While you claim a solution exists, initially, I sincerely wonder if it truly does. I may learn differently by the time I am done with this response...
>> size(Aeq)
ans =
30 31
>> rank(Aeq)
ans =
24
>> rank([Aeq,beq])
ans =
24
So your euality constraints are not even full rank, although beq does lie within the column space of Aeq.
On top of that, you have 32 inequality constraints, and possibly tight bounds on the problem. That makes me wonder.
Turning off the output from a solver is usually a bad idea. So first, let me run linprog, to see what it does
>> X = linprog(f,A,b,Aeq,beq,lb,ub)
Solver stopped prematurely.
Linprog stopped because it exceeded its allocated memory.
X =
[]
So linprog did not fail because no feasible solution was found, but because it had memory problems. Interesting. Let me try intlinprog, a newer solver.
>> X = intlinprog(f,[],A,b,Aeq,beq,lb,ub)
LP: Optimal objective value is 5.842744.
Optimal solution found.
No integer variables specified. Intlinprog solved the linear problem.
X =
0.12495
0.083301
0.38257
2.2399e-14
0
0.085593
0.13267
0
1.5
0.55719
0
2.4
1.5321
1.9107
-0.04998
-0.04998
-0.04998
-0.076513
-0.04998
0.15303
0.053068
0.053068
0.053068
0
0.053068
0.076513
0.026534
0.026534
0.026534
0
0.026534
So a solution does exist after all. It does seem to satisfy the constraints. linprog has been around a while, but I would almost never turn optimization output off, at least not until I am sure there won't be anything useful I can learn from that display.
  1 commentaire
Dany
Dany le 23 Sep 2020
Dear John..!
Your responce was very helpful for me.
Thank you so much.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Get Started with Optimization Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by