集合知プログラミング5章のサンプルプログラム修正パッチ

4章に続いて5章でも、サンプルプログラムをそのまま起動させるとエラーが発生してしまうので、修正パッチを作成しました。
とはいっても、遺伝的アルゴリズムの部分だけですが…。

diff --git a/ColIntel/chapter5/optimization.py b/ColIntel/chapter5/optimization.py
index 3d00174..90b8419 100755
--- a/ColIntel/chapter5/optimization.py
+++ b/ColIntel/chapter5/optimization.py
@@ -12,7 +12,7 @@ people = [('Seymour','BOS'),
 destination='LGA'
 
 flights={}
-# 
+# Read flight schedule file
 for line in file('schedule.txt'):
   origin,dest,depart,arrive,price=line.strip().split(',')
   flights.setdefault((origin,dest),[])
@@ -156,6 +156,8 @@ def geneticoptimize(domain,costf,popsize=50,step=1,
       return vec[0:i]+[vec[i]-step]+vec[i+1:] 
     elif vec[i]<domain[i][1]:
       return vec[0:i]+[vec[i]+step]+vec[i+1:]
+    else:
+      return vec
   
   # Crossover Operation
   def crossover(r1,r2):

ざっくりな解説

mutate関数ではNoneを返してはならないのに、random.random()<0.5かつvec[i]