「その1:整数制約を緩和」では、20分程度の計算を4分程度に短縮することができた。「その2」では、「その1」とは異なるアプローチとなる「ラグランジュ緩和」を用いる方法を検討する。ベンチマークする例題は「その1」と同じである。
結論から言うと、「ラグランジュ緩和」では20分程度の計算を10分程度に短縮することができたが、「ラグランジュ緩和」からの思いつきで試みた「極めて簡単な方法」により、20分程度の計算をなんと1分程度に短縮することができた。これは、「その1」の成果をはるかに上回るものである。
「極めて簡単な方法」とは、部分巡回ルートが発生した場合に、「部分巡回禁止制約(部分巡回ルート上で使用できる枝数<=部分巡回ルートの全枝数−1)」ではなく、「部分巡回強制接続制約」を使用し、かつ、「部分巡回強制接続制約」を「部分巡回ルートから突き出した枝のうち通過する本数>=1」ではなく、「部分巡回ルートから突き出した枝のうち通過する本数>=2」とすることである
(注1参照)。
面白いのは、「部分巡回禁止制約」ではなく、「部分巡回強制接続制約」を使用した場合、「部分巡回ルートから突き出した枝のうち通過する本数>=1」でも、計算時間は6分程度に短縮されるのであるが、1を2に変えるだけで、計算時間が更に大幅短縮され、1分程度になることである。
部分巡回ルートが発生した場合に「部分巡回強制接続制約」を用いることは、
巡回セールスマン問題でも既出であるから、これを用いる方が、計算が速くなることに今まで気が付かなかったのが不思議なくらいであるが、なぜこの方法の方が、計算が速いのかは、はっきりとは分かっていない。今回は、新たな分岐変数の発生をできるだけ減らすという方向性で検討するうちに、「部分巡回強制接続制約」の活用を再発見するに至ったが、この方法に辿り着きくまでの話の筋を以下に述べることで、この再発見の意義を明らかにしたい。
いずれにしても計算時間1分程度は、かなり満足できるレベルである。今後のソルバーでの計算は、「部分巡回禁止制約」よりも「部分巡回強制接続制約」を用いることを推奨したい。
【表A5-8】
(埼玉県:1本) |
---|
- H(大宮,熊谷)+H(熊谷,倉賀野)+H(倉賀野,高麗川)+H(高麗川, 大宮)<=3
|
|
(房総半島:3本) |
---|
- H(東京,品川)+H(東京,神田)+H(秋葉原,錦糸町)+H(西船橋,新松戸)+H(我孫子,成田)>=2
|
- H(品川,川崎)+H(品川,鶴見)+H(品川,新横浜)+H(代々木,新宿)+H(秋葉原,日暮里)+H(西船橋,新松戸)+H(我孫子,成田)>=2
|
- H(東京,品川)+H(品川,代々木)+H(西国分寺,府中本町)+H(西国分寺,立川)+H(武蔵浦和,大宮)+H(武蔵浦和,南浦和)+H(南浦和,赤羽)+H(日暮里,新松戸)+H(西船橋,新松戸)+H(我孫子,成田)>=2
|
(新潟近郊:1本) |
---|
- H(柏崎,直江津)+H(宮内,越後川口)+H(新津,会津若松)>=2
|
(東海地方-本州循環型最長片道ルートで使用したもの:4本) |
---|
|
- H(豊橋,静岡)+H(岡谷,小淵沢)+H(塩尻,松本)>=2
|
- H(豊橋,静岡)+H(小淵沢,甲府)+H(拝島,高麗川)+H(西国分寺,立川)+H(西国分寺,府中本町)+H(品川,新横浜)+H(品川,川崎)+H(品川,鶴見)>=2
|
- H(豊橋,静岡)+H(小淵沢,甲府)+H(拝島,高麗川)+H(西国分寺,立川)+H(西国分寺,府中本町)+H(品川,代々木)+H(品川,東京)>=2
(追加:5本) |
---|
- H(糸魚川,直江津)+H(長野,豊野)+H(小出,越後湯沢)+H(会津若松,郡山)>=2
|
- H(糸魚川,松本)+H(長野,豊野)+H(小出,越後湯沢)+H(安積永盛,郡山) +H(いわき,水戸)>=2
|
- H(いわき,水戸)+H(安積永盛,郡山)+H(小出,越後湯沢)+H(高崎,佐久)+H(甲府,小淵沢)+H(豊橋,静岡)>=2
|
- H(糸魚川,直江津)+H(長野,豊野)+H(小出,越後川口)+H(会津若松,新津)>=2
|
- H(糸魚川,松本)+H(長野,豊野)+H(高崎,佐久)+H(甲府,小淵沢)+H(豊橋,静岡)>=2
|
|
【表A5-9】
(埼玉県:1本) |
---|
- H(大宮,熊谷)+H(熊谷,倉賀野)+H(倉賀野,高麗川)+H(高麗川, 大宮)<=3
|
|
(房総半島:3本) |
---|
- H(東京,品川)+H(東京,神田)+H(秋葉原,錦糸町)+H(西船橋,新松戸)+H(我孫子,成田)>=2
|
- H(品川,川崎)+H(品川,鶴見)+H(品川,新横浜)+H(代々木,新宿)+H(秋葉原,日暮里)+H(西船橋,新松戸)+H(我孫子,成田)>=2
|
- H(東京,品川)+H(品川,代々木)+H(西国分寺,府中本町)+H(西国分寺,立川)+H(武蔵浦和,大宮)+H(武蔵浦和,南浦和)+H(南浦和,赤羽)+H(日暮里,新松戸)+H(西船橋,新松戸)+H(我孫子,成田)>=2
|
(新潟近郊:1本) |
---|
- H(柏崎,直江津)+H(宮内,越後川口)+H(新津,会津若松)>=2
|
(東海地方-本州循環型最長片道ルートで使用したものの内、後半2本) |
---|
- H(豊橋,静岡)+H(小淵沢,甲府)+H(拝島,高麗川)+H(西国分寺,立川)+H(西国分寺,府中本町)+H(品川,新横浜)+H(品川,川崎)+H(品川,鶴見)>=2
|
- H(豊橋,静岡)+H(小淵沢,甲府)+H(拝島,高麗川)+H(西国分寺,立川)+H(西国分寺,府中本町)+H(品川,代々木)+H(品川,東京)>=2
(追加:3本) |
---|
- H(糸魚川,直江津)+H(長野,豊野)+H(小出,越後湯沢)+H(会津若松,郡山)>=2
|
- H(いわき,水戸)+H(安積永盛,郡山)+H(小出,越後湯沢)+H(高崎,佐久)+H(甲府,小淵沢)+H(豊橋,静岡)>=2
|
- H(糸魚川,直江津)+H(長野,豊野)+H(小出,越後川口)+H(会津若松,新津)>=2
|
|