MATLAB Answers

Translated by

このページのコンテンツは英語から自動翻訳されています。自動翻訳をオフにする場合は「<a class="turn_off_mt" href="#">ここ</a>」をクリックしてください。

0

Algorithm parameter of solve ignored

Jon Bebeau さんによって質問されました 2019 年 3 月 5 日
最新アクティビティ Jon Bebeau さんによって コメントされました 2019 年 3 月 5 日
Using Problem-based linear solver linprog. Trying to pass Algorithm interior-point. Algorithm used is dual-simplex.
x1 = optimvar('x1'); %
x2 = optimvar('x2'); %
x3 = optimvar('x3'); %
x4 = optimvar('x4'); %
x5 = optimvar('x5'); %
prob = optimproblem('Objective',10*x1 + 2*x2 + 4*x3 + 8*x4 - x5,'ObjectiveSense','min');
options = optimoptions('linprog','Algorithm','interior-point');
% Constraints
prob.Constraints.cons1 = x1 + 4*x2 - x3 >= 16;
prob.Constraints.cons2 = 2*x1 + x2 + x3 >= 4;
prob.Constraints.cons3 = 3*x1 + x4 + x5 >= 8;
prob.Constraints.cons4 = x1 + 2*x4 - x5 >= 20;
prob.Constraints.cons5 = x1 >= 0;
prob.Constraints.cons6 = x2 >= 0;
prob.Constraints.cons7 = x3 >= 0;
prob.Constraints.cons8 = x4 >= 0;
prob.Constraints.cons9 = x5 >= 0;
prob.optimoptions(options);
problem = prob2struct(prob);
[sol, fval, exitflag, output] = solve(prob)
Optimal solution found.
sol =
x1: 0
x2: 4.0000
x3: 0
x4: 10.0000
x5: 0
fval = 88
exitflag = OptimalSolution
output =
iterations: 7
constrviolation: 3.5527e-15
message: 'Optimal solution found.'
algorithm: 'dual-simplex'
firstorderopt: 1.4211e-14
solver: 'linprog'

  0 件のコメント

サインイン to comment.

製品


リリース

R2017b

2 件の回答

回答者: Alan Weiss
2019 年 3 月 5 日
 採用された回答

You are passing the options incorrectly. See this example on the solve function reference page.
Alan Weiss
MATLAB mathematical toolbox documentation

  0 件のコメント

サインイン to comment.


回答者: Jon Bebeau 2019 年 3 月 5 日

Alan, I tried all that... Using the example in the documentation: I get an Error:
options = optimoptions('intlinprog','Display','off');
problem = prob2struct(prob);
sol = solve(prob,'Options',options)
I get an Error:
Error using optim.problemdef.OptimizationProblem/solve
Options is not a valid solver. Use 'linprog' or 'intlinprog' instead.
In my output the above error, both lines, are in red but MATLAB won't cut and paste the error message.

  4 件のコメント

Alan Weiss
2019 年 3 月 5 日
You are undoubtedly using R2017b. The syntax for passing options to solve changed in R2018a. You should use
sol = solve(prob,options)
and remove the statement prob.optimoptions(options);.
I am a little confuse why you have a prob2struct call, but that is not directly relevant.
Alan Weiss
MATLAB mathematical toolbox documentation
Jon Bebeau 2019 年 3 月 5 日
Alan, The prob2struct is left over from my many, many attempts to find a solution. You are right using the solve function the prob2struct call is superfluous.
Steve Lord has already commented with the proper syntax for R2017b and this is the version I have.
Jon Bebeau 2019 年 3 月 5 日
Steve, I am using R2017b. Your suggestion fixed the problem. THANKS.

サインイン to comment.



Translated by