pycombinatorial 2.2.2__tar.gz → 2.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/PKG-INFO +7 -2
  2. pycombinatorial-2.2.2/pycombinatorial.egg-info/PKG-INFO → pycombinatorial-2.2.4/README.md +150 -156
  3. pycombinatorial-2.2.4/pyCombinatorial/__init__.py +5 -0
  4. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/__init__.py +61 -59
  5. pycombinatorial-2.2.4/pyCombinatorial/algorithm/ga_eax.py +591 -0
  6. pycombinatorial-2.2.4/pyCombinatorial/algorithm/lkh.py +1688 -0
  7. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/__init__.py +53 -2
  8. pycombinatorial-2.2.4/pyCombinatorial/web/js/algorithms/ga_eax.js +615 -0
  9. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/index.js +4 -0
  10. pycombinatorial-2.2.4/pyCombinatorial/web/js/algorithms/lkh.js +346 -0
  11. pycombinatorial-2.2.2/README.md → pycombinatorial-2.2.4/pycombinatorial.egg-info/PKG-INFO +161 -145
  12. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pycombinatorial.egg-info/SOURCES.txt +4 -0
  13. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/setup.py +1 -1
  14. pycombinatorial-2.2.2/pyCombinatorial/__init__.py +0 -5
  15. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/LICENSE +0 -0
  16. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/MANIFEST.in +0 -0
  17. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/aco.py +0 -0
  18. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/alns.py +0 -0
  19. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/bb.py +0 -0
  20. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/bf.py +0 -0
  21. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/bhk.py +0 -0
  22. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/brkga.py +0 -0
  23. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/bt.py +0 -0
  24. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/christofides.py +0 -0
  25. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/conc_hull.py +0 -0
  26. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/conv_hull.py +0 -0
  27. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/cw.py +0 -0
  28. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/eln.py +0 -0
  29. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/eo.py +0 -0
  30. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/frnn.py +0 -0
  31. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/ga.py +0 -0
  32. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/gksp.py +0 -0
  33. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/grasp.py +0 -0
  34. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/hpn.py +0 -0
  35. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/ins_c.py +0 -0
  36. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/ins_f.py +0 -0
  37. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/ins_n.py +0 -0
  38. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/ins_r.py +0 -0
  39. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/ksp.py +0 -0
  40. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/lns.py +0 -0
  41. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/mf.py +0 -0
  42. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/nn.py +0 -0
  43. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/opt_2.py +0 -0
  44. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/opt_2_5.py +0 -0
  45. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/opt_2_5s.py +0 -0
  46. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/opt_2s.py +0 -0
  47. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/opt_3.py +0 -0
  48. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/opt_3s.py +0 -0
  49. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/opt_4.py +0 -0
  50. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/opt_4s.py +0 -0
  51. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/opt_5.py +0 -0
  52. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/opt_5s.py +0 -0
  53. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/opt_or.py +0 -0
  54. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/rl_double_ql.py +0 -0
  55. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/rl_ql.py +0 -0
  56. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/rl_sarsa.py +0 -0
  57. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/rr.py +0 -0
  58. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/rss.py +0 -0
  59. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/rt.py +0 -0
  60. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/s_gui.py +0 -0
  61. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/s_itr.py +0 -0
  62. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/s_sct.py +0 -0
  63. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/s_shc.py +0 -0
  64. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/s_tabu.py +0 -0
  65. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/s_vns.py +0 -0
  66. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/sa.py +0 -0
  67. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/som.py +0 -0
  68. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/spfc_h.py +0 -0
  69. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/spfc_m.py +0 -0
  70. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/spfc_s.py +0 -0
  71. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/ssi.py +0 -0
  72. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/swp.py +0 -0
  73. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/tat.py +0 -0
  74. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/tbb.py +0 -0
  75. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/algorithm/zs.py +0 -0
  76. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/utils/__init__.py +0 -0
  77. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/utils/graphs.py +0 -0
  78. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/utils/util.py +0 -0
  79. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/__main__.py +0 -0
  80. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/css/style.css +0 -0
  81. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/index.html +0 -0
  82. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/_kopt.js +0 -0
  83. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/_kopt_trials.js +0 -0
  84. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/_ksp_helpers.js +0 -0
  85. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/_shared.js +0 -0
  86. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/aco.js +0 -0
  87. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/alns.js +0 -0
  88. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/bb.js +0 -0
  89. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/bf.js +0 -0
  90. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/bhk.js +0 -0
  91. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/brkga.js +0 -0
  92. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/bt.js +0 -0
  93. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/christofides.js +0 -0
  94. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/conc_hull.js +0 -0
  95. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/conv_hull.js +0 -0
  96. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/cw.js +0 -0
  97. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/eln.js +0 -0
  98. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/eo.js +0 -0
  99. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/frnn.js +0 -0
  100. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/ga.js +0 -0
  101. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/gksp.js +0 -0
  102. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/grasp.js +0 -0
  103. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/hpn.js +0 -0
  104. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/ins_c.js +0 -0
  105. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/ins_f.js +0 -0
  106. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/ins_n.js +0 -0
  107. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/ins_r.js +0 -0
  108. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/ksp.js +0 -0
  109. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/lns.js +0 -0
  110. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/mf.js +0 -0
  111. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/nn.js +0 -0
  112. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/opt_2.js +0 -0
  113. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/opt_2_5.js +0 -0
  114. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/opt_2_5s.js +0 -0
  115. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/opt_2s.js +0 -0
  116. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/opt_3.js +0 -0
  117. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/opt_3s.js +0 -0
  118. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/opt_4.js +0 -0
  119. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/opt_4s.js +0 -0
  120. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/opt_5.js +0 -0
  121. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/opt_5s.js +0 -0
  122. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/opt_or.js +0 -0
  123. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/rl_double_ql.js +0 -0
  124. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/rl_ql.js +0 -0
  125. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/rl_sarsa.js +0 -0
  126. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/rr.js +0 -0
  127. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/rss.js +0 -0
  128. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/rt.js +0 -0
  129. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/s_gui.js +0 -0
  130. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/s_itr.js +0 -0
  131. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/s_sct.js +0 -0
  132. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/s_shc.js +0 -0
  133. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/s_tabu.js +0 -0
  134. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/s_vns.js +0 -0
  135. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/sa.js +0 -0
  136. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/som.js +0 -0
  137. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/spfc_h.js +0 -0
  138. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/spfc_m.js +0 -0
  139. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/spfc_s.js +0 -0
  140. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/ssi.js +0 -0
  141. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/swp.js +0 -0
  142. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/tat.js +0 -0
  143. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/tbb.js +0 -0
  144. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/algorithms/zs.js +0 -0
  145. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/core/dataset.js +0 -0
  146. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/core/distance.js +0 -0
  147. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/core/renderer.js +0 -0
  148. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/core/seed.js +0 -0
  149. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/core/stepper.js +0 -0
  150. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/core/twoopt_refiner.js +0 -0
  151. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pyCombinatorial/web/js/main.js +0 -0
  152. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pycombinatorial.egg-info/dependency_links.txt +0 -0
  153. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pycombinatorial.egg-info/entry_points.txt +0 -0
  154. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pycombinatorial.egg-info/requires.txt +0 -0
  155. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/pycombinatorial.egg-info/top_level.txt +0 -0
  156. {pycombinatorial-2.2.2 → pycombinatorial-2.2.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycombinatorial
3
- Version: 2.2.2
3
+ Version: 2.2.4
4
4
  Summary: A library to solve TSP (Travelling Salesman Problem) using Exact Algorithms, Heuristics, Metaheuristics and Reinforcement Learning
5
5
  Home-page: https://github.com/Valdecy/pyCombinatorial
6
6
  Author: Valdecy Pereira
@@ -19,6 +19,9 @@ import pyCombinatorial
19
19
  # Start the web service using:
20
20
  pyCombinatorial.web_app()
21
21
 
22
+ # Terminate the web service using:
23
+ pyCombinatorial.web_stop()
24
+
22
25
  ```
23
26
 
24
27
  <p align="center">
@@ -33,7 +36,7 @@ _This Google Colab Demo is intended for quick demos only. For the best experienc
33
36
 
34
37
  **pyCombinatorial** is a Python-based library designed to tackle the classic Traveling Salesman Problem (TSP) through a diverse set of **Exact Algorithms**, **Heuristics**, **Metaheuristics**, and **Reinforcement Learning**. It brings together well-established and cutting-edge methodologies, offering end users a flexible toolkit to generate high-quality solutions for TSP instances of varying sizes and complexities.
35
38
 
36
- Techniques: **2-opt**; **2.5-opt**; **3-opt**; **4-opt**; **5-opt**; **Or-opt**; **2-opt Stochastic**; **2.5-opt Stochastic**; **3-opt Stochastic**; **4-opt Stochastic**; **5-opt Stochastic**; **Ant Colony Optimization**; **Adaptive Large Neighborhood Search**; **Bellman-Held-Karp Exact Algorithm**; **Bitonic Tour**; **Branch & Bound**; **BRKGA** (Biased Random Key Genetic Algorithm); **Brute Force**; **Cheapest Insertion**; **Christofides Algorithm**; **Clarke & Wright** (Savings Heuristic); **Concave Hull Algorithm**; **Convex Hull Algorithm**; **Elastic Net**; **Extremal Optimization**; **Farthest Insertion**; **FRNN** (Fixed Radius Near Neighbor); **Genetic Algorithm**; **GRASP** (Greedy Randomized Adaptive Search Procedure); **Greedy Karp-Steele Patching**; **Guided Search**; **Hopfield Network**; **Iterated Search**; **Karp-Steele Patching**; **Large Neighborhood Search**; **Multifragment Heuristic**; **Nearest Insertion**; **Nearest Neighbour**; **Random Insertion**; **Random Tour**; **Randomized Spectral Seriation**; **RL Q-Learning**; **RL Double Q-Learning**; **RL S.A.R.S.A** (State Action Reward State Action); **Ruin & Recreate**; **Scatter Search**; **Simulated Annealing**; **SOM** (Self Organizing Maps); **Space Filling Curve** (Hilbert); **Space Filling Curve** (Morton); **Space Filling Curve** (Sierpinski); **Spectral Seriation Initializer**; **Stochastic Hill Climbing**; **Sweep**; **Tabu Search**; **Truncated Branch & Bound**; **Twice-Around the Tree Algorithm** (Double Tree Algorithm); **Variable Neighborhood Search**; **Zero Suffix Method**.
39
+ Techniques: **2-opt**; **2.5-opt**; **3-opt**; **4-opt**; **5-opt**; **Or-opt**; **2-opt Stochastic**; **2.5-opt Stochastic**; **3-opt Stochastic**; **4-opt Stochastic**; **5-opt Stochastic**; **Ant Colony Optimization**; **Adaptive Large Neighborhood Search**; **Bellman-Held-Karp Exact Algorithm**; **Bitonic Tour**; **Branch & Bound**; **BRKGA** (Biased Random Key Genetic Algorithm); **Brute Force**; **Cheapest Insertion**; **Christofides Algorithm**; **Clarke & Wright** (Savings Heuristic); **Concave Hull Algorithm**; **Convex Hull Algorithm**; **Elastic Net**; **Extremal Optimization**; **Farthest Insertion**; **FRNN** (Fixed Radius Near Neighbor); **Genetic Algorithm**; **GA-EAX** (Genetic Algorithm with Edge Assembly Crossover); **GRASP** (Greedy Randomized Adaptive Search Procedure); **Greedy Karp-Steele Patching**; **Guided Search**; **Hopfield Network**; **Iterated Search**; **Karp-Steele Patching**; **Large Neighborhood Search**; **LKH** (Lin-Kernighan-Helsgaun); **Multifragment Heuristic**; **Nearest Insertion**; **Nearest Neighbour**; **Random Insertion**; **Random Tour**; **Randomized Spectral Seriation**; **RL Q-Learning**; **RL Double Q-Learning**; **RL S.A.R.S.A** (State Action Reward State Action); **Ruin & Recreate**; **Scatter Search**; **Simulated Annealing**; **SOM** (Self Organizing Maps); **Space Filling Curve** (Hilbert); **Space Filling Curve** (Morton); **Space Filling Curve** (Sierpinski); **Spectral Seriation Initializer**; **Stochastic Hill Climbing**; **Sweep**; **Tabu Search**; **Truncated Branch & Bound**; **Twice-Around the Tree Algorithm** (Double Tree Algorithm); **Variable Neighborhood Search**; **Zero Suffix Method**.
37
40
 
38
41
  ## Usage
39
42
 
@@ -117,6 +120,7 @@ print('Total Distance: ', round(distance, 2))
117
120
  - Farthest Insertion ([ Colab Demo ](https://colab.research.google.com/drive/13pWiLL_dO9Y1lvQO0zD50MXk4mD0Tn1W?usp=sharing)) ( [ Paper ](https://disco.ethz.ch/courses/fs16/podc/readingAssignment/1.pdf))
118
121
  - FRNN (Fixed Radius Near Neighbor) ([ Colab Demo ](https://colab.research.google.com/drive/16GgUGA0_TyR6UOqg0TtndjjuZhQ0TTYT?usp=sharing)) ( [ Paper ](https://dl.acm.org/doi/pdf/10.5555/320176.320186))
119
122
  - Genetic Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1zO9rm-G6HOMeg1Q_ptMHJr48EpHcCAIS?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/BF02125403))
123
+ - Genetic Algorithm with Edge Assembly Crossover([ Colab Demo ](https://colab.research.google.com/drive/1-G5RBXtJHNO4bDn9yhxQpWHbprLIZ_jd?usp=sharing)) ( [ Paper ](https://doi.org/10.1287/ijoc.1120.0506))
120
124
  - GRASP (Greedy Randomized Adaptive Search Procedure) ([ Colab Demo ](https://colab.research.google.com/drive/1OnRyCc6C_QL6wr6-l5RlQI4eGbMdwuhS?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/BF01096763))
121
125
  - Greedy Karp-Steele Patching ([ Colab Demo ](https://colab.research.google.com/drive/1to3u45QWWQK8REj1_YiF5rUqUqNjB18q?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0377-2217(99)00468-3))
122
126
  - Guided Search ([ Colab Demo ](https://colab.research.google.com/drive/1uT9mlDoo37Ni7hqziGNELEGQCGBKQ83o?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0377-2217(98)00099-X))
@@ -124,6 +128,7 @@ print('Total Distance: ', round(distance, 2))
124
128
  - Iterated Search ([ Colab Demo ](https://colab.research.google.com/drive/1U3sPpknulwsCUQq9mK7Ywfb8ap2GIXZv?usp=sharing)) ( [ Paper ](https://doi.org/10.1063/1.36219))
125
129
  - Karp-Steele Patching ([ Colab Demo ](https://colab.research.google.com/drive/12xLLDNIk6OOSNQXqYSYtdwhupZ9Kt5xb?usp=sharing)) ( [ Paper ](https://doi.org/10.1137/0208045))
126
130
  - Large Neighborhood Search ([ Colab Demo ](https://colab.research.google.com/drive/1t4cafHRRzOLN4xth96jE-2qHoPQOLsn5?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/3-540-49481-2_30))
131
+ - Lin-Kernighan-Helsgaun ([ Colab Demo ](https://colab.research.google.com/drive/1jYtOGgz0nv294GvaDpiPfTkUP4aljd58?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0377-2217(99)00284-2))
127
132
  - Multifragment Heuristic ([ Colab Demo ](https://colab.research.google.com/drive/1YNHVjS6P35bAnqGZyP7ERNrTnG9tNuhF?usp=sharing)) ( [ Paper ](https://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=08D176AEFA57EF1941645F2B31DF1686?doi=10.1.1.92.1635&rep=rep1&type=pdf))
128
133
  - Nearest Insertion ([ Colab Demo ](https://colab.research.google.com/drive/1R4mz604EG-unKktu8ON_Hpoywi3OIRHK?usp=sharing)) ( [ Paper ](https://disco.ethz.ch/courses/fs16/podc/readingAssignment/1.pdf))
129
134
  - Nearest Neighbour ([ Colab Demo ](https://colab.research.google.com/drive/1aL1kYXgSjUJYPfYSMy_0SWq4hJ3nrueJ?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0166-218X(01)00195-0))
@@ -1,156 +1,150 @@
1
- Metadata-Version: 2.1
2
- Name: pycombinatorial
3
- Version: 2.2.2
4
- Summary: A library to solve TSP (Travelling Salesman Problem) using Exact Algorithms, Heuristics, Metaheuristics and Reinforcement Learning
5
- Home-page: https://github.com/Valdecy/pyCombinatorial
6
- Author: Valdecy Pereira
7
- Author-email: valdecy.pereira@gmail.com
8
- License: GNU
9
- Description-Content-Type: text/markdown
10
- License-File: LICENSE
11
-
12
- # pyCombinatorial
13
-
14
- New to Python or prefer a graphical interface? The **pyCombinatorial Web App** lets you run your analysis in clicks, not lines of code.
15
-
16
- ```python
17
- import pyCombinatorial
18
-
19
- # Start the web service using:
20
- pyCombinatorial.web_app()
21
-
22
- ```
23
-
24
- <p align="center">
25
- <img src="https://github.com/Valdecy/Datasets/raw/master/Data%20Science/lab_pc.png" alt="Lab" width="700"/>
26
- </p>
27
-
28
- * [Preview -- **pyCombinatorial Web App** -- in Google Colab](https://colab.research.google.com/drive/11o2o_BTskKsS2Ybbs7vrwAzdLTczxhaJ?usp=sharing)
29
-
30
- _This Google Colab Demo is intended for quick demos only. For the best experience, run the Web UI locally or open it directly in a full browser._
31
-
32
- ## Introduction
33
-
34
- **pyCombinatorial** is a Python-based library designed to tackle the classic Traveling Salesman Problem (TSP) through a diverse set of **Exact Algorithms**, **Heuristics**, **Metaheuristics**, and **Reinforcement Learning**. It brings together well-established and cutting-edge methodologies, offering end users a flexible toolkit to generate high-quality solutions for TSP instances of varying sizes and complexities.
35
-
36
- Techniques: **2-opt**; **2.5-opt**; **3-opt**; **4-opt**; **5-opt**; **Or-opt**; **2-opt Stochastic**; **2.5-opt Stochastic**; **3-opt Stochastic**; **4-opt Stochastic**; **5-opt Stochastic**; **Ant Colony Optimization**; **Adaptive Large Neighborhood Search**; **Bellman-Held-Karp Exact Algorithm**; **Bitonic Tour**; **Branch & Bound**; **BRKGA** (Biased Random Key Genetic Algorithm); **Brute Force**; **Cheapest Insertion**; **Christofides Algorithm**; **Clarke & Wright** (Savings Heuristic); **Concave Hull Algorithm**; **Convex Hull Algorithm**; **Elastic Net**; **Extremal Optimization**; **Farthest Insertion**; **FRNN** (Fixed Radius Near Neighbor); **Genetic Algorithm**; **GRASP** (Greedy Randomized Adaptive Search Procedure); **Greedy Karp-Steele Patching**; **Guided Search**; **Hopfield Network**; **Iterated Search**; **Karp-Steele Patching**; **Large Neighborhood Search**; **Multifragment Heuristic**; **Nearest Insertion**; **Nearest Neighbour**; **Random Insertion**; **Random Tour**; **Randomized Spectral Seriation**; **RL Q-Learning**; **RL Double Q-Learning**; **RL S.A.R.S.A** (State Action Reward State Action); **Ruin & Recreate**; **Scatter Search**; **Simulated Annealing**; **SOM** (Self Organizing Maps); **Space Filling Curve** (Hilbert); **Space Filling Curve** (Morton); **Space Filling Curve** (Sierpinski); **Spectral Seriation Initializer**; **Stochastic Hill Climbing**; **Sweep**; **Tabu Search**; **Truncated Branch & Bound**; **Twice-Around the Tree Algorithm** (Double Tree Algorithm); **Variable Neighborhood Search**; **Zero Suffix Method**.
37
-
38
- ## Usage
39
-
40
- 1. Install
41
-
42
- ```bash
43
- pip install pycombinatorial
44
- ```
45
-
46
- 2. Import
47
-
48
- ```py3
49
-
50
-
51
- # Required Libraries
52
- import pandas as pd
53
-
54
- # GA
55
- from pyCombinatorial.algorithm import genetic_algorithm
56
- from pyCombinatorial.utils import graphs, util
57
-
58
- # Loading Coordinates # Berlin 52 (Minimum Distance = 7544.3659)
59
- coordinates = pd.read_csv('https://bit.ly/3Oyn3hN', sep = '\t')
60
- coordinates = coordinates.values
61
-
62
- # Obtaining the Distance Matrix
63
- distance_matrix = util.build_distance_matrix(coordinates)
64
-
65
- # GA - Parameters
66
- parameters = {
67
- 'population_size': 15,
68
- 'elite': 1,
69
- 'mutation_rate': 0.1,
70
- 'mutation_search': 8,
71
- 'generations': 1000,
72
- 'verbose': True
73
- }
74
-
75
- # GA - Algorithm
76
- route, distance = genetic_algorithm(distance_matrix, **parameters)
77
-
78
- # Plot Locations and Tour
79
- graphs.plot_tour(coordinates, city_tour = route, view = 'browser', size = 10)
80
- print('Total Distance: ', round(distance, 2))
81
-
82
- ```
83
-
84
- 3. Try it in **Colab**
85
-
86
- 3.1 Lat Long Datasets
87
-
88
- - Lat Long ([ Colab Demo ](https://colab.research.google.com/drive/17jFw4z1R9gOoAfB-ZCZa6c-PukVKdrt3?usp=sharing))
89
-
90
- 3.2 Algorithms
91
-
92
- - 2-opt ([ Colab Demo ](https://colab.research.google.com/drive/1SLkM8r_VdlFCpNpm-2yTfr_ynSC5WIX9?usp=sharing)) ( [ Paper ](https://www.jstor.org/stable/167074))
93
- - 2.5-opt ([ Colab Demo ](https://colab.research.google.com/drive/17bJ-I26prnryAU8p-xf0l7R91cJzb85N?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/s10955-007-9382-1))
94
- - 3-opt ([ Colab Demo ](https://colab.research.google.com/drive/1iAZLawLBZ-7yaPCyobMtel1SvBamxtjL?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
95
- - 4-opt ([ Colab Demo ](https://colab.research.google.com/drive/1N8HKhVY4s20sfqo8IWIaCY-NHVk6gARS?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
96
- - 5-opt ([ Colab Demo ](https://colab.research.google.com/drive/15Qrk-7H4oRaTR77ADvwkiN0sLvycgFDH?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
97
- - Or-opt ([ Colab Demo ](https://colab.research.google.com/drive/1p7JwrFLH83ZroCzIweXLCAXYgA3FKAI0?usp=sharing)) ( [ Paper ](https://doi.org/10.1057/palgrave.jors.2602160))
98
- - 2-opt Stochastic ([ Colab Demo ](https://colab.research.google.com/drive/1xTm__7OwQVC_KX2b-eExLGgG1DgnJ10a?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/j.trpro.2014.10.001))
99
- - 2.5-opt Stochastic ([ Colab Demo ](https://colab.research.google.com/drive/16W_QqJ1PebVgqUx8NFOSS5kG3DsJ51UQ?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/s10955-007-9382-1))
100
- - 3-opt Stochastic ([ Colab Demo ](https://colab.research.google.com/drive/1A5lPW6BSDD2rLNDlnpQo44U8jwKcAGXL?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
101
- - 4-opt Stochastic ([ Colab Demo ](https://colab.research.google.com/drive/1igWrUMVSInzyeOdhPcGuMjyooZ6elvLY?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
102
- - 5-opt Stochastic ([ Colab Demo ](https://colab.research.google.com/drive/13vS5MCeFqb3F4ntxrw3iCsMbJTfEVyeo?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
103
- - Ant Colony Optimization ([ Colab Demo ](https://colab.research.google.com/drive/1O2qogrjE4mZUZX3nsSxw43crumlBnd-D?usp=sharing)) ( [ Paper ](https://doi.org/10.1109/4235.585892))
104
- - Adaptive Large Neighborhood Search ([ Colab Demo ](https://colab.research.google.com/drive/1vShK5fe2xRCpMkurgd4PzmstGtn6d_LQ?usp=sharing)) ( [ Paper ](https://www.jstor.org/stable/25769321))
105
- - Bellman-Held-Karp Exact Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1HSnArk-v8PWY4dlCvT5zcSAnT1FJEDaf?usp=sharing)) ( [ Paper ](https://dl.acm.org/doi/10.1145/321105.321111))
106
- - Bitonic Tour([ Colab Demo ](https://colab.research.google.com/drive/1AopZ7IBgC_2fhLE0E4yAgxofYc0wTnge?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/978-3-030-63920-4_12))
107
- - Branch & Bound ([ Colab Demo ](https://colab.research.google.com/drive/1oDHrECSW3g4vBEsrO8T7qSHID4fxFiqs?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/j.disopt.2016.01.005))
108
- - BRKGA (Biased Random Key Genetic Algorithm) ([ Colab Demo ](https://colab.research.google.com/drive/1lwnpUBl1P1LIvzN1saLgEvnaKZRMWLHn?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/s10732-010-9143-1))
109
- - Brute Force ([ Colab Demo ](https://colab.research.google.com/drive/10vOkBz3Cv9UdHPlcBWkDmJO7EvDg96ar?usp=sharing)) ( [ Paper ](https://swarm.cs.pub.ro/~mbarbulescu/cripto/Understanding%20Cryptography%20by%20Christof%20Paar%20.pdf))
110
- - Cheapest Insertion ([ Colab Demo ](https://colab.research.google.com/drive/1QOg8FDvrFUgojwLXD2BBvEuB9Mu7q88a?usp=sharing)) ( [ Paper ](https://disco.ethz.ch/courses/fs16/podc/readingAssignment/1.pdf))
111
- - Christofides Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1Wbm-YQ9TeH2OU-IjZzVdDkWGQILv4Pj_?usp=sharing)) ( [ Paper ](https://web.archive.org/web/20190721172134/https://apps.dtic.mil/dtic/tr/fulltext/u2/a025602.pdf))
112
- - Clarke & Wright (Savings Heuristic) ([ Colab Demo ](https://colab.research.google.com/drive/1XC2yoVe6wTsjt7u2fBaL3LcKUu42FG8r?usp=sharing)) ( [ Paper ](http://dx.doi.org/10.1287/opre.12.4.568))
113
- - Concave Hull Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1P96DerRe7CLyC9dQNr96nEkNHnxpGYY4?usp=sharing)) ( [ Paper ](http://repositorium.sdum.uminho.pt/bitstream/1822/6429/1/ConcaveHull_ACM_MYS.pdf))
114
- - Convex Hull Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1Wn2OWccZukOfMtJuGV9laklLTc8vjOFq?usp=sharing)) ( [ Paper ](https://doi.org/10.1109/TSMC.1974.4309370))
115
- - Elastic Net ([ Colab Demo ](https://colab.research.google.com/drive/1F7IlkKdZ3_zQ_MkhknkIPHvE5RqJG7YC?usp=sharing)) ( [ Paper ](https://doi.org/10.1038/326689a0))
116
- - Extremal Optimization ([ Colab Demo ](https://colab.research.google.com/drive/1Y5YH0eYKjr1nj_IfhJXaILRDIXm-LWLs?usp=sharing)) ( [ Paper ](https://doi.org/10.1109/5992.881710))
117
- - Farthest Insertion ([ Colab Demo ](https://colab.research.google.com/drive/13pWiLL_dO9Y1lvQO0zD50MXk4mD0Tn1W?usp=sharing)) ( [ Paper ](https://disco.ethz.ch/courses/fs16/podc/readingAssignment/1.pdf))
118
- - FRNN (Fixed Radius Near Neighbor) ([ Colab Demo ](https://colab.research.google.com/drive/16GgUGA0_TyR6UOqg0TtndjjuZhQ0TTYT?usp=sharing)) ( [ Paper ](https://dl.acm.org/doi/pdf/10.5555/320176.320186))
119
- - Genetic Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1zO9rm-G6HOMeg1Q_ptMHJr48EpHcCAIS?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/BF02125403))
120
- - GRASP (Greedy Randomized Adaptive Search Procedure) ([ Colab Demo ](https://colab.research.google.com/drive/1OnRyCc6C_QL6wr6-l5RlQI4eGbMdwuhS?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/BF01096763))
121
- - Greedy Karp-Steele Patching ([ Colab Demo ](https://colab.research.google.com/drive/1to3u45QWWQK8REj1_YiF5rUqUqNjB18q?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0377-2217(99)00468-3))
122
- - Guided Search ([ Colab Demo ](https://colab.research.google.com/drive/1uT9mlDoo37Ni7hqziGNELEGQCGBKQ83o?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0377-2217(98)00099-X))
123
- - Hopfield Network ([ Colab Demo ](https://colab.research.google.com/drive/1Io20FFsndsRT3Bc1nimLBcpH5WtEt7Pe?usp=sharing)) ( [ Paper ](https://doi.org/10.1515/dema-1996-0126))
124
- - Iterated Search ([ Colab Demo ](https://colab.research.google.com/drive/1U3sPpknulwsCUQq9mK7Ywfb8ap2GIXZv?usp=sharing)) ( [ Paper ](https://doi.org/10.1063/1.36219))
125
- - Karp-Steele Patching ([ Colab Demo ](https://colab.research.google.com/drive/12xLLDNIk6OOSNQXqYSYtdwhupZ9Kt5xb?usp=sharing)) ( [ Paper ](https://doi.org/10.1137/0208045))
126
- - Large Neighborhood Search ([ Colab Demo ](https://colab.research.google.com/drive/1t4cafHRRzOLN4xth96jE-2qHoPQOLsn5?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/3-540-49481-2_30))
127
- - Multifragment Heuristic ([ Colab Demo ](https://colab.research.google.com/drive/1YNHVjS6P35bAnqGZyP7ERNrTnG9tNuhF?usp=sharing)) ( [ Paper ](https://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=08D176AEFA57EF1941645F2B31DF1686?doi=10.1.1.92.1635&rep=rep1&type=pdf))
128
- - Nearest Insertion ([ Colab Demo ](https://colab.research.google.com/drive/1R4mz604EG-unKktu8ON_Hpoywi3OIRHK?usp=sharing)) ( [ Paper ](https://disco.ethz.ch/courses/fs16/podc/readingAssignment/1.pdf))
129
- - Nearest Neighbour ([ Colab Demo ](https://colab.research.google.com/drive/1aL1kYXgSjUJYPfYSMy_0SWq4hJ3nrueJ?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0166-218X(01)00195-0))
130
- - Random Insertion ([ Colab Demo ](https://colab.research.google.com/drive/1RP_grqrTXyDkHOLB_L1H8TkvxdLli5hG?usp=sharing)) ( [ Paper ](https://disco.ethz.ch/courses/fs16/podc/readingAssignment/1.pdf))
131
- - Random Tour ([ Colab Demo ](https://colab.research.google.com/drive/1DPXMJXInkGKTyVFDAQ2bKXjglhy3DaCS?usp=sharing)) ( [ Paper ](https://doi.org/10.1023/A:1011263204536))
132
- - Randomized Spectral Seriation ([ Colab Demo ](https://colab.research.google.com/drive/1PTtO6HJfftsFZEScCYZvzpBJsgMyjBCY?usp=sharing)) ( [ Paper ](https://doi.org/10.1137/S0097539795285771))
133
- - RL Q-Learning ([ Colab Demo ](https://colab.research.google.com/drive/1dnZhLAzQdz9kzxKrVcwMECWbyEKkZ7St?usp=sharing)) ( [ Paper ](https://doi.org/10.1049/tje2.12303))
134
- - RL Double Q-Learning ([ Colab Demo ](https://colab.research.google.com/drive/1VTv8A6Ac-LvBxsereFyGRfkiLRbJI547?usp=sharing)) ( [ Paper ](https://doi.org/10.1049/tje2.12303))
135
- - RL S.A.R.S.A ([ Colab Demo ](https://colab.research.google.com/drive/1q9hon3jFf8xVCw4idxhu7goLREKbQ6N3?usp=sharing)) ( [ Paper ](https://doi.org/10.1049/tje2.12303))
136
- - Ruin & Recreate ([ Colab Demo ](https://colab.research.google.com/drive/18uPEZqwOZa07YdVoNht_VMH3SGhLBo-A?usp=sharing)) ( [ Paper ](https://doi.org/10.1006/jcph.1999.6413))
137
- - Scatter Search ([ Colab Demo ](https://colab.research.google.com/drive/115Ql6KegvOjlNUUfsbY4fA8Vab-db26N?usp=sharing)) ( [ Paper ](https://doi.org/10.1111/j.1540-5915.1977.tb01074.x))
138
- - Simulated Annealing ([ Colab Demo ](https://colab.research.google.com/drive/10Th0yLaAeSqp9FhYB0H00e4sXTbg7Jp2?usp=sharing)) ( [ Paper ](https://www.jstor.org/stable/1690046))
139
- - SOM (Self Organizing Maps) ([ Colab Demo ](https://colab.research.google.com/drive/1-ZwSFnXf1_kCeY_p3SC3N21T8QeSWsg6?usp=sharing)) ( [ Paper ](https://arxiv.org/pdf/2201.07208.pdf))
140
- - Space Filling Curve (Hilbert) ([ Colab Demo ](https://colab.research.google.com/drive/1FXzWrUBjdbJBngRFHv66CZw5pFN3yOs8?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/0960-0779(95)80046-J))
141
- - Space Filling Curve (Morton) ([ Colab Demo ](https://colab.research.google.com/drive/1Z13kXyi7eaNQbBUmhvwuQjY4VaUfGVbs?usp=sharing)) ( [ Paper ](https://dominoweb.draco.res.ibm.com/reports/Morton1966.pdf))
142
- - Space Filling Curve (Sierpinski) ([ Colab Demo ](https://colab.research.google.com/drive/1w-Zptd5kOryCwvQ0qSNBNhPXC61c8QXF?usp=sharing)) ( [ Paper ](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.67.9061&rep=rep1&type=pdf))
143
- - Spectral Seriation Initializer ([ Colab Demo ](https://colab.research.google.com/drive/1lG0pYxASU75qh0jK-A_eMCoPpCWv0I4V?usp=sharing)) ( [ Paper ](https://doi.org/10.1137/S0097539795285771))
144
- - Stochastic Hill Climbing ([ Colab Demo ](https://colab.research.google.com/drive/1_wP6vg4JoRHGItGxEtXcf9Y9OuuoDlDl?usp=sharing)) ( [ Paper ](http://aima.cs.berkeley.edu/))
145
- - Sweep ([ Colab Demo ](https://colab.research.google.com/drive/1AkAn4yeomAp6POBslk3Asd6OrxfBrHT7?usp=sharing)) ( [ Paper ](http://dx.doi.org/10.1287/opre.22.2.340))
146
- - Tabu Search ([ Colab Demo ](https://colab.research.google.com/drive/1SRwQrBaxkKk18SDvQPy--0yNRWdl6Y1G?usp=sharing)) ( [ Paper ](https://doi.org/10.1287/ijoc.1.3.190))
147
- - Truncated Branch & Bound ([ Colab Demo ](https://colab.research.google.com/drive/16m72PrBZN8mWMCer12dgsStcNGs4DVdQ?usp=sharing)) ( [ Paper ](https://research.ijcaonline.org/volume65/number5/pxc3885866.pdf))
148
- - Twice-Around the Tree Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1tf5tc5DxvEUc89JaaFgzmK1TtD1e4fkc?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/0196-6774(84)90029-4))
149
- - Variable Neighborhood Search ([ Colab Demo ](https://colab.research.google.com/drive/1yMWjYuurzpcijsCFDTA76fAwJmSaDkZq?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0305-0548(97)00031-2))
150
- - Zero Suffix Method ([ Colab Demo ](https://colab.research.google.com/drive/1IXiZ8eQThElMFK-ATD1GoUyKC02LI3ij?usp=sharing)) ( [ Paper ](https://www.m-hikari.com/ijcms-2011/21-24-2011/sudhakarIJCMS21-24-2011.pdf))
151
-
152
- # Single Objective Optimization
153
- For Single Objective Optimization, try [pyMetaheuristic](https://github.com/Valdecy/pyMetaheuristic)
154
-
155
- # Multiobjective Optimization or Many Objectives Optimization
156
- For Multiobjective Optimization or Many Objectives Optimization, try [pyMultiobjective](https://github.com/Valdecy/pyMultiobjective)
1
+ # pyCombinatorial
2
+
3
+ New to Python or prefer a graphical interface? The **pyCombinatorial Web App** lets you run your analysis in clicks, not lines of code.
4
+
5
+ ```python
6
+ import pyCombinatorial
7
+
8
+ # Start the web service using:
9
+ pyCombinatorial.web_app()
10
+
11
+ # Terminate the web service using:
12
+ pyCombinatorial.web_stop()
13
+
14
+ ```
15
+
16
+ <p align="center">
17
+ <img src="https://github.com/Valdecy/Datasets/raw/master/Data%20Science/lab_pc.png" alt="Lab" width="700"/>
18
+ </p>
19
+
20
+ * [Preview -- **pyCombinatorial Web App** -- in Google Colab](https://colab.research.google.com/drive/11o2o_BTskKsS2Ybbs7vrwAzdLTczxhaJ?usp=sharing)
21
+
22
+ _This Google Colab Demo is intended for quick demos only. For the best experience, run the Web UI locally or open it directly in a full browser._
23
+
24
+ ## Introduction
25
+
26
+ **pyCombinatorial** is a Python-based library designed to tackle the classic Traveling Salesman Problem (TSP) through a diverse set of **Exact Algorithms**, **Heuristics**, **Metaheuristics**, and **Reinforcement Learning**. It brings together well-established and cutting-edge methodologies, offering end users a flexible toolkit to generate high-quality solutions for TSP instances of varying sizes and complexities.
27
+
28
+ Techniques: **2-opt**; **2.5-opt**; **3-opt**; **4-opt**; **5-opt**; **Or-opt**; **2-opt Stochastic**; **2.5-opt Stochastic**; **3-opt Stochastic**; **4-opt Stochastic**; **5-opt Stochastic**; **Ant Colony Optimization**; **Adaptive Large Neighborhood Search**; **Bellman-Held-Karp Exact Algorithm**; **Bitonic Tour**; **Branch & Bound**; **BRKGA** (Biased Random Key Genetic Algorithm); **Brute Force**; **Cheapest Insertion**; **Christofides Algorithm**; **Clarke & Wright** (Savings Heuristic); **Concave Hull Algorithm**; **Convex Hull Algorithm**; **Elastic Net**; **Extremal Optimization**; **Farthest Insertion**; **FRNN** (Fixed Radius Near Neighbor); **Genetic Algorithm**; **GA-EAX** (Genetic Algorithm with Edge Assembly Crossover); **GRASP** (Greedy Randomized Adaptive Search Procedure); **Greedy Karp-Steele Patching**; **Guided Search**; **Hopfield Network**; **Iterated Search**; **Karp-Steele Patching**; **Large Neighborhood Search**; **LKH** (Lin-Kernighan-Helsgaun); **Multifragment Heuristic**; **Nearest Insertion**; **Nearest Neighbour**; **Random Insertion**; **Random Tour**; **Randomized Spectral Seriation**; **RL Q-Learning**; **RL Double Q-Learning**; **RL S.A.R.S.A** (State Action Reward State Action); **Ruin & Recreate**; **Scatter Search**; **Simulated Annealing**; **SOM** (Self Organizing Maps); **Space Filling Curve** (Hilbert); **Space Filling Curve** (Morton); **Space Filling Curve** (Sierpinski); **Spectral Seriation Initializer**; **Stochastic Hill Climbing**; **Sweep**; **Tabu Search**; **Truncated Branch & Bound**; **Twice-Around the Tree Algorithm** (Double Tree Algorithm); **Variable Neighborhood Search**; **Zero Suffix Method**.
29
+
30
+ ## Usage
31
+
32
+ 1. Install
33
+
34
+ ```bash
35
+ pip install pycombinatorial
36
+ ```
37
+
38
+ 2. Import
39
+
40
+ ```py3
41
+
42
+
43
+ # Required Libraries
44
+ import pandas as pd
45
+
46
+ # GA
47
+ from pyCombinatorial.algorithm import genetic_algorithm
48
+ from pyCombinatorial.utils import graphs, util
49
+
50
+ # Loading Coordinates # Berlin 52 (Minimum Distance = 7544.3659)
51
+ coordinates = pd.read_csv('https://bit.ly/3Oyn3hN', sep = '\t')
52
+ coordinates = coordinates.values
53
+
54
+ # Obtaining the Distance Matrix
55
+ distance_matrix = util.build_distance_matrix(coordinates)
56
+
57
+ # GA - Parameters
58
+ parameters = {
59
+ 'population_size': 15,
60
+ 'elite': 1,
61
+ 'mutation_rate': 0.1,
62
+ 'mutation_search': 8,
63
+ 'generations': 1000,
64
+ 'verbose': True
65
+ }
66
+
67
+ # GA - Algorithm
68
+ route, distance = genetic_algorithm(distance_matrix, **parameters)
69
+
70
+ # Plot Locations and Tour
71
+ graphs.plot_tour(coordinates, city_tour = route, view = 'browser', size = 10)
72
+ print('Total Distance: ', round(distance, 2))
73
+
74
+ ```
75
+
76
+ 3. Try it in **Colab**
77
+
78
+ 3.1 Lat Long Datasets
79
+
80
+ - Lat Long ([ Colab Demo ](https://colab.research.google.com/drive/17jFw4z1R9gOoAfB-ZCZa6c-PukVKdrt3?usp=sharing))
81
+
82
+ 3.2 Algorithms
83
+
84
+ - 2-opt ([ Colab Demo ](https://colab.research.google.com/drive/1SLkM8r_VdlFCpNpm-2yTfr_ynSC5WIX9?usp=sharing)) ( [ Paper ](https://www.jstor.org/stable/167074))
85
+ - 2.5-opt ([ Colab Demo ](https://colab.research.google.com/drive/17bJ-I26prnryAU8p-xf0l7R91cJzb85N?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/s10955-007-9382-1))
86
+ - 3-opt ([ Colab Demo ](https://colab.research.google.com/drive/1iAZLawLBZ-7yaPCyobMtel1SvBamxtjL?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
87
+ - 4-opt ([ Colab Demo ](https://colab.research.google.com/drive/1N8HKhVY4s20sfqo8IWIaCY-NHVk6gARS?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
88
+ - 5-opt ([ Colab Demo ](https://colab.research.google.com/drive/15Qrk-7H4oRaTR77ADvwkiN0sLvycgFDH?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
89
+ - Or-opt ([ Colab Demo ](https://colab.research.google.com/drive/1p7JwrFLH83ZroCzIweXLCAXYgA3FKAI0?usp=sharing)) ( [ Paper ](https://doi.org/10.1057/palgrave.jors.2602160))
90
+ - 2-opt Stochastic ([ Colab Demo ](https://colab.research.google.com/drive/1xTm__7OwQVC_KX2b-eExLGgG1DgnJ10a?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/j.trpro.2014.10.001))
91
+ - 2.5-opt Stochastic ([ Colab Demo ](https://colab.research.google.com/drive/16W_QqJ1PebVgqUx8NFOSS5kG3DsJ51UQ?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/s10955-007-9382-1))
92
+ - 3-opt Stochastic ([ Colab Demo ](https://colab.research.google.com/drive/1A5lPW6BSDD2rLNDlnpQo44U8jwKcAGXL?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
93
+ - 4-opt Stochastic ([ Colab Demo ](https://colab.research.google.com/drive/1igWrUMVSInzyeOdhPcGuMjyooZ6elvLY?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
94
+ - 5-opt Stochastic ([ Colab Demo ](https://colab.research.google.com/drive/13vS5MCeFqb3F4ntxrw3iCsMbJTfEVyeo?usp=sharing)) ( [ Paper ](https://isd.ktu.lt/it2011//material/Proceedings/1_AI_5.pdf))
95
+ - Ant Colony Optimization ([ Colab Demo ](https://colab.research.google.com/drive/1O2qogrjE4mZUZX3nsSxw43crumlBnd-D?usp=sharing)) ( [ Paper ](https://doi.org/10.1109/4235.585892))
96
+ - Adaptive Large Neighborhood Search ([ Colab Demo ](https://colab.research.google.com/drive/1vShK5fe2xRCpMkurgd4PzmstGtn6d_LQ?usp=sharing)) ( [ Paper ](https://www.jstor.org/stable/25769321))
97
+ - Bellman-Held-Karp Exact Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1HSnArk-v8PWY4dlCvT5zcSAnT1FJEDaf?usp=sharing)) ( [ Paper ](https://dl.acm.org/doi/10.1145/321105.321111))
98
+ - Bitonic Tour([ Colab Demo ](https://colab.research.google.com/drive/1AopZ7IBgC_2fhLE0E4yAgxofYc0wTnge?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/978-3-030-63920-4_12))
99
+ - Branch & Bound ([ Colab Demo ](https://colab.research.google.com/drive/1oDHrECSW3g4vBEsrO8T7qSHID4fxFiqs?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/j.disopt.2016.01.005))
100
+ - BRKGA (Biased Random Key Genetic Algorithm) ([ Colab Demo ](https://colab.research.google.com/drive/1lwnpUBl1P1LIvzN1saLgEvnaKZRMWLHn?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/s10732-010-9143-1))
101
+ - Brute Force ([ Colab Demo ](https://colab.research.google.com/drive/10vOkBz3Cv9UdHPlcBWkDmJO7EvDg96ar?usp=sharing)) ( [ Paper ](https://swarm.cs.pub.ro/~mbarbulescu/cripto/Understanding%20Cryptography%20by%20Christof%20Paar%20.pdf))
102
+ - Cheapest Insertion ([ Colab Demo ](https://colab.research.google.com/drive/1QOg8FDvrFUgojwLXD2BBvEuB9Mu7q88a?usp=sharing)) ( [ Paper ](https://disco.ethz.ch/courses/fs16/podc/readingAssignment/1.pdf))
103
+ - Christofides Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1Wbm-YQ9TeH2OU-IjZzVdDkWGQILv4Pj_?usp=sharing)) ( [ Paper ](https://web.archive.org/web/20190721172134/https://apps.dtic.mil/dtic/tr/fulltext/u2/a025602.pdf))
104
+ - Clarke & Wright (Savings Heuristic) ([ Colab Demo ](https://colab.research.google.com/drive/1XC2yoVe6wTsjt7u2fBaL3LcKUu42FG8r?usp=sharing)) ( [ Paper ](http://dx.doi.org/10.1287/opre.12.4.568))
105
+ - Concave Hull Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1P96DerRe7CLyC9dQNr96nEkNHnxpGYY4?usp=sharing)) ( [ Paper ](http://repositorium.sdum.uminho.pt/bitstream/1822/6429/1/ConcaveHull_ACM_MYS.pdf))
106
+ - Convex Hull Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1Wn2OWccZukOfMtJuGV9laklLTc8vjOFq?usp=sharing)) ( [ Paper ](https://doi.org/10.1109/TSMC.1974.4309370))
107
+ - Elastic Net ([ Colab Demo ](https://colab.research.google.com/drive/1F7IlkKdZ3_zQ_MkhknkIPHvE5RqJG7YC?usp=sharing)) ( [ Paper ](https://doi.org/10.1038/326689a0))
108
+ - Extremal Optimization ([ Colab Demo ](https://colab.research.google.com/drive/1Y5YH0eYKjr1nj_IfhJXaILRDIXm-LWLs?usp=sharing)) ( [ Paper ](https://doi.org/10.1109/5992.881710))
109
+ - Farthest Insertion ([ Colab Demo ](https://colab.research.google.com/drive/13pWiLL_dO9Y1lvQO0zD50MXk4mD0Tn1W?usp=sharing)) ( [ Paper ](https://disco.ethz.ch/courses/fs16/podc/readingAssignment/1.pdf))
110
+ - FRNN (Fixed Radius Near Neighbor) ([ Colab Demo ](https://colab.research.google.com/drive/16GgUGA0_TyR6UOqg0TtndjjuZhQ0TTYT?usp=sharing)) ( [ Paper ](https://dl.acm.org/doi/pdf/10.5555/320176.320186))
111
+ - Genetic Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1zO9rm-G6HOMeg1Q_ptMHJr48EpHcCAIS?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/BF02125403))
112
+ - Genetic Algorithm with Edge Assembly Crossover([ Colab Demo ](https://colab.research.google.com/drive/1-G5RBXtJHNO4bDn9yhxQpWHbprLIZ_jd?usp=sharing)) ( [ Paper ](https://doi.org/10.1287/ijoc.1120.0506))
113
+ - GRASP (Greedy Randomized Adaptive Search Procedure) ([ Colab Demo ](https://colab.research.google.com/drive/1OnRyCc6C_QL6wr6-l5RlQI4eGbMdwuhS?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/BF01096763))
114
+ - Greedy Karp-Steele Patching ([ Colab Demo ](https://colab.research.google.com/drive/1to3u45QWWQK8REj1_YiF5rUqUqNjB18q?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0377-2217(99)00468-3))
115
+ - Guided Search ([ Colab Demo ](https://colab.research.google.com/drive/1uT9mlDoo37Ni7hqziGNELEGQCGBKQ83o?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0377-2217(98)00099-X))
116
+ - Hopfield Network ([ Colab Demo ](https://colab.research.google.com/drive/1Io20FFsndsRT3Bc1nimLBcpH5WtEt7Pe?usp=sharing)) ( [ Paper ](https://doi.org/10.1515/dema-1996-0126))
117
+ - Iterated Search ([ Colab Demo ](https://colab.research.google.com/drive/1U3sPpknulwsCUQq9mK7Ywfb8ap2GIXZv?usp=sharing)) ( [ Paper ](https://doi.org/10.1063/1.36219))
118
+ - Karp-Steele Patching ([ Colab Demo ](https://colab.research.google.com/drive/12xLLDNIk6OOSNQXqYSYtdwhupZ9Kt5xb?usp=sharing)) ( [ Paper ](https://doi.org/10.1137/0208045))
119
+ - Large Neighborhood Search ([ Colab Demo ](https://colab.research.google.com/drive/1t4cafHRRzOLN4xth96jE-2qHoPQOLsn5?usp=sharing)) ( [ Paper ](https://doi.org/10.1007/3-540-49481-2_30))
120
+ - Lin-Kernighan-Helsgaun ([ Colab Demo ](https://colab.research.google.com/drive/1jYtOGgz0nv294GvaDpiPfTkUP4aljd58?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0377-2217(99)00284-2))
121
+ - Multifragment Heuristic ([ Colab Demo ](https://colab.research.google.com/drive/1YNHVjS6P35bAnqGZyP7ERNrTnG9tNuhF?usp=sharing)) ( [ Paper ](https://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=08D176AEFA57EF1941645F2B31DF1686?doi=10.1.1.92.1635&rep=rep1&type=pdf))
122
+ - Nearest Insertion ([ Colab Demo ](https://colab.research.google.com/drive/1R4mz604EG-unKktu8ON_Hpoywi3OIRHK?usp=sharing)) ( [ Paper ](https://disco.ethz.ch/courses/fs16/podc/readingAssignment/1.pdf))
123
+ - Nearest Neighbour ([ Colab Demo ](https://colab.research.google.com/drive/1aL1kYXgSjUJYPfYSMy_0SWq4hJ3nrueJ?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0166-218X(01)00195-0))
124
+ - Random Insertion ([ Colab Demo ](https://colab.research.google.com/drive/1RP_grqrTXyDkHOLB_L1H8TkvxdLli5hG?usp=sharing)) ( [ Paper ](https://disco.ethz.ch/courses/fs16/podc/readingAssignment/1.pdf))
125
+ - Random Tour ([ Colab Demo ](https://colab.research.google.com/drive/1DPXMJXInkGKTyVFDAQ2bKXjglhy3DaCS?usp=sharing)) ( [ Paper ](https://doi.org/10.1023/A:1011263204536))
126
+ - Randomized Spectral Seriation ([ Colab Demo ](https://colab.research.google.com/drive/1PTtO6HJfftsFZEScCYZvzpBJsgMyjBCY?usp=sharing)) ( [ Paper ](https://doi.org/10.1137/S0097539795285771))
127
+ - RL Q-Learning ([ Colab Demo ](https://colab.research.google.com/drive/1dnZhLAzQdz9kzxKrVcwMECWbyEKkZ7St?usp=sharing)) ( [ Paper ](https://doi.org/10.1049/tje2.12303))
128
+ - RL Double Q-Learning ([ Colab Demo ](https://colab.research.google.com/drive/1VTv8A6Ac-LvBxsereFyGRfkiLRbJI547?usp=sharing)) ( [ Paper ](https://doi.org/10.1049/tje2.12303))
129
+ - RL S.A.R.S.A ([ Colab Demo ](https://colab.research.google.com/drive/1q9hon3jFf8xVCw4idxhu7goLREKbQ6N3?usp=sharing)) ( [ Paper ](https://doi.org/10.1049/tje2.12303))
130
+ - Ruin & Recreate ([ Colab Demo ](https://colab.research.google.com/drive/18uPEZqwOZa07YdVoNht_VMH3SGhLBo-A?usp=sharing)) ( [ Paper ](https://doi.org/10.1006/jcph.1999.6413))
131
+ - Scatter Search ([ Colab Demo ](https://colab.research.google.com/drive/115Ql6KegvOjlNUUfsbY4fA8Vab-db26N?usp=sharing)) ( [ Paper ](https://doi.org/10.1111/j.1540-5915.1977.tb01074.x))
132
+ - Simulated Annealing ([ Colab Demo ](https://colab.research.google.com/drive/10Th0yLaAeSqp9FhYB0H00e4sXTbg7Jp2?usp=sharing)) ( [ Paper ](https://www.jstor.org/stable/1690046))
133
+ - SOM (Self Organizing Maps) ([ Colab Demo ](https://colab.research.google.com/drive/1-ZwSFnXf1_kCeY_p3SC3N21T8QeSWsg6?usp=sharing)) ( [ Paper ](https://arxiv.org/pdf/2201.07208.pdf))
134
+ - Space Filling Curve (Hilbert) ([ Colab Demo ](https://colab.research.google.com/drive/1FXzWrUBjdbJBngRFHv66CZw5pFN3yOs8?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/0960-0779(95)80046-J))
135
+ - Space Filling Curve (Morton) ([ Colab Demo ](https://colab.research.google.com/drive/1Z13kXyi7eaNQbBUmhvwuQjY4VaUfGVbs?usp=sharing)) ( [ Paper ](https://dominoweb.draco.res.ibm.com/reports/Morton1966.pdf))
136
+ - Space Filling Curve (Sierpinski) ([ Colab Demo ](https://colab.research.google.com/drive/1w-Zptd5kOryCwvQ0qSNBNhPXC61c8QXF?usp=sharing)) ( [ Paper ](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.67.9061&rep=rep1&type=pdf))
137
+ - Spectral Seriation Initializer ([ Colab Demo ](https://colab.research.google.com/drive/1lG0pYxASU75qh0jK-A_eMCoPpCWv0I4V?usp=sharing)) ( [ Paper ](https://doi.org/10.1137/S0097539795285771))
138
+ - Stochastic Hill Climbing ([ Colab Demo ](https://colab.research.google.com/drive/1_wP6vg4JoRHGItGxEtXcf9Y9OuuoDlDl?usp=sharing)) ( [ Paper ](http://aima.cs.berkeley.edu/))
139
+ - Sweep ([ Colab Demo ](https://colab.research.google.com/drive/1AkAn4yeomAp6POBslk3Asd6OrxfBrHT7?usp=sharing)) ( [ Paper ](http://dx.doi.org/10.1287/opre.22.2.340))
140
+ - Tabu Search ([ Colab Demo ](https://colab.research.google.com/drive/1SRwQrBaxkKk18SDvQPy--0yNRWdl6Y1G?usp=sharing)) ( [ Paper ](https://doi.org/10.1287/ijoc.1.3.190))
141
+ - Truncated Branch & Bound ([ Colab Demo ](https://colab.research.google.com/drive/16m72PrBZN8mWMCer12dgsStcNGs4DVdQ?usp=sharing)) ( [ Paper ](https://research.ijcaonline.org/volume65/number5/pxc3885866.pdf))
142
+ - Twice-Around the Tree Algorithm ([ Colab Demo ](https://colab.research.google.com/drive/1tf5tc5DxvEUc89JaaFgzmK1TtD1e4fkc?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/0196-6774(84)90029-4))
143
+ - Variable Neighborhood Search ([ Colab Demo ](https://colab.research.google.com/drive/1yMWjYuurzpcijsCFDTA76fAwJmSaDkZq?usp=sharing)) ( [ Paper ](https://doi.org/10.1016/S0305-0548(97)00031-2))
144
+ - Zero Suffix Method ([ Colab Demo ](https://colab.research.google.com/drive/1IXiZ8eQThElMFK-ATD1GoUyKC02LI3ij?usp=sharing)) ( [ Paper ](https://www.m-hikari.com/ijcms-2011/21-24-2011/sudhakarIJCMS21-24-2011.pdf))
145
+
146
+ # Single Objective Optimization
147
+ For Single Objective Optimization, try [pyMetaheuristic](https://github.com/Valdecy/pyMetaheuristic)
148
+
149
+ # Multiobjective Optimization or Many Objectives Optimization
150
+ For Multiobjective Optimization or Many Objectives Optimization, try [pyMultiobjective](https://github.com/Valdecy/pyMultiobjective)
@@ -0,0 +1,5 @@
1
+ """Top-level package for pyCombinatorial."""
2
+
3
+ from .web import web_app, web_stop
4
+
5
+ __all__ = ['web_app', 'web_stop']
@@ -1,59 +1,61 @@
1
- from .aco import ant_colony_optimization
2
- from .alns import adaptive_large_neighborhood_search
3
- from .bb import branch_and_bound
4
- from .bf import brute_force_analysis
5
- from .bhk import bellman_held_karp_exact_algorithm
6
- from .brkga import biased_random_key_genetic_algorithm
7
- from .bt import bitonic_tour
8
- from .christofides import christofides_algorithm
9
- from .conc_hull import concave_hull_algorithm
10
- from .conv_hull import convex_hull_algorithm
11
- from .cw import clarke_wright_savings
12
- from .eln import elastic_net_tsp
13
- from .eo import extremal_optimization
14
- from .frnn import fixed_radius_nn
15
- from .ga import genetic_algorithm
16
- from .grasp import greedy_randomized_adaptive_search_procedure
17
- from .gksp import greedy_karp_steele_patching
18
- from .hpn import hopfield_network_tsp
19
- from .ins_c import cheapest_insertion
20
- from .ins_f import farthest_insertion
21
- from .ins_n import nearest_insertion
22
- from .ins_r import random_insertion
23
- from .ksp import karp_steele_patching
24
- from .lns import large_neighborhood_search
25
- from .mf import multifragment_heuristic
26
- from .nn import nearest_neighbour
27
- from .opt_2 import local_search_2_opt
28
- from .opt_2_5 import local_search_2h_opt
29
- from .opt_3 import local_search_3_opt
30
- from .opt_4 import local_search_4_opt
31
- from .opt_5 import local_search_5_opt
32
- from .opt_or import local_search_or_opt
33
- from .opt_2s import local_search_2_opt_stochastic
34
- from .opt_2_5s import local_search_2h_opt_stochastic
35
- from .opt_3s import local_search_3_opt_stochastic
36
- from .opt_4s import local_search_4_opt_stochastic
37
- from .opt_5s import local_search_5_opt_stochastic
38
- from .rl_double_ql import double_q_learning
39
- from .rl_ql import q_learning
40
- from .rl_sarsa import sarsa
41
- from .rr import ruin_and_recreate
42
- from .rss import randomized_spectral_seriation
43
- from .rt import random_tour
44
- from .s_gui import guided_search
45
- from .s_itr import iterated_search
46
- from .s_sct import scatter_search
47
- from .s_shc import stochastic_hill_climbing
48
- from .s_tabu import tabu_search
49
- from .s_vns import variable_neighborhood_search
50
- from .sa import simulated_annealing_tsp
51
- from .som import self_organizing_maps
52
- from .spfc_h import space_filling_curve_h
53
- from .spfc_m import space_filling_curve_m
54
- from .spfc_s import space_filling_curve_s
55
- from .ssi import spectral_seriation_initializer
56
- from .swp import sweep
57
- from .tat import tat_algorithm
58
- from .tbb import truncated_branch_and_bound
59
- from .zs import zero_suffix_method
1
+ from .aco import ant_colony_optimization
2
+ from .alns import adaptive_large_neighborhood_search
3
+ from .bb import branch_and_bound
4
+ from .bf import brute_force_analysis
5
+ from .bhk import bellman_held_karp_exact_algorithm
6
+ from .brkga import biased_random_key_genetic_algorithm
7
+ from .bt import bitonic_tour
8
+ from .christofides import christofides_algorithm
9
+ from .conc_hull import concave_hull_algorithm
10
+ from .conv_hull import convex_hull_algorithm
11
+ from .cw import clarke_wright_savings
12
+ from .eln import elastic_net_tsp
13
+ from .eo import extremal_optimization
14
+ from .frnn import fixed_radius_nn
15
+ from .ga import genetic_algorithm
16
+ from .ga_eax import genetic_algorithm_edge_assembly_crossover
17
+ from .grasp import greedy_randomized_adaptive_search_procedure
18
+ from .gksp import greedy_karp_steele_patching
19
+ from .hpn import hopfield_network_tsp
20
+ from .ins_c import cheapest_insertion
21
+ from .ins_f import farthest_insertion
22
+ from .ins_n import nearest_insertion
23
+ from .ins_r import random_insertion
24
+ from .ksp import karp_steele_patching
25
+ from .lns import large_neighborhood_search
26
+ from .lkh import lin_kernighan_helsgaun
27
+ from .mf import multifragment_heuristic
28
+ from .nn import nearest_neighbour
29
+ from .opt_2 import local_search_2_opt
30
+ from .opt_2_5 import local_search_2h_opt
31
+ from .opt_3 import local_search_3_opt
32
+ from .opt_4 import local_search_4_opt
33
+ from .opt_5 import local_search_5_opt
34
+ from .opt_or import local_search_or_opt
35
+ from .opt_2s import local_search_2_opt_stochastic
36
+ from .opt_2_5s import local_search_2h_opt_stochastic
37
+ from .opt_3s import local_search_3_opt_stochastic
38
+ from .opt_4s import local_search_4_opt_stochastic
39
+ from .opt_5s import local_search_5_opt_stochastic
40
+ from .rl_double_ql import double_q_learning
41
+ from .rl_ql import q_learning
42
+ from .rl_sarsa import sarsa
43
+ from .rr import ruin_and_recreate
44
+ from .rss import randomized_spectral_seriation
45
+ from .rt import random_tour
46
+ from .s_gui import guided_search
47
+ from .s_itr import iterated_search
48
+ from .s_sct import scatter_search
49
+ from .s_shc import stochastic_hill_climbing
50
+ from .s_tabu import tabu_search
51
+ from .s_vns import variable_neighborhood_search
52
+ from .sa import simulated_annealing_tsp
53
+ from .som import self_organizing_maps
54
+ from .spfc_h import space_filling_curve_h
55
+ from .spfc_m import space_filling_curve_m
56
+ from .spfc_s import space_filling_curve_s
57
+ from .ssi import spectral_seriation_initializer
58
+ from .swp import sweep
59
+ from .tat import tat_algorithm
60
+ from .tbb import truncated_branch_and_bound
61
+ from .zs import zero_suffix_method