load('data_trial.mat');
n=numel(data(:,1));
L=data(1:4);
I=data(4:8);
k1=1e-7, k2=2e-7;
cvx_begin
variable X(4);
%variable is_nonzero(X(4));
disp(X)
for i=1:n
cost(i)= k1*X(i)^2;
loss(i)=k2/(X(i)^2);
Z(i)= k3*log(0.558*0.526/X(i));
VD(i)= I(i)*Z(i)
V(i)=(V-VD(i))/V
end
minimize((sum(cost))+sum(loss))
subject to
V<=0.1;
X>0;
cvx_end
Can someone suggest me convexifying the problem. The details code is given as below
cost and loss need to be declared as expression (holder). loss can be handled using pow_p
log(a/x) can be rewritten as -log(x/a).
Presuming all the input data is nonnegative, that leaves V <= 0.1 going in the wrong direction to be convex. However if the combination of input data is such that the V comes out with the opposite sign multiplying the log term, it would be convex and could be entered into CVX.