1
$\begingroup$

I want to code a problem by CPLEX, in this problem I have variables and decision variables, how define them?

In this picture you can see the variables: enter image description here which we have:

enter image description here

I use these codes for variables:

//Variables

float Q[periods]; //Inventory of the blood product at the blood center in time period t after receiving the quantity produced in time period t 1, allocating the delivered quantity to hospitals and disposing of the expired quantity

float W[periods]; //Quantity of expired blood product at the blood center in time period t

float I[hospitals][periods]; //Inventory level of the blood product at hospital i in time period t after receiving the delivered quantity and usage and i > 0

float G[hospitals][periods]; //Shortage quantity at hospital i in time period t
   

//Decision Variable   
                     
dvar float+ p[periods]; //Quantity of the blood product produced at the blood center in time period t

dvar boolean y[nodes][vehicles][periods]; //A binary variable, if hospital i is served by vehicle k in time period t, y = 1 ; otherwise, y = 0

dvar float+ dq[hospitals][vehicles][periods]; //Quantity of the blood product delivered to hospital i by vehicle k in time period t

dvar float+ pq[hospitals][vehicles][periods]; //Quantity of the blood product picked up from hospital i by vehicle k in time period t

dvar boolean x[nodes][nodes][vehicles][periods]; //A binary variable, if the delivery vehicle k travels from node i to node j in time period t, x = 1 ; otherwise, x = 0

dvar float+ tq[nodes][nodes][vehicles][periods]; //Quantity of the blood product transported by vehicle k trough arc (i, j) in time period t

dvar float+ xq[nodes][nodes][vehicles][periods]; //An auxiliary variable for linearization

dvar boolean b[periods]; //An auxiliary binary variable for linearization

dvar float+ Z; //An auxiliary variable for linearization

Is it correct or not? what is the difference between decision variables and variables in coding in CPLEX?

$\endgroup$

1 Answer 1

4
$\begingroup$

as can be read in OPL CPLEX documentation, A decision variable is an unknown in an optimization problem.

For instance

dvar int x in 0..10;

is a decision variable

int a=3;

is some data definition whereas in

execute
{
 var b=2;
}

b is a scripting variable.

In your model, I see

float Q[periods]; //Inventory of the blood product at the blood center in time period t after receiving the quantity produced in time period t 1, allocating the delivered quantity to hospitals and disposing of the expired quantity

float W[periods]; //Quantity of expired blood product at the blood center in time period t

float I[hospitals][periods]; //Inventory level of the blood product at hospital i in time period t after receiving the delivered quantity and usage and i > 0

float G[hospitals][periods]; //Shortage quantity at hospital i in time period t

which are data.

But if you keep the model like this all the Q,W,I,G will be 0 so those should either be defined through a formula or in extension.

int Q[1..2]=[4,5];     // in extension
int Q2[i in 1..2]=i+3; // formula

assert forall(i in 1..2) Q[i]==Q2[i];
$\endgroup$
2
  • $\begingroup$ p in Q formulation is decision variable and CPLEX couldn't accept this, how could I define formulation? $\endgroup$
    – ramin
    Commented Feb 19, 2021 at 12:04
  • $\begingroup$ could you answer this question,@Alex Fleischer? $\endgroup$
    – ramin
    Commented Feb 19, 2021 at 18:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.