Linear Programming Code Not Working

1 visualización (últimos 30 días)
Richard McDonough
Richard McDonough el 14 de Dic. de 2018
Comentada: Walter Roberson el 22 de Dic. de 2018
A problem which I am working on is shown below.
At this point in time, I have been attempting to solve the problem using the linprog command. I have written out to the best of my ability what I believe Aeq, beq, A, b, and c are, but I am getting an undesireable output. The output states:
Exiting: One or more of the residuals, duality gap, or total relative error has grown 100000 times greater than its minimum value so far:
the primal appears to be infeasible (and the dual unbounded).
(The dual residual < OptimalityTolerance=1.00e-08.)
Any help on fixing this issue would be greatly appreciated. I am not entirely sure that my matrices are all correct, but I believe they are.
xlp = linprog(c, A, b, Aeq, beq, lb, ub);
  5 comentarios
Walter Roberson
Walter Roberson el 20 de Dic. de 2018
You can tell your TA or professor that you believe that you may have been copied. Let them handle the situation.
Walter Roberson
Walter Roberson el 22 de Dic. de 2018
Richard:
Mathworks Answers is not a private consulting service. The "price" we volunteers charge is that if a volunteer has given a meaningful contribution towards solving the Question, then unless the Question violates policy, then the Question has to stay open so that everyone can learn from the Question and response. No private benefit for the volunteer answers.
If other people are copying your material then you can report that to your TA or professor or your university Office of Academic Integrity.

Iniciar sesión para comentar.

Respuestas (1)

Alan Weiss
Alan Weiss el 14 de Dic. de 2018
I believe that this problem would be much easier to formulate using the problem-based approach rather than the solver-based approach you chose.
But to comment on the problem as you set it up. Many rows in your A matrix have only one entry. You should not have any such rows; they represent bounds, and you should not have them in the A matrix as well.
I am not sure what your control variables represent, so cannot comment further on your setup.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
  1 comentario
John D'Errico
John D'Errico el 20 de Dic. de 2018
Just to expand on Alan's answer, if we eliminate the redundant constraints, we would recognize that the first 8 unknowns MUST lie between 0 and 10. The second set of 8 unknowns must lie between -5 and 5.
But not only that, since the rest of the constraints actually form cumulative sums of unknowns 9 through 16, and since those cumulative sums are more tightly constrained that the original bounds, we see a set of bounds that looks like:
lb = [zeros(8,1); 0.2; -5*ones(7,1)];
ub = [10*ones(8,1); 0.8; 5*ones(7,1)];
The difference is because that first member of the cumulative sum is now severely limited. So A becomes fairly simple now.
A = [0 0 0 0 0 0 0 0 1 1 0 0 0 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 1 1 1 1 0 0 0 0;
0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0;
0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0;
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0;
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1;
0 0 0 0 0 0 0 0 -1 -1 0 0 0 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 -1 -1 -1 -1 0 0 0 0;
0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 0 0 0;
0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 0 0;
0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 0;
0 0 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1];
b = [repmat(0.8,7,1);repmat(0.2,7,1)];
c = [4 3 2 3 7 6 5 4 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8]';
[X,FVAL,EXITFLAG] = linprog(c,A,b,Aeq,beq,lb,ub)
No feasible solution found.
Linprog stopped because no point satisfies the constraints.
X =
[]
FVAL =
[]
EXITFLAG =
-2
I'd bet you can show that the equality constraints are inconsistent with that set of bounds and linear inequalities.

Iniciar sesión para comentar.

Categorías

Más información sobre Solver Outputs and Iterative Display en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by