web-dev-qa-db-ja.com

複数のセールスマンと一緒に巡回セールスマン?

複数のセールスマンがいる巡回セールスマン問題に効果的に還元された問題があります。最初の場所から訪問する都市のリストがあり、セールスマンの数が限られているすべての都市を訪問する必要があります。

私はヒューリスティックを考え出そうとしていて、誰かが手を差し伸べることができるかどうか疑問に思っていました。たとえば、20の都市に2人のセールスマンがいる場合、私が考えたアプローチは2ステップのアプローチです。まず、20の都市をランダムに10の都市に分割し、それぞれ2人のセールスマンを配置します。それぞれのツアーは、数回の反復で独立しているように見えます。その後、別のセールスマンに都市を交換または割り当てて、ツアーを見つけたいと思います。事実上、それはTSPであり、次に最小メイクスパンの問題になります。これに伴う問題は、それが遅すぎることであり、都市の交換または割り当ての適切な近隣生成が難しいことです。

誰かが私が上記を改善する方法についてアドバイスを与えることができますか?

編集:

各都市の地理的位置はわかっており、セールスマンは同じ場所で開始および終了します。目標は、最大移動時間を最小化して、この種の最小メイクスパン問題を作成することです。したがって、たとえば、salesman1が10時間、salesman2が20時間かかる場合、最大移動時間は20時間になります。

27
dustin ledezma

TSPは難しい問題です。マルチTSPはおそらくはるかに悪いです。このようなアドホックな方法で良い解決策を見つけることができるかどうかはわかりません。メタヒューリスティック手法を試しましたか?最初にクロスエントロピー法を使用してみます。問題に使用するのはそれほど難しくないはずです。それ以外の場合は、遺伝的アルゴリズム、蟻コロニー最適化、シミュレーテッドアニーリングを探してください...

Boer etal。の「クロスエントロピー法に関するチュートリアル」を参照してください。 TSPでCEメソッドを使用する方法を説明します。問題の簡単な適応は、セールスマンごとに異なるマトリックスを定義することかもしれません。

セールスマン間の都市の最適なパーティションのみを見つけたいと想定することもできます(そして、各セールスマンの最短ツアーを従来のTSP実装に委任します)。この場合、クロスエントロピー設定では、各都市XiがセールスマンAのツアーに参加する確率を考慮します:P(Xi in A)= pi。そして、p =(p1、... pn)の空間で作業します。 (多くのTSP問題を解決する必要があるため、うまく機能するかどうかはわかりません。)

9
ysdx

複数のセールスマンについて話し始めると、粒子群最適化について考え始めます。重力探索アルゴリズムを使用して、これで多くの成功を収めました。これが私がそのトピックをカバーしているのを見つけた(長い)論文です。 http://eprints.utm.my/11060/1/AmirAtapourAbarghoueiMFSKSM2010.pdf

3

私はそのような複雑な問題のためにアルゴリズムを書き始めませんでした(それが私の日常の仕事でない限り-最適化アルゴリズムを書くこと)。 http://www.optaplanner.org/ のような一般的なソリューションに目を向けてみませんか?問題を定義する必要があり、プログラムはトップ開発者が作成して最適化するのに何年もかかったアルゴリズムを使用します。

2
akostadinov

複数のTSPを従来のTSPに変換してみませんか?
これはよく知られた問題(複数のセールスマンTSPをTSPに変換すること)であり、いくつかの記事を見つけることができます。

ほとんどの変換では、基本的にデポ(セールスマンが開始および終了する場所)をいくつかのデポ(この場合は2)にコピーし、TSPをデポに2回戻すようにエッジウェイトを作成してから、 2つのデポを1つに変えます。

出来上がり!頂点を1回だけカバーする2分のコストツアーを取得しました。

2
Maryam

問題の説明を読むことについての私の最初の考えは、セールスマン問題の標準的なアプローチを使用することです(実際にコードを書く必要がなかったので、適切な問題を探します)。次に、結果を取得して半分に分割します。その場合、アルゴリズムは「半分」がどこにあるかを決定することである可能性があります-おそらくそれは都市の半分であるか、距離に基づいているか、あるいはいくつかの組み合わせです。または、結果で2つの都市間の最大距離を検索し、セールスマン#1の最後の都市とセールスマン#2の最初の都市の距離として選択します。もちろん、2人のセールスマンに限定されるわけではなく、x個に分割されます。しかし、全体的な考え方は、標準の1セールスマンTSPソリューションは、旅行グラフで「近くの」都市をすでに取得しているはずなので、個別のグループ化アルゴリズムを考え出す必要はありません...

とにかく、もっと良い解決策があると確信していますが、これは私にとって良い最初のアプローチのようです。

1
Chris Shaffer

この質問 (562904)を見てください-あなたのものと同じではありませんが、さらなる研究のための思考と参考のためのいくつかの良い食べ物があるはずです。

1
Bork Blatt

上記の回答で述べたように、 階層的クラスタリングソリューション は問題に対して非常にうまく機能します。ただし、パスが1つになるまでクラスターを解消し続けるのではなく、nになると停止します。ここで、nはセールスマンの数です。最初のクラスターがあまりにもバラバラである場合にクラスターが最初の宛先から等間隔になってしまう可能性を改善するために、いくつかの「偽の」ストップを追加することによって、おそらくそれを改善することができます。これは最適ではありませんが、このような問題の最適な解決策は得られません。問題を視覚化するアプリを作成し、ソリューションのさまざまなバリエーションをテストして、ヒューリスティックが十分に最適であるかどうかを確認します。

いずれにせよ、クラスターをランダム化しないとすると、クラスターの大部分が最適ではなくなります。

0
Case

遺伝的アルゴリズムを使ってあなたの質問を読み始めるだけで、私の頭に浮かびました。 2つの遺伝的アルゴリズムを同時に使用するだけで、1つは都市をセールスマンに割り当てる方法を解決でき、もう1つは各セールスマンのTSPを解決できます。

0
Ali1S232