2024 年 41 巻 2 号 p. 2_80-2_95
数理最適化プログラムを書く機会とその裾野は,競技プログラミングのコンテストを通して近年格段に幅広くなっている.一方で,焼きなまし法やビームサーチといった頻出するアルゴリズムの枠組み(メタヒューリスティクス)は手法間での共通項に着目した抽象化があまりなされておらず,似たようなプログラムを一からコーディングするケースが多い.また,評価値の差分計算では,機械的に生成し得る内容の複雑なコードを,人間が手書きすることを強いられている.これらの問題を解決するため,いくつかの典型的なメタヒューリスティクスを適切に抽象化し,それらを利用する高速な数理最適化プログラムを最小限のコードで記述して,これをC++へ変換するドメイン特化言語(DSL)を設計し開発した.本論文では,DSLの設計,DSLでのプログラム記述について説明した後,所定の内容を記述するのに要する行数と実行時間について,C++で記述した場合と DSL で記述した場合とを比較し,その有効性を示す.さらに,実用的な場面での利用を想定した上での現状のDSLの問題点と,今後の拡張について述べる.