Originally posted by: Srihitha Reddy B
Hi,
Whatever the values of inputs may be, we are not getting the dvar z matrix values. We are getting all values as zero.
//parameters
int n=...; //no. of requested VMs
int m=...; //no. of servers
range VMs=1..n;
range servers=1..m;
float maxpower=...; //max power consumed by server
float idlepower=...;
float power[VMs]=...; //power consumption of VMs
float currentpower[servers]=...; //current power consumption of servers
int x[VMs][servers]=...;
int e[servers]=...;
int y[servers]=...;
//variables
//dvar boolean y[servers];
dvar boolean z[servers][servers][VMs];
//int count;
int m1=0;
float p;
int q[servers];
float pk=...;
execute
{
for(var j=1;j<=m;j++)
{
//if(e[j]==1) y[j]==0;
//else y[j]==1;
p=0;
q[j]=0;
for (var i=1;i<=n;i++)
{
if(x[i][j]==1)
{
p=p+power[i];
q[j]=q[j]+1;
}
writeln(q[j]);
}
if(p<maxpower && p>0)
{
m1=m1+1;
}
}
writeln("#non-idle servers=",m1);
//writeln("#VMs hosted on server i=",q[j]);
}
//expression
maximize sum(i in 1..m1) (idlepower*y[i]) - sum(i in 1..m1)sum(j in 1..m1)sum(k in 1..q[i]) (pk*z[i][j][k]); //Objective: Min used no. of servers
//constraints
subject to{
cons1:
forall(i,j,l in 1..m1) forall(k,k1 in 1..q[i])
z[i][j][k] + z[j][l][k1] <= 1;
cons2:
forall(i in 1..m1) forall(k in 1..q[i])
sum(j in 1..m1) (z[i][j][k]) <= 1;
cons3:
forall(j in servers )
sum(i in 1..m1)sum(k in 1..q[i]) (pk*z[i][j][k]) <= (maxpower - currentpower[j])*(1-y[j]);
cons4:
forall(i in 1..m1)
sum(j in 1..m1) sum(k in 1..q[i]) (z[i][j][k]) == q[i]*y[i];
cons5:
sum(i in 1..m1) y[i] <= m1 - ceil ((sum(j in 1..m1) currentpower[j])/maxpower);
}
output:
z = [[[0
0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]];
Also, we are getting 57 warnings as:
Decision variable "z[1][1][3]" has never been used by the engine.
Decision variable "z[1][1][4]" has never been used by the engine.
Decision variable "z[1][1][5]" has never been used by the engine.
....
Thanks in advance,
Srihitha.
#DecisionOptimization#OPLusingCPLEXOptimizer