필터 지우기
필터 지우기

Is there a special Matlab function existing to check feasibility of a Point (to a Optimization Problem)

조회 수: 4 (최근 30일)
Hello, i have for example the following Problem
f1 = @(x) x(1)+x(2);
Aneq = [-1 0
0 -1
1 0
0 1];
bneq = [0; 0; 4; 3];
c = cell(1,1);
c{1} = @(x) (x(1)-2)^2 - 1 -x(2);
And i want to test if a specific Point is feasible, for example x = (0,0)?
Is there a better way existing than using infeas = infeasibility(constr,pt) for the nonlinear constraints and calculating Aneq*x=y and checking if y <= 0.

채택된 답변

Matt J
Matt J 2022년 8월 30일
편집: Matt J 2022년 8월 30일
If your problem is already in solver-based form (as is the case in your example), I wouldn't bother with infeasibility. I would just test the non-linear constraints directly:
function feas=testfeasible(x,c,Aneq,beq)
feas=all(Aneq*x<=bneq);
for i=1:numel(c)
feas=feas & all(c{i}(x)<=0);
end
end
This can obviously be generalized to include bounds and equality constraints, though equality constraints will need to be tested with a tolerance.
If the problem is in problem-based form, you can first convert to solver-based form using prob2struct and then proceed as above.

추가 답변 (1개)

John D'Errico
John D'Errico 2022년 8월 30일
Why should there be a better way?
That is, does your check completely answer the question, in a simple way, as efficiently as possible? Is there a reason why some other scheme would even apply?
A simple rule of computing: If you have a solution that works, is efficient, does everything you need, then spending time looking for ANOTHER solution is a waste of programming time. Instead, spend that energy in improving your code in ways that do improve it.

카테고리

Help CenterFile Exchange에서 Get Started with Optimization Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by