Originally posted by: Makak
Hello,
I have the following problem with OPL:
"Decision variable (or expression) "x" not allowed"
Code:
|
int V = ...; int R = ...; int S = ...;
range v = 1..V; range r = 1..R; range items = 1..R*V; range servers = 1..S; float p[items] = ...; int b[items] = ...; int d[items] = ...; int sb[servers] = ...;
dvar boolean x[items][servers]; dexpr int t[items] = (sum (m in servers) x[ij][m] >= 1) ? 0 :1;
maximize sum(ij in items)sum(m in servers) x[ij][m]*p[ij];
subject to{
forall(m in servers) sum (ij in items) (x[ij][m]*p[ij]*b[ij] + t[ij])<= sb[m];
forall(m in servers) sum (ij in items) x[ij][m] <= 1;
}
|
I have to create a new variable depending on decision variable "x":
t[items] = (sum (m in servers) x[ij][m] >= 1) ? 0 :1;
I've tried to do it in several ways:
1) like in the code above:
dexpr int t[items] = (sum (m in servers) x[ij][m] >= 1) ? 0 :1;
Error: "Decision variable (or expression) "x" not allowed"
2) declaration: dvar boolean t[items];
and in the constraints:
t[ij in items] == (sum (m in servers) x[ij][m] >= 1) ? 0 :1;
Error: "Decision variable (or expression) "t" not allowed"
Could anyone help me?
Thanks in advance.
#CPLEXOptimizers#DecisionOptimization