Research Article
Solving the Set Packing Problem via a Maximum Weighted Independent Set Heuristic
(1) | Initialize wcnfg array according to WCC_Rule1; | (2) | initialize the dynmc_w of each edge assigned as 1; | (3) | initialize the score of each vertex assigned as the degree of the vertex; | (4) | initialize the candidate solution C greedily; | (5) | UB = (C); | (6) | C ⟵ C; | (7) | iter ⟵ 0; | (8) | while stop criterion is not satisfied do | (9) | while C covers all edges, then | (10) | UB = (C); | (11) | C ⟵ C; | (12) | ⟵ x with the greatest score in C, breaking ties in favor of the oldest one; | (13) | C ⟵ C\{}; | (14) | update wcnfg array according to WCC_Rule 2; | (15) | end while | (16) | ⟵ x with the greatest score in C and is not in tabu_list, breaking ties in favor of the oldest one; | (17) | C ⟵ C\{}; | (18) | update wcnfg array according to WCC_Rule 2; | (19) | clear tabu_list; | (20) | while C uncovers some edges do | (21) | ⟵ x with the greatest score not in C and wcnfg [x] = = 1, breaking ties in favor of the oldest one; | (22) | if (C) + () ≥ UB then break; | (23) | C ⟵ C∪{}; | (24) | update wcnfg array according to WCC_Rule3; | (25) | dynmc_w [e] ⟵ dynmc_w [e] + 1, for each uncovered edge by C; | (26) | update wcnfg array according to WCC_Rule4; | (27) | add into tabu_list; | (28) | end while | (29) | iter ⟵ iter + 1; | (30) | end while | (31) | return C; |
|