Linear Programming Code Not Working

11 ビュー (過去 30 日間)
Richard McDonough
Richard McDonough 2018 年 12 月 14 日
コメント済み: Walter Roberson 2018 年 12 月 22 日
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 件のコメント
Walter Roberson
Walter Roberson 2018 年 12 月 20 日
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 2018 年 12 月 22 日
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.

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

回答 (1 件)

Alan Weiss
Alan Weiss 2018 年 12 月 14 日
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 件のコメント
John D'Errico
John D'Errico 2018 年 12 月 20 日
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.

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

カテゴリ

Help Center および File ExchangeSolver Outputs and Iterative Display についてさらに検索

タグ

製品


リリース

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by