kbigwheelのプログラミング・ソフトウェア技術系ブログ

プログラミング・ソフトウェア技術系のことを書きます

NP困難の問題のアルゴリズムを考える

から始まる問題の解き方を考える。

まずは問題としてのモデル化から入る。

モデル化

問題のモデル化のセオリーがわからないため、NP困難な問題の中で一番有名な巡回セールスマン問題との違いをまとめることから始める。

  • 距離はない (あとでつけたい気もするが一旦なしで考える)
  • 点Aより後に点Bを通る必要がある、という制約
  • なるべくたどる点の数を少なくしたい

調べると、かなり近い(というかほぼまんま)の先行研究がいくつか見つかった。

特に 順序付き巡回セールスマン問題について - Qiita はやりたいことをほぼやっている。 ただ、モデルとして循環するような制約を除外しているようなので、循環を許容して点の通過回数2回以上を許容するような問題設定が必要になる。 たぶん、

  • Sequential Ordering Problem
  • TSP (Traveling Salesman Problem ) Order Constraint

などがクエリとして良さそう。

あと[難問]複雑な制約付きの巡回セールスマン問題(TSP)もしくはジョブショッ... - Yahoo!知恵袋の人が話題に出しているJSPの問題にも似ている。この人はセールスマンが複数いる場合の問題だけど、塗装の問題はセールスマンが1人のTSP+JSP複合問題と言えるかもしれない。

プリント基板の電気検査における数理計画法に基づくシステム最適化

そこで,カメラによるアライメント撮像を考慮 した最短検査経路を求める問題が,先行順序制約付き巡回セールスマン問題の中で も特に集荷配送巡回セールスマン問題として定式化が可能であることを示し,その 上で,小規模問題に対しては,数理計画ソルバーを用いて厳密解を求解可能である ことを示している。

お、これもかなり参考になりそう。そうか、順序制約はより一般的な用途だと集荷配送と近いのか。

先行順序付き合流可能運搬経路問題に対する局所探索法 (最適化手法の深化と広がり)

これもと期待問題にかなり近いが、verhicleが複数であるのがちょっと違う。 ここは1台でいい。

いくつかキーワードとそれらしい論文は出てきているが、これと言ったものがない。というより、こちらに理解の土壌がない気もする。

おそらく、僕が求めているものは

がほぼそれなんじゃないかと思う。 前者の論文をちゃんと読めばそれで問題は解決するかも。

もろもろ考えると論文読んで実装するのはつらそう。 googleのツールとか見るに組み合わせ問題として問題を得として、その概要を学び、solverの適用方法を調べて適当なsolover(library)を使うのが最短距離っぽいとわかった。

2022/08/08

移動中勉強していたが、

という感じ。 vercelにpythonAPIをデプロイできることもあり、google製のortoolsを使うつもりでいる。