Can one solve optimization problem(in Matlab) with conditional constraint that depends on the decision variables?
이전 댓글 표시
Hello
My original problem is: Find maximal volume ellipsoid(or ellipse if
), it's size is limited by
constraints, n can be higher than 3
min 
s.t
and
for
where m is the number of nonlinear inequality constraints
My idea is to create a function that checks if the equation(which is the ellipsoid) has any solution with the inequality system, that is, intersects the subspace described by the inequalities. The function returns 0 if no intersection, and 1 if they intersect each other.
Then my problem would become this:
min 
s.t 
So the real question is: can you solve a problem like this in Matlab? You would set the intersects variable(with the mentioned function) to 0 or 1 for each
the solver tries, and accept it if the variable is 0 for the current
.
댓글 수: 16
Torsten
2019년 8월 8일
Why don't you just define r1,...,rn, x1,...,xn as decision variables, use "fmincon" and set all your constraints directly in function "nonlcon" of "fmincon" ?
Richárd Tóth
2019년 8월 8일
Torsten
2019년 8월 8일
And why do you think the new formulation will change anything ?
If the inequalities f_i(x1,...,x_n) <= 0 don't bound the x_i, your problem is indeed unbounded.
Richárd Tóth
2019년 8월 8일
Bruno Luong
2019년 8월 8일
편집: Bruno Luong
2019년 8월 8일
You might just make a mistake in your formulation, something such as ri>=0 or xi>=0 as constraints is missing?
Richárd Tóth
2019년 8월 8일
편집: Richárd Tóth
2019년 8월 8일
Bruno Luong
2019년 8월 8일
the constraint is that the ellipsoid with radiuses r_1,...,r_n has no intersection with any of the inequalities.
Sorry I don't understand what you meant by "ellipsoid has no intersection with inequalities".
In my world ellipsoid is a geometry object, inequalities is a logical algebraic expression. I don't know what is the intersection of the two.
Richárd Tóth
2019년 8월 8일
편집: Richárd Tóth
2019년 8월 8일
Bruno Luong
2019년 8월 9일
In that case I would say your formulation of nonlinear constraint function as read here
function [c,ceq] = nonlcon(rx)
n=2;
r=rx(1:n);
x=rx(n+1:end);
K1=x(1)+2;
K2=-x(1)-2;
K3=x(2)+2;
K4=-x(2)-2;
c=[K1,K2,K3,K4];
ceq=x(1)^2/r(1)^2 + x(2)^2/r(2)^2 - 1;
end
tell the minimizer will try to find ONE point X on the ellipsoid that satiesfies the 4 inequalities, meaning there is at least one point in the ellipsoid in the intersection of 4 half planes. This is NOT the same as there is no intersection with each of the half plane.
As implemented this constrain cannot force the ellipsoid to be bounded.
The constraint will not limit the side of the ellipsoid. So FMINCON gives you the cost function which goes to minus infinity. FMINCON is correct just your formulation does not reflect the problem you want to solve.
What I suspect is that you want something like this
c(x) <= 0 for ALL points X such that
x(1)^2/r(1)^2 + x(2)^2/r(2)^2 - 1 = 0.
Richárd Tóth
2019년 8월 9일
편집: Richárd Tóth
2019년 8월 9일
Bruno Luong
2019년 8월 9일
No, but you can use the Euler-Lagrange trick I show in this post to reduce the infinite number of points to test to a finite number of points.
You might also use Torsen fmincon within fmincon, but I won't fully trust fmincon (in your case it is OK since all object are semi-convex), and it is quite a hammer tool.
Richárd Tóth
2019년 8월 9일
편집: Richárd Tóth
2019년 8월 9일
Bruno Luong
2019년 8월 9일
편집: Bruno Luong
2019년 8월 9일
% Constraints that define the domaine where the ellipsoid must be in
% D = {x : A*x <= b}
% E include in D
A = [ 1 0;
-1 0;
0 1;
0 -1];
b = [2;
2;
2;
2];
r0 = zeros(2,1);
lb = zeros(2,1);
ub = inf(2,1);
areafun = @(r) -prod(r);
nlcon = @(r) testinsideD(r, A, b);
r = fmincon(areafun, r0, [], [], [], [], lb , ub, nlcon)
function [c,ceq] = testinsideD(r, A, b)
nc = size(A,1);
c = zeros(nc,1);
for i=1:nc
% point on ellipsoid that satisfies K-T condition
x0 = A(i,:).';
x = x0 ./ norm(x0./r);;
c(i) = A(i,:)*x - b(i);
end
ceq = [];
end
Edit: use the sign la lambda, code is simpler
Richárd Tóth
2019년 8월 9일
Bruno Luong
2019년 8월 9일
The loop iterates on plane constraints.
Well no that the whole advantage of such technique, I only need to check those which verifie the KT condition and there is only one of them per plane. As I told you the KT condition allows to reduce infinite number of points to finite (here is 1 per plane). No longer need to generate a bunch of points.
If you don't understand you need to read careful about theory of about KT condition.
Richárd Tóth
2019년 8월 9일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Surrogate Optimization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
