HEMO: Harness Self-Evolution for Multi-Objective Combinatorial Optimization
Organizations: School of Computing and Information Systems, Singapore Management University, Singapore · College of Computing and Data Science, Nanyang Technological University, Singapore · Huawei Noah's Ark Lab · TikTok Singapore ·
Abstract
Automatic operator design (AOD) has increasingly adopted large language models (LLMs) to generate problem-specific search and variation operators for multi-objective combinatorial optimization (MOCO). Yet most methods evolve the operators while leaving the process that discovers them fixed. This limits adaptation as new Pareto trade-offs and operator interactions change where and how the search should proceed. We introduce HEMO, which makes the AOD harness itself a self-evolving optimization target. HEMO maintains a persistent harness state and updates one module at a time, revising the logic that determines which experience to retrieve, which operators to improve, which parents to select, and how to formulate the orchestration of search steps. Downstream solution quality and runtime guide these updates, while a discounted UCB scheduler directs adaptation toward promising modules as their utility changes. A persistent memory filesystem preserves candidate outcomes and diagnostic feedback across harness states, enabling successive states to build on accumulated optimization experience. Experiments across eight MOCO tasks and two structurally distinct evolutionary backbones demonstrate strong performance against conventional evolutionary, neural, and LLM-based AOD baselines, together with effective transfer to related tasks. HEMO extends automatic operator design beyond evolving individual operators to improving the search process that discovers them.
Figures & tables
| Bi-TSP | Bi-CVRP | Bi-KP | ||||||||||||||||
| Method | ||||||||||||||||||
| HV | Time | HV | Time | HV | Time | HV | Time | HV | Time | HV | Time | HV | Time | HV | Time | HV | Time | |
| SEMO | 0.5878 | 29.411 | 0.4612 | 35.476 | 0.3674 | 42.621 | 0.4840 | 9.726 | 0.3380 | 8.991 | 0.2987 | 10.691 | 0.3543 | 14.528 | 0.3917 | 8.146 | 0.2912 | 16.284 |
| NSGA-II | 0.5600 | 1102.171 | 0.3860 | 1099.551 | 0.3120 | 985.188 | 0.6025 | 1178.418 | 0.5420 | 1162.623 | 0.5199 | 1530.646 | 0.3581 | 1045.565 | 0.4024 | 551.730 | 0.3207 | 529.589 |
| MOEA/D | 0.5874 | 136.718 | 0.4385 | 146.027 | 0.3696 | 183.499 | 0.5893 | – | 0.5288 | – | 0.5347 | – | 0.3541 | – | 0.4040 | – | 0.3285 | – |
| PFG-MOEA | 0.5906 | 74.886 | 0.4601 | 63.210 | 0.3847 | 86.956 | 0.5888 | 123.347 | 0.4527 | 225.457 | 0.3469 | 317.618 | 0.3562 | 68.912 | 0.4041 | 67.459 | 0.3250 | 67.129 |
| Tri-TSP | Bi-SPDP | Bi-MDKP | ||||||||||||||||
| Method | ||||||||||||||||||
| HV | Time | HV | Time | HV | Time | HV | Time | HV | Time | HV | Time | HV | Time | HV | Time | HV | Time | |
| SEMO | 0.4055 | 11.166 | 0.1880 | 22.008 | 0.1041 | 43.133 | 0.7510 | 1.973 | 0.8343 | 3.645 | 0.8461 | 7.005 | 0.2536 | 2.875 | 0.2460 | 2.994 | 0.4866 | 3.144 |
| NSGA-II | 0.4020 | 814.270 | 0.2050 | 1004.854 | 0.1310 | 1207.876 | 0.7531 | 568.591 | 0.8081 | 537.841 | 0.8137 | 563.270 | 0.2596 | 1050.822 | 0.2662 | 553.071 | 0.5469 | 558.297 |
| MOEA/D | 0.4098 | 489.636 | 0.2230 | 1104.641 | 0.1534 | 2577.410 | 0.7579 | 61.224 | 0.8219 | 107.852 | 0.8317 | 140.504 | 0.2589 | – | 0.2729 | – | 0.5774 | – |
| PFG-MOEA | 0.4520 | 265.914 | 0.2810 | 765.435 | 0.2125 | 963.652 | 0.7465 | 13.927 | 0.8029 | 31.840 | 0.8117 | 58.505 | 0.2535 | 76.271 | 0.2587 | 74.336 | 0.5420 | 70.115 |
| Expert | E2OC | HEMO | ||||
| Setting | HV | IGD | HV | IGD | HV | IGD |
| Traveling Salesman Problems | ||||||
| Bi-TSP 20 | 0.5476 | 0.0579 | 0.6174 | 0.0081 | 0.6103 | 0.0093 |
| Bi-TSP 50 | 0.3613 | 0.1330 | 0.4897 | 0.0437 | 0.4948 | 0.0215 |
| Bi-TSP 100 | 0.2835 | 0.1021 | 0.3631 | 0.0367 | 0.3763 | 0.0214 |
| Tri-TSP 20 | 0.3661 | 0.0660 | 0.4132 | 0.0206 | 0.4305 | 0.0160 |
| HV | IGD | |||
| Setting | PMOCO | HEMO -SEMO | PMOCO | HEMO -SEMO |
| Bi-TSP 20 | 0.6260 | 0.6269 | 0.005281 | 0.000781 |
| Bi-TSP 50 | 0.6350 | 0.6348 | 0.006773 | 0.001295 |
| Bi-TSP 100 | 0.6977 | 0.6853 | 0.004168 | 0.006003 |
| Bi-TSP 150 | 0.6958 | 0.7142 | 0.020435 | 0.003545 |
| Bi-TSP 200 | 0.7151 | 0.7276 | 0.019029 | 0.006109 |
| Bi-TSP20 | Tri-TSP20 | |||
| Variant | HV | IGD | HV | IGD |
| HEMO | 0.9583 | 0.0046 | 0.9330 | 0.0084 |
| w/o harness evolution | 0.6133 | 0.0364 | 0.5754 | 0.0462 |
| w/o discounted UCB | 0.8766 | 0.0097 | 0.8318 | 0.0153 |
| w/o global memory | 0.7879 | 0.0122 | 0.7942 | 0.0168 |
| w/o retrieved context | 0.6842 | 0.0176 | 0.6366 | 0.0286 |
| Bi-CVRP | |||||
| Model | Token (M) | Cost (\downarrow$ | Wall-clock (h) | HV | IGD |
| GPT-5-nano | 49.00 | 7.46 | 44.54 | 0.6173 | 0.0082 |
| GPT-4.1-nano | 29.80 | 3.82 | 13.95 | 0.5832 | 0.0355 |
Appendix figures & tables13 assets
Supplementary material from the paper’s appendix.
Appendix
| Problem | Size | Reference point | Ideal point |
| Bi-KP | 50 | ||
| 100 | |||
| 200 | |||
| Bi-MDKP | 50 | ||
| 100 | |||
| 200 |
| Family | Problem | Objectives | Final test instances |
| Knapsack | Bi-KP | two collected profits | |
| Knapsack | Bi-MDKP | two collected profits | |
| Routing | Bi-CVRP | total distance; longest route | |
| Routing | Bi-SPDP | total distance; required vehicle capacity | |
| TSP | Bi-TSP | two tour lengths | |
| TSP | Tri-TSP | three tour lengths |
| Problem | Design init. | Design steps | Test init. | Test steps |
| Bi-KP | 100 | 2,000 | 100 | 10,000 |
| Bi-MDKP | 100 | 2,000 | 100 | 10,000 |
| Bi-CVRP | 100 | 2,000 | 100 | 10,000 |
| Bi-SPDP | 100 | 2,000 | 100 | 20,000 |
| Bi-TSP | 100 | 2,000 | 100 | 20,000 |
| Tri-TSP | 100 | 2,000 | 100 | 20,000 |
| Task | Chromosome representation | Design targets in execution order |
| Bi-TSP | City permutation | tsp_oropt tsp_2opt tsp_3opt |
| Tri-TSP | City permutation | tsp_oropt tsp_2opt tsp_3opt |
| Bi-CVRP | Customer permutation (giant tour) | vrp_oropt vrp_swap vrp_2opt |
| Bi-SPDP | Signed node permutation | vrp_oropt vrp_swap vrp_2opt |
| Bi-KP | Binary item-selection vector | kp_bitflip kp_crossover kp_repair_mutation |
| Bi-MDKP | Binary item-selection vector | kp_bitflip kp_crossover kp_repair_mutation |
| Operator name | Operation and design scope |
| tsp_oropt | Relocate a contiguous tour segment by selecting its length, original location, and reinsertion position while preserving the order of nodes within the segment. The reference operator moves one to three consecutive nodes. |
| tsp_2opt | Reverse a contiguous tour segment to change its boundary connections and internal traversal direction. The design controls segment selection and reordering while preserving a valid city permutation. |
| tsp_3opt | Modify multiple tour segments through cut selection and reconnection. The reference operator reverses two segments defined by three cuts. |
| vrp_oropt | Relocate a contiguous customer or node segment, choosing which segment to move and where to insert it. The reference operators move one to three nodes. |
| vrp_swap | Exchange two customer or node positions to modify visit order while preserving node identifiers. The seed operator uses route-quality sampling for CVRP and swaps signed entries for SPDP. |
| vrp_2opt | Reverse a contiguous segment to modify route ordering and neighboring connections. The seed operator acts within one capacity-decoded route for CVRP and on the signed node permutation for SPDP. |
| Problem | Evolution pop. | Evolution gen. | Test pop. | Test gen. |
| Bi-KP | 50 | 15 | 200 | 200 |
| Bi-MDKP | 50 | 15 | 200 | 200 |
| Bi-CVRP | 30 | 15 | 200 | 100 |
| Bi-SPDP | 50 | 15 | 200 | 200 |
| Bi-TSP | 50 | 15 | 200 | 200 |
| Tri-TSP | 50 | 15 | 200 | 100 |
| Role | Memory field | Meaning and type |
| Retrieval scope | task_id | Task associated with the record ( str ), used to restrict retrieval to the current task or related scope. |
| family , representation | Problem family and solution representation ( Optional[str] ), used for matching related search experience. | |
| objective_dims | Objective dimensionalities represented by the record ( List[str] , List[int] ). | |
| timestamp | Record creation time ( float ), providing a weak recency preference during retrieval. | |
| Evaluation context | score | Observed candidate score vector ( Any , normally a numeric list), typically containing negative HV and per-instance runtime. |
| valid , error | Evaluation validity and failure information ( Optional[bool] , Optional[str] ). |
| SEMO | NSGA-II | ||||
| Family | Task | Design size | Instances | Design size | Instances |
| TSP | Bi-TSP | 20 cities | 10 | 20 cities | 10 |
| Tri-TSP | 20 cities | 10 | 20 cities | 10 | |
| Routing | Bi-CVRP | 50 customers | 10 | 50 customers | 10 |
| Bi-SPDP | 20 nodes incl. depot | 20 | 20 nodes incl. depot | 20 | |
| Knapsack | Bi-KP | 50 items | 10 | 50 items | 10 |
| Overall | ||||||||
| Method | HV | Time | HV | Time | HV | Time | Mean HV | Speedup |
| NSGA-II + 2-opt | 0.6241 | 257.486 | 0.4607 | 249.499 | 0.3549 | 251.704 | 0.4799 | 1.531 |
| NSGA-II + 3-opt | 0.6152 | 260.655 | 0.4607 | 253.314 | 0.3549 | 249.597 | 0.4769 | 1.521 |
| NSGA-II + Or-opt | 0.6150 | 266.671 | 0.3647 | 262.096 | 0.2832 | 272.126 | 0.4210 | 1.450 |
| NSGA-II + 2opt-3opt-oropt | 0.5469 | 257.407 | 0.3612 | 252.412 | 0.2836 | 244.447 | 0.3972 | 1.540 |
| NSGA-II + 3opt-2opt-oropt | 0.5474 | 175.315 | 0.3605 | 166.707 | 0.2782 | 205.978 | 0.3954 | 2.120 |
| Bi-FJSP | Tri-FJSP | |||||||||||
| ID | OOD | All | ID | OOD | All | |||||||
| Method | HV | Time | HV | Time | HV | Time | HV | Time | HV | Time | HV | Time |
| SEMO | 0.7430 | 1.482 | 0.7789 | 14.672 | 0.7610 | 8.077 | 0.5434 | 5.014 | 0.3210 | 12.117 | 0.4322 | 8.566 |
| NSGA-II | 0.7166 | 1339.077 | 0.5915 | 1295.714 | 0.6540 | 1317.396 | 0.3066 | 1293.551 | 0.1784 | 1183.967 | 0.2425 | 1238.759 |
| MOEA/D | 0.8738 | – | 0.7801 | – | 0.8269 | – | 0.5516 | – | 0.3293 | – | 0.4404 | – |
| PFG-MOEA | 0.8565 | 287.431 | 0.7535 | 401.254 | 0.8050 | 344.343 | 0.5447 | 589.162 | 0.3218 | 879.100 | 0.4333 | 734.131 |
| Expert | E2OC | HEMO | |||||||
| Setting | HV | IGD | Time | HV | IGD | Time | HV | IGD | Time |
| Bi-CVRP 20 | 0.6001 | 0.011265 | 173.681 | 0.5953 | 0.012716 | 139.499 | 0.6011 | 0.011267 | 119.408 |
| Bi-CVRP 50 | 0.5232 | 0.031433 | 243.641 | 0.5179 | 0.039418 | 279.866 | 0.5467 | 0.012060 | 292.293 |
| Bi-CVRP 100 | 0.4579 | 0.095994 | 235.605 | 0.5138 | 0.043941 | 1651.226 | 0.5457 | 0.014028 | 1361.897 |
| Bi-SPDP 20 | 0.7447 | 0.036631 | 154.625 | 0.7671 | 0.012824 | 158.575 | 0.7670 | 0.011057 | 162.802 |
| Bi-SPDP 50 | 0.7951 | 0.041620 | 165.747 | 0.8185 | 0.020679 | 163.603 | 0.8268 | 0.015460 | 167.782 |
Automated Heuristic Design
Automated heuristic design creates or adapts problem-solving rules for optimization, planning, scheduling, and related search tasks.
See all 85 papers