Originally posted by: SaqibIlyas
OK, my problem belongs to the latter class of problems. Let me try to describe it in terms of all the decision variables. I'd appreciate if you could suggest what would be the best way to improve the problem formulation to make it amenable to efficient optimal solution.
We have l items, m locations and n intervals. Each item must be assigned to one location at every interval. An item may be assigned to different locations at different intervals. The objective is to minimize the cumulative cost over all intervals and all locations at a given interval. The cost has the following factors:
1- Some idling cost. Cost that would be incurred if a location is "on" even if it is not handling any item.
2- Some utilization cost. Cost that is linearly depended on the workload of the items.
3- Some turn on and turn off costs. If a location was off at interval i-1 and it is on at interval i, we will incur some cost to turn it on. A turn off cost is also incurred vice versa.
So, I have the following decision variables:
1- x_i_j_k which is 1 if item i is mapped to location j at interval k, 0 otherwise.
2- p_j_k which is 1 if location j is on at interval k, 0 otherwise.
3- b_j_k which is 1 if location j is turned on at interval k, 0 otherwise.
4- s_j_k which is 1 if location k is turned off at interval k, 0 otherwise.
Some given parameters:
1- r_j_k: the unit cost at location j at interval k
2- w_i_k: the amount of workload presented by item i at interval k
3- c_j: the workload capacity of location j
So, the total cost is:
sum_i ( sum_j (sum_k (x_i_j_k * w_i_k * r_j_k))) + sum_j(c_j*sum_k (p_j_k * r_j_k)) + sum_k(sum_j(c_j*b_j_k*r_j_k)) + sum_k(sum_j(c_j*s_j_k*r_j_k))
where the first term indicates cost of handling workload, the second term indicate the idling cost, the third one is the cost due to turning location on and the last term is the overhead due to turning a location off.
The constraints are:
x_i_j_k, p_j_k, b_j_k, s_j_k are binary
sum_i(x_i_j_k*w_i_k) <= c_j for all j, for all k
sum_j(x_i_j_k) = 1, for all i, for all k
b_j_k >= p_j_k - p_j_(k-1)
s_j_k >= p_j_(k-1) - p_j_k
b_i_0 = p_i_0
s_i_0 = 0
p_j_k >= x_i_j_k
The second constraint is the location capacity constraint. The third one ensures that each item is completely handled at each interval. The fourth and fifth constraints ensure that a turn on/turn off is recorded if a location gets turned on/off at interval k, while it was off/on at interval k-1. We assume that each location is initially off, so a turn on cost is incurred if a location is on during the first (0th) interval. No turn off cost is needed if a location is off during the 0th interval, because all locations were off to begin with. Lastly, a location should be indicated on during an interval if at least one item is mapped to it during that interval.
Do you see a room for improvement in this model? Pointers would be helpful.
Thanks and best regards
#CPLEXOptimizers#DecisionOptimization