Originally posted by: skyskyhuanghuang
Hi,everyone:
I encountered a problem.How can I linearize my model? Because using cp; the calculation is very complicated.My model is as follows:
using CP;How can I make it linear?And do not use using CP;
int M=...;
float P=...;
float H[1..M][1..M]=...;
float B0=...;
float n0=...;
dvar int Yji[1..M][1..M] in 0..1 ;
execute
{
var p=cp.param;
p.LogPeriod=80000;
p.TimeLimit=300;
p.Workers=40;
p.searchType="Restart";
p.OptimalityTolerance=1;
}
maximize
B0*sum(i in 1..M)(
log(1+P*sum(j in 1..M:j!=i)(
H[j][i]*Yji[j][i]/ //fenzi
(n0+P*sum(n in 1..M:n!=j)(
sum(q in 1..M)H[n][i]*Yji[n][q]
)
)
)
)/log(2)
);How can I remove the continuously added log function to make it linear?And the molecules have decision variables, what can I do to linearize the objective function?
subject to
{
forall(i in 1..M)
{
Hangyueshu:
sum(j in 1..M)
Yji[i][j]<=1;
}
forall(i in 1..M)
{
Lieyueshu:
sum(j in 1..M)
Yji[j][i]<=1;
}
forall(i in 1..M)
Zishenyueshu:
Yji[i][i]==0;
forall(i in 1..M)
{
FDRLimiation:
sum(j in 1..M)
(Yji[i][j]+Yji[j][i])-Yji[i][i]<=2;
}
}
execute
{
writeln("Yji=",Yji);
writeln("Objective= ",cp.getObjValue());
}
main
{
var nbsol=0;
thisOplModel.generate();
cp.startNewSearch();
while(cp.next())
{
nbsol++;
writeln("solution ",nbsol);
thisOplModel.postProcess();
}
}
#DecisionOptimization#OPLusingCPLEXOptimizer