Hello, I have been working on an optimization problem which is related to Langrangian Duality methodand for its first step i need to adopt the optimization problem in CVX. I typed the code but the result seems to be pretty odd. I actually need the vector of lamda i’s as my output which i can replace in my problem. BUt i seem to be getting a final value only.
My CVX Matlab Code:
m = 32;
variable lamda(n,1) nonnegative
>= 0 specifies semidefinite constraint only when in sdp mode, which your program is not in. Therefore, you have been specifying element-wise nonnegativity.
So either use
If the problem is solved to optimality,
lamda will be an n by 1 vector of the argmax.
Actually I am looking for lamda to be a vector as an output not a single value. How can I get the lambda as a vector instead ?
CVX reports the optimal objective value as
cvx_optval, and the optimal argument value as
lamda, which is a vector because the declared variable
lamda is a vector. if you want something else, I don’t understand what that is.
I want to mazimize the sum of lamda_i’s for all Q_i matrix. Q_1 is a matrix, Q_2 is a matrix and so on. In my code i have not been able to get Q_i. I only have one Q , when i print the result. I want to implement the optimization problem above whose picture I have attached earlier and the latest code is attached here.
Why did you use an unnecessary for-loop? If there’s only one Q, then there must be only one lamda, according to your first picture. But you wrote lamda(1,n) instead of lamda.
Actually, My optimization problem is :
Your difficulty is with MATLAB, not CVX.
Q = NaN(n,n,n);
for k = 1:n
Q(:,:,k) = <fill this in>
Then the CVX code:
Sum_lamdaQ = 0;
Sum_lamdqaQ = Sum_lamndaQ + lamda(k)*Q(:,:,k);
eye(n) - Sum_lamdaQ >= 0