|
In optimization, 2-opt is a simple local search algorithm first proposed by Croes in 1958 for solving the traveling salesman problem. The main idea behind it is to take a route that crosses over itself and reorder it so that it does not. - A B - - A - B - X ==> - C D - - C - D - A complete 2-opt local search will compare every possible valid combination of the swapping mechanism. This technique can be applied to the travelling salesman problem as well as many related problems. These include the vehicle routing problem (VRP) as well as the capacitated VRP, which require minor modification of the algorithm. This is the mechanism by which the 2-opt swap manipulates a given route: 2optSwap(route, i, k) Here is an example of the above with arbitrary input: example route: A ==> B ==> C ==> D ==> E ==> F ==> G ==> H ==> A example i = 4, example k = 7 new_route: 1. (A ==> B ==> C) 2. A ==> B ==> C ==> (G ==> F ==> E ==> D) 3. A ==> B ==> C ==> G ==> F ==> E ==> D (==> H ==> A) This is the complete 2-opt swap making use of the above mechanism: repeat until no improvement is made } } Note: If you start/end at a particular node or depot, then you must remove this from the search as an eligible candidate for swapping, as reversing the order will cause an invalid path. For example, with depot at A: A ==> B ==> C ==> D ==> A Swapping using node() and node() would yield C ==> B ==> A ==> D ==> A which is not valid (does not leave from A, the depot). 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「2-opt」の詳細全文を読む スポンサード リンク
|