How to solve this problem? Error using == Quadratic constraints not supported
조회 수: 6 (최근 30일)
이전 댓글 표시
Intho Nurshauma Syuhri
2020년 9월 17일
답변: Walter Roberson
2020년 9월 19일
Hi everyone
I have a optimazation problem using "optimproblem". The problem is constraint. The constraint I need is x*x + y*y ==1.
x = optimvar('x');
y = optimvar('y');
prob = optimproblem;
prob.Objective = (((x*((K*x)+(K*y)))+(y*((K*x)+(K*y)))) - ((2*F*x))+((2*F*y)));
prob.Constraints.cons1 = x*x + y*y == 1;
sol = solve(prob);
The error messages as follows
Error using ==
Quadratic constraints not supported.
error in ..... (Line 237)
prob.Constraints.cons1=x*x + y*y ==1;
could you help me to fix this problem?
Thanks! Intho
댓글 수: 0
채택된 답변
Abdolkarim Mohammadi
2020년 9월 17일
편집: Abdolkarim Mohammadi
2020년 9월 17일
QP = Quadradic Programming = Quadradic objective function and linear constraints.
QCQP = Quadratically Constrained Quadratic Programming = Quadradic objective function and quadradic constraints.
quadprog() solves QP problems, but you are defining a QCQP problem. QCQP can be solved using the combination of quadprog() and fmincon() as described in the following:
댓글 수: 0
추가 답변 (1개)
Walter Roberson
2020년 9월 19일
x*x + y*y == 1
Reduce the number of variables by replacing y with +/- sqrt(1-x^2) . Run twice, once with y being the positive root, and once with y being the negative root, and choose the best of the two.
If K and F are independent of x and y, then you can use calculus: differentiate with respect to x and solve for the zeros.
The roots for the + and - branch come out nearly exactly the same. Both of the branches have roots
(-F +/- sqrt(-F^2 + 2*K^2))/(2*K)
The + branch has root -1/sqrt(2) and the - branch has root +1/sqrt(2)
You would want to verify that these roots are indeed minima and not maxima.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Quadratic Programming and Cone Programming에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!