| | Initialization: k: = 0, f = 0, o = 0; LB: = −∞, UB: = ∞; set an initial feasible solution , and algorithm stop condition ε = 0. |
| | Generate the initial solution by ant colony algorithm: |
| | Let = 0.7, index = 1, Q = 104, m = 20, NCmax = 30; |
| | Set : = ones (UBn − LBn + 1, n1 + n2)·(UBn − LBn + 1); |
| | for i: = 1 ⟶ m do |
| | Randomly obtained m solutions. |
| | end for |
| | Find local minimum solution fmin; |
| | Update and . |
| | while index < NCmax − 1 do |
| | for i: = 1 ⟶ m − 1 do |
| | Randomly obtained m − 1 new solutions. |
| | end for |
| | Add local minimum solution to the new solutions; |
| | Update fmin, and ; |
| | index = index + 1. |
| | end while |
| | Obtain the initial solution . |
| | Obtain upper bound by Benders decomposition: |
| | while UB − LB > ε do |
| | Solve the PD. |
| | if Infeasible then |
| | Exit. |
| | end if |
| | if Unbounded then |
| | Obtain an extreme ray ; |
| | let f = f + 1; |
| | let ; |
| | Add a feasibility cut 0 to PFM. |
| | end if |
| | if Bounded then |
| | Obtain an extreme ray ; |
| | let o = o + 1; |
| | let ; |
| | Add an optimality cut to PFM; |
| | Obtain a upper bound, UB: = Min{UB, }. |
| | end if |
| | Obtain feasible solution and lower bound by feasible adjustment rule: |
| | Let maxiter: = 25, = , = 1, = 0.9; |
| | Set UBFM: = ∞, and set the loop stop condition λ = 10 − 4; |
| | Solve PFM and obtain the solution (x∗, θ∗); |
| | Let x∗ = round(x∗), α1 = µα0; |
| | Update UBFM: = Min{UBFM, ||x∗ − x0||2}; |
| | for i: = 1 ⟶ maxiter − 1 do |
| | if ||xi + 1 − xi||2 > λ then |
| | Let xi = x∗; |
| | Solve PFM; |
| | Update the solution (x∗, θ∗); |
| | if ||xi + 1 − xi||2 < UBFM then |
| | Let UBFM: = ||xi + 1 − xi||2; |
| | x∗ = round (xi + 1); |
| | end if |
| | end if |
| | Update αi + 1: = µαi. |
| | end for |
| | Update the lower bound, LB: = Max{LB, c}; |
| | k: = k + 1; |
| | : = ; |
| | end while |
| | Return the optimum result |