質問編集履歴
1
レイアウトを一部修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -5,8 +5,9 @@
|
|
5
5
|
toolbox.register("attribute", random.uniform, 100,3000)
|
6
6
|
```
|
7
7
|
実行結果を見ると、3や15と、遺伝子に100以下の値が出てきてしまいます。
|
8
|
+
|
9
|
+
実行結果 (遺伝子は29個)
|
8
10
|
```
|
9
|
-
実行結果 (遺伝子は29個)
|
10
11
|
最も良い個体は [2050.4287868351553, 1729.0439433402744, 2649.420272551191,
|
11
12
|
1825.285090217696, 1839.7237587761172, 2044.6842382330624, 239.95656726198487,
|
12
13
|
3, 1402.2053890014188, 15, 914.2818050559725, 2367.5929562831743,
|
@@ -106,7 +107,6 @@
|
|
106
107
|
)**2
|
107
108
|
|
108
109
|
|
109
|
-
#(x,y)=(1,2)で最小になるはず。これを遺伝的アルゴリズムで求める
|
110
110
|
return object,
|
111
111
|
|
112
112
|
|
@@ -114,10 +114,10 @@
|
|
114
114
|
#交叉、選択、突然変異などには、DEAPのToolbox内にある関数を利用
|
115
115
|
toolbox = base.Toolbox()
|
116
116
|
|
117
|
-
#random.uniformの別名をattribute関数として設定。各個体の遺伝子の中身を決める関数(各遺伝子は
|
117
|
+
#random.uniformの別名をattribute関数として設定。各個体の遺伝子の中身を決める関数(各遺伝子は100~3000のランダムな値)
|
118
118
|
toolbox.register("attribute", random.uniform, 100,3000)
|
119
119
|
|
120
|
-
#individualという関数を設定。それぞれの個体に含まれる2個の遺伝子をattributeにより決めるよ、ということ。
|
120
|
+
#individualという関数を設定。それぞれの個体に含まれる29個の遺伝子をattributeにより決めるよ、ということ。
|
121
121
|
toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attribute, 29)
|
122
122
|
|
123
123
|
#集団の個体数を設定するための関数を準備
|
@@ -126,9 +126,9 @@
|
|
126
126
|
#トーナメント方式で次世代に子を残す親を選択(tornsizeは各トーナメントに参加する個体の数)
|
127
127
|
toolbox.register("select", tools.selTournament, tournsize=5)
|
128
128
|
|
129
|
-
#交叉関数の設定。
|
129
|
+
#交叉関数の設定。
|
130
130
|
toolbox.register("mate", tools.cxOnePoint)
|
131
|
-
#突然変異関数の設定。
|
131
|
+
#突然変異関数の設定。
|
132
132
|
toolbox.register("mutate", tools.mutUniformInt,low=0,up=20,indpb=0.2)
|
133
133
|
|
134
134
|
#評価したい関数の設定(目的関数のこと)
|