Solution Approach
4.4 Solution Approach
As explained above, the Integer Linear Programming model for MP has an exponential number of variables, and although only a small part of the variables are considered explicitly thanks to the column generation approach via the solution of problem SP, the model is computationally too expensive to solve to optimality for real world instances. Accordingly, after having solved the continuous relaxation C(MP), if the solution obtained is not integer, we use a fixing algorithm in order to fix some variables to an integer value, solve
Organization Code:
UMD and UOB
European Commission
Classification:
Unclassidied
Sixth Framework Programme
the new continuous relaxation obtained, and so on, iterating until we obtain a feasible integer solution, as illustrated in detail next.
4.4.1 Column generation
To solve the C(MP) on the set of all feasible trains Q we use the following column generation algorithm.
The problem C(MP) is initially solved on a subset Q of all the feasible trains Q . The ʹ′ set Q is initialized by computing, in sequence, the best train to serve the available wagons, ʹ′ removing the associated wagons, adding the train to Q and iterating until all wagons are ʹ′ transported. Each of these trains can be found by solving a Mixed-Integer Linear Program
analogous to the one defined above for the SP. The C(MP) is solved on Q , by means of a general purpose Linear Programming ʹ′ solver (CPLEX 9.0 by ILOG) and the corresponding optimal dual variables * σ and τ * t are computed. The SP is then solved by means of a general purpose Integer Linear Programming
solver (CPLEX 9.0 by ILOG). If no path with positive reduced profit is found, the C(MP) has been solved to optimality and the algorithm stops. Otherwise, the train with maximum positive reduced profit, computed by the SP, is added as a variable to the MP and the process is iterated. In detail, the algorithm solving the continuous relaxation of the model MP to optimality works as follows:
European Commission UMD and UOB Sixth Framework Programme
Organization Code:
1. Compute a set of feasible paths to ship all the wagons, initialize Q with the corresponding variables; ʹ′
2. do
3. Solve the C(MP) for the reduced variable set Q, ʹ′
letting σ * and τ * t be the optimal dual variables;
4. Solve the SP associated with * σ * and τ
letting q =(,) p S be the optimal train computed;
5. if ( * π q − σ −
∑ ʹ′ tS
) then Q := Q ʹ′ ∪ {} q;
6. while ( * π q − σ −
tS ∈ τ t
end.
4.4.2 Fixing
The algorithm described in the previous section solves the continuous relaxation C(MP) of the problem MP. However, we are interested in obtaining an integer solution to the problem, within an acceptable computing time. Thus, we use column fixing techniques in order to obtain a good feasible solution for the MP by using the column generation algorithm. The basic idea works as follows: we solve the C(MP) to optimality, and fix all variables having value 1 to their optimal value. In addition, we also fix the least fractional variable (i.e. the fractional variable whose value is closest to an integer) to the closest integer value. We
Organization Code:
UMD and UOB
European Commission
Classification:
Unclassidied
Sixth Framework Programme
remove all wagons that are shipped by the fixed trains (variables), update the number of available trains, and consider the reduced problem. The reduced problem is then solved to optimality by means of the column generation approach and the process is iterated until a feasible integer solution is obtained. In detail, the algorithm works as follows:
begin
1. do
2. Solve the C(MP), letting * x be the optimal solution;
3. for q ∈ Q do ʹ′
4. if * x q =1 then fix * x q =1 ;
5. Fix the least fractional variable * x
q to the closest integer value;
6. Remove from * T all wagons t ∈ S such that x
q =( , ) pS was fixed to 1
during the current iteration;
7. Update the number k of trains still to be selected;
x 8. while ( * is not integer);
end.