$C_max $is the max processing time of all machines,i want to make every machine as average as possiable
Have you read the CVX Users’ Guide? That is a fairly straightforward Binary Linear Programming problem to enter in CVX.
cvx_begin
expression T(5,1);
variable x(5,10) binary;
expression x_tmp(10,1);
minimize(max(T))
subject to
for i=1:5
for j=1:10
T(i)=T(i)+x(i,j)*charging_time(j);
end
end
T_max=max(T);
T>=0;
for i=1:5
end
for i=1:10
x_tmp(i)=0;
for j=1:5
x_tmp(i)=x_tmp(i)+x(j,i);
end
end
x_tmp==1;
cvx_end
this is my code,but result is terriable
Expressions have the value that hey have when they are used in the code. Expressions have value zero by default before anything is assigned to them. So your objective is always zero, and CVX/;solver can choose any feasible values they “want” for the variables. So you should move the minimize statement to after T
as been assigned.
Much of your code can be vectorized. For instance, sum(x,2) == 1
can be used instead of the double for loop with x_tmp
, which is unnecessary. From the image, it looks like you can have code such as x.*P <= Cmax
, with P having the same dimensions as x
, and not use any for loops.
Thank you !!! I have soloved it .WOW