Can someone suggest me convexifying the problem. The details code is given as below

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
1 Like

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.

1 Like