質問編集履歴

1

レイアウトを一部修正しました。

2022/09/27 09:58

投稿

r_2000
r_2000

スコア3

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関数として設定。各個体の遺伝子の中身を決める関数(各遺伝子は-50~50のランダムな値)
117
+ #random.uniformの別名をattribute関数として設定。各個体の遺伝子の中身を決める関数(各遺伝子は1003000のランダムな値)
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
- #突然変異関数の設定。indpbは各遺伝子が突然変異を起こす確率。変異は0~20の整数で変異
131
+ #突然変異関数の設定。
132
132
  toolbox.register("mutate", tools.mutUniformInt,low=0,up=20,indpb=0.2)
133
133
 
134
134
  #評価したい関数の設定(目的関数のこと)