how to write series of multiple non-linear constraints for optimization using fmincon in MATLAB?

조회 수: 17 (최근 30일)
Hi, I have serios of multiple non-linear constraints and i am stuck how to write them in MATLAB, please help me out how to write the overall sum for n values. I have attached the problem below.
constraints.png
e.g. if phi and tau are the optimal variables which are x(1) and x (2) and the value of beta = 5,
Rn is the sumrate of main code and Rn' is the sumrate threshold value (10*1000) ,
function [c,ceq]=constraints(x)
c(1)=?
c(2)=?
c(3)=?
c(4)=sumrate(x)-10*1000
ceq=[];
end
how to erite the other constraints?
thank you in advance
  댓글 수: 3
Maheen Fazal
Maheen Fazal 2019년 9월 17일
Hi sir, here is my objective function
obj.png
shall i use linsolve instead of fmincon?

댓글을 달려면 로그인하십시오.

채택된 답변

xi
xi 2019년 9월 17일
편집: xi 2019년 9월 17일
You have 2n parameters, named X1,X2...Xn(for phi) and Xn+1...X2n (for tau).
You need to write the constraints in the vectorized format of Ax-b<0, where A is a matrix, b is a vector. The #rows of A as well as the length of b is determined by how many contraints you have, and the #columns is 2n (number of parameters).
In your case, the first three sets of constraints are linear constraints (total of 1+1+2n=2n+2). Your A matrix should have 2n+2 rows:
A(1,:)= [ones(1,n),zeros(1,n)];
A(2,:)= [zeros(1,n),ones(1,n)];
A=[A;-eye(2*n)];
b=[(1-beta);beta;zeros(2*n,1)]
  댓글 수: 10
xi
xi 2019년 10월 3일
I don't see anything wrong. Just use the compact version. The way I wrote separately for A(1,:) and A(2,:) is just to help explain. Note that, 2 rows mean 2-constraint equations, not 2-parameters. It should also work unless A was already defined and you are likely to get the dimension mismatch error,
Maheen Fazal
Maheen Fazal 2019년 10월 4일
Yes you are right, i have two parameters and for both parameters there are two separate equations.
constraintss.png
so for that i wrote linear inequality constraints like this as mentioned below, but still not getting the proper graph.
A=[ones(1,n),zeros(1,n);zeros(1,n),ones(1,n)]
b=[(1-B);B;];

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile 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!

Translated by