Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 397f718

Browse files
committed
working on TSP using simulated annealing
1 parent 279e101 commit 397f718

13 files changed

+23852
-155
lines changed

.search_2.py.swp

28 KB
Binary file not shown.

A_star_vs_RBFS.html

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7514,7 +7514,7 @@
75147514
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
75157515
</div>
75167516
<div class="jp-InputArea jp-Cell-inputArea">
7517-
<div class="jp-InputPrompt jp-InputArea-prompt">In [233]:</div>
7517+
<div class="jp-InputPrompt jp-InputArea-prompt">In [2]:</div>
75187518
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
75197519
<div class="cm-editor cm-s-jupyter">
75207520
<div class="highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">search_2</span> <span class="kn">import</span> <span class="o">*</span>
@@ -7550,7 +7550,9 @@
75507550
<span class="k">def</span> <span class="nf">astar_misplaced_tiles</span><span class="p">(</span><span class="n">problem</span><span class="p">):</span> <span class="k">return</span> <span class="n">astar_search</span><span class="p">(</span><span class="n">problem</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">problem</span><span class="o">.</span><span class="n">h1</span><span class="p">)</span>
75517551
<span class="k">def</span> <span class="nf">recursive_best_first_misplaced_tiles</span><span class="p">(</span><span class="n">problem</span><span class="p">):</span> <span class="k">return</span> <span class="n">recursive_best_first_search</span><span class="p">(</span><span class="n">problem</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">problem</span><span class="o">.</span><span class="n">h1</span><span class="p">)</span>
75527552
<span class="k">def</span> <span class="nf">astar_manhatten</span><span class="p">(</span><span class="n">problem</span><span class="p">):</span> <span class="k">return</span> <span class="n">astar_search</span><span class="p">(</span><span class="n">problem</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">problem</span><span class="o">.</span><span class="n">h2</span><span class="p">)</span>
7553+
<span class="k">def</span> <span class="nf">astar_manhatten_with_weight</span><span class="p">(</span><span class="n">problem</span><span class="p">):</span> <span class="k">return</span> <span class="n">astar_search</span><span class="p">(</span><span class="n">problem</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">problem</span><span class="o">.</span><span class="n">h3</span><span class="p">)</span>
75537554
<span class="k">def</span> <span class="nf">recursive_best_first_manhatten</span><span class="p">(</span><span class="n">problem</span><span class="p">):</span> <span class="k">return</span> <span class="n">recursive_best_first_search</span><span class="p">(</span><span class="n">problem</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">problem</span><span class="o">.</span><span class="n">h2</span><span class="p">)</span>
7555+
<span class="k">def</span> <span class="nf">recursive_best_first_manhatten_with_weight</span><span class="p">(</span><span class="n">problem</span><span class="p">):</span> <span class="k">return</span> <span class="n">recursive_best_first_search</span><span class="p">(</span><span class="n">problem</span><span class="p">,</span> <span class="n">h</span><span class="o">=</span><span class="n">problem</span><span class="o">.</span><span class="n">h3</span><span class="p">)</span>
75547556

75557557

75567558
<span class="n">e1</span> <span class="o">=</span> <span class="n">EightPuzzle</span><span class="p">((</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">8</span><span class="p">))</span>
@@ -7559,12 +7561,12 @@
75597561
<span class="n">e4</span> <span class="o">=</span> <span class="n">EightPuzzle</span><span class="p">((</span><span class="mi">7</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
75607562
<span class="n">e5</span> <span class="o">=</span> <span class="n">EightPuzzle</span><span class="p">((</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
75617563

7562-
75637564
<span class="n">report</span><span class="p">([</span><span class="n">breadth_first_search</span><span class="p">,</span>
75647565
<span class="n">uniform_cost_search</span><span class="p">,</span>
75657566
<span class="n">recursive_best_first_manhatten</span><span class="p">,</span>
7566-
<span class="n">astar_manhatten</span><span class="p">],</span> <span class="p">[</span><span class="n">e1</span><span class="p">,</span> <span class="n">e2</span><span class="p">,</span> <span class="n">e3</span><span class="p">,</span> <span class="n">e4</span><span class="p">,</span> <span class="n">e5</span><span class="p">])</span>
7567-
7567+
<span class="n">recursive_best_first_manhatten_with_weight</span><span class="p">,</span>
7568+
<span class="n">astar_manhatten</span><span class="p">,</span>
7569+
<span class="n">astar_manhatten_with_weight</span><span class="p">],</span> <span class="p">[</span><span class="n">e1</span><span class="p">,</span> <span class="n">e2</span><span class="p">,</span> <span class="n">e3</span><span class="p">,</span> <span class="n">e4</span><span class="p">,</span> <span class="n">e5</span><span class="p">])</span>
75687570
</pre></div>
75697571
</div>
75707572
</div>
@@ -7601,6 +7603,14 @@
76017603
326,744 nodes | 126,504 goal | 27 cost | 126,530 actions | EightPuzzle((8, 6, 7, 2, 5, 4, 3, 0, 1),
76027604
4,151,698 nodes |1,554,027 goal | 103 cost |1,554,125 actions | TOTAL
76037605

7606+
recursive_best_first_manhatten_with_weight:
7607+
15 nodes | 6 goal | 5 cost | 10 actions | EightPuzzle((1, 4, 2, 0, 7, 5, 3, 6, 8),
7608+
2,409,806 nodes | 901,511 goal | 24 cost | 901,534 actions | EightPuzzle((1, 2, 3, 4, 5, 6, 7, 8, 0),
7609+
20,658,284 nodes |7,566,616 goal | 25 cost |7,566,640 actions | EightPuzzle((4, 0, 2, 5, 1, 3, 7, 8, 6),
7610+
588,906 nodes | 211,503 goal | 30 cost | 211,532 actions | EightPuzzle((7, 2, 4, 5, 0, 6, 8, 3, 1),
7611+
597,734 nodes | 233,773 goal | 33 cost | 233,805 actions | EightPuzzle((8, 6, 7, 2, 5, 4, 3, 0, 1),
7612+
24,254,745 nodes |8,913,409 goal | 117 cost |8,913,521 actions | TOTAL
7613+
76047614
astar_manhatten:
76057615
15 nodes | 6 goal | 5 cost | 10 actions | EightPuzzle((1, 4, 2, 0, 7, 5, 3, 6, 8),
76067616
3,614 nodes | 1,349 goal | 22 cost | 1,370 actions | EightPuzzle((1, 2, 3, 4, 5, 6, 7, 8, 0),
@@ -7609,6 +7619,14 @@
76097619
11,669 nodes | 4,417 goal | 27 cost | 4,443 actions | EightPuzzle((8, 6, 7, 2, 5, 4, 3, 0, 1),
76107620
31,503 nodes | 11,868 goal | 103 cost | 11,966 actions | TOTAL
76117621

7622+
astar_manhatten_with_weight:
7623+
15 nodes | 6 goal | 5 cost | 10 actions | EightPuzzle((1, 4, 2, 0, 7, 5, 3, 6, 8),
7624+
1,720 nodes | 633 goal | 24 cost | 656 actions | EightPuzzle((1, 2, 3, 4, 5, 6, 7, 8, 0),
7625+
1,908 nodes | 709 goal | 25 cost | 733 actions | EightPuzzle((4, 0, 2, 5, 1, 3, 7, 8, 6),
7626+
1,312 nodes | 489 goal | 30 cost | 518 actions | EightPuzzle((7, 2, 4, 5, 0, 6, 8, 3, 1),
7627+
2,519 nodes | 935 goal | 29 cost | 963 actions | EightPuzzle((8, 6, 7, 2, 5, 4, 3, 0, 1),
7628+
7,474 nodes | 2,772 goal | 113 cost | 2,880 actions | TOTAL
7629+
76127630
</pre>
76137631
</div>
76147632
</div>
@@ -7621,7 +7639,8 @@
76217639
</div>
76227640
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
76237641
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
7624-
<p>We can see that A* expands significantly less nodes than RBFS. This is because A* maintains a queue which prevents it from needlessly re-expanding nodes. However, we should look at the time taken for each algorithm.</p>
7642+
<p>We can see that A* expands significantly less nodes than RBFS. This is because A* maintains a queue which prevents it from needlessly re-expanding nodes. AIMA asks us to consider what will happen if we add a random constant to the heuristic in RBFS. To get a larger view of what happens to both A* and RBFS when we weight the heuristic I will apply a weighting to both. From the above results we can see that the situation with RBFS is not clear cut. Sometimes we exapnd significantly more nodes and sometimes we expand significantly less. With A* we get the usual success story.</p>
7643+
<p>However, we should look at the time taken for each of the algorithms.</p>
76257644
</div>
76267645
</div>
76277646
</div>
@@ -7630,7 +7649,7 @@
76307649
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
76317650
</div>
76327651
<div class="jp-InputArea jp-Cell-inputArea">
7633-
<div class="jp-InputPrompt jp-InputArea-prompt">In [234]:</div>
7652+
<div class="jp-InputPrompt jp-InputArea-prompt">In [4]:</div>
76347653
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
76357654
<div class="cm-editor cm-s-jupyter">
76367655
<div class="highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">time</span>
@@ -7641,11 +7660,23 @@
76417660
<span class="nb">print</span><span class="p">(</span><span class="s2">"Time taken to execute RBFS: "</span><span class="p">,</span> <span class="n">t1</span> <span class="o">-</span> <span class="n">t0</span><span class="p">)</span>
76427661
<span class="nb">print</span><span class="p">(</span><span class="s2">"Execution time per node: "</span><span class="p">,</span> <span class="p">(</span><span class="n">t1</span> <span class="o">-</span> <span class="n">t0</span><span class="p">)</span> <span class="o">/</span> <span class="mi">746</span><span class="p">,</span><span class="mi">166</span><span class="p">)</span>
76437662

7663+
<span class="n">t0</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
7664+
<span class="n">recursive_best_first_manhatten_with_weight</span><span class="p">(</span><span class="n">e4</span><span class="p">)</span>
7665+
<span class="n">t1</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
7666+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Time taken to execute weighted-RBFS: "</span><span class="p">,</span> <span class="n">t1</span> <span class="o">-</span> <span class="n">t0</span><span class="p">)</span>
7667+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Execution time per node: "</span><span class="p">,</span> <span class="p">(</span><span class="n">t1</span> <span class="o">-</span> <span class="n">t0</span><span class="p">)</span> <span class="o">/</span> <span class="mi">588</span><span class="p">,</span><span class="mi">906</span><span class="p">)</span>
7668+
76447669
<span class="n">t0</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
76457670
<span class="n">astar_manhatten</span><span class="p">(</span><span class="n">e4</span><span class="p">)</span>
76467671
<span class="n">t1</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
76477672
<span class="nb">print</span><span class="p">(</span><span class="s2">"Time taken to execute A*: "</span><span class="p">,</span> <span class="n">t1</span> <span class="o">-</span> <span class="n">t0</span><span class="p">)</span>
76487673
<span class="nb">print</span><span class="p">(</span><span class="s2">"Execution time per node: "</span><span class="p">,</span> <span class="p">(</span><span class="n">t1</span> <span class="o">-</span> <span class="n">t0</span><span class="p">)</span> <span class="o">/</span> <span class="mi">10</span><span class="p">,</span><span class="mi">832</span><span class="p">)</span>
7674+
7675+
<span class="n">t0</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
7676+
<span class="n">astar_manhatten_with_weight</span><span class="p">(</span><span class="n">e4</span><span class="p">)</span>
7677+
<span class="n">t1</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
7678+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Time taken to execute weighted-A*: "</span><span class="p">,</span> <span class="n">t1</span> <span class="o">-</span> <span class="n">t0</span><span class="p">)</span>
7679+
<span class="nb">print</span><span class="p">(</span><span class="s2">"Execution time per node: "</span><span class="p">,</span> <span class="p">(</span><span class="n">t1</span> <span class="o">-</span> <span class="n">t0</span><span class="p">)</span> <span class="o">/</span> <span class="mi">1</span><span class="p">,</span><span class="mi">312</span><span class="p">)</span>
76497680
</pre></div>
76507681
</div>
76517682
</div>
@@ -7658,10 +7689,14 @@
76587689
<div class="jp-OutputArea-child">
76597690
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
76607691
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
7661-
<pre>Time taken to execute RBFS: 7.054435729980469
7662-
Execution time per node: 0.009456348163512693 166
7663-
Time taken to execute A*: 0.09963512420654297
7664-
Execution time per node: 0.009963512420654297 832
7692+
<pre>Time taken to execute RBFS: 7.069175720214844
7693+
Execution time per node: 0.009476106863558771 166
7694+
Time taken to execute weighted-RBFS: 5.464362859725952
7695+
Execution time per node: 0.009293134115180192 906
7696+
Time taken to execute A*: 0.08570456504821777
7697+
Execution time per node: 0.008570456504821777 832
7698+
Time taken to execute weighted-A*: 0.008708953857421875
7699+
Execution time per node: 0.008708953857421875 312
76657700
</pre>
76667701
</div>
76677702
</div>

0 commit comments

Comments
 (0)