Originally posted by: Makak
Hello,
I have a problem with multiplying three decision variables in the OPL
Look at the fragment of my code:
|
int N = ...; int S = ...; range items = 1..N; range servers = 1..S; float p[items] = ...; float s[items] = ...; int b[items] = ...; int d[items] = ...; int sb[servers] = ...;
dvar float l; dvar boolean x[items][servers]; dvar float lx[items][servers]; dvar float part[items][servers];
maximize l;
subject to{
forall(s in servers) forall(i in items) { (x[i][s]==1) => (lx[i][s]==l); (x[i][s]==0) => (lx[i][s]==0);}
forall(s in servers) sum (i in items) part[i][s]*lx[i][s]*p[i]*d[i]*b[i] <=sb[s];
forall(i in items) sum (s in servers) part[i][s]==1;
forall(i in items) sum (s in servers) x[i][s]==1;
}
|
In the line:
sum (i in items) part[i][s]*lx[i][s]*p[i]*d[i]*b[i] <=sb[s];
I want to multiply three decision variables (float -part[i][s] , float- l, boolean -x[i][s]), but I get : CPLEX Error 5002: 'q1' is not convex.
I've solved the problem of multiplying a boolean and float by logical constraint (lx[i][s]), but I still don't know how to multiply it by one more float decision variable(part[i][s]).
If something is unclear, please ask.
#CPLEXOptimizers#DecisionOptimization