質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

なぜかプログラムが動きません..

yutaroooooo
yutaroooooo

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2回答

0評価

0クリップ

55閲覧

投稿2019/12/17 23:55

編集2022/01/12 10:58
#必要なライブラリ,モジュールのインポートーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー import random import random import numpy from deap import algorithms from deap import base from deap import creator from deap import tools #適応度の定義ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー creator.create("FitnessMax", base.Fitness, weights=(1.0,)) #個体の定義ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー """元々遺伝子を保存している個体listに,適応度fitnessというメンバ変数を追加してIndividualクラスを作成""" creator.create("Individual", numpy.ndarray, fitness=creator.FitnessMax) toolbox = base.Toolbox() #1,個体の取りうる値の範囲ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー n_gene = 100 #個体内の遺伝子の個数 min_ind = numpy.ones(n_gene) * -1.0 #取りうる範囲のmax max_ind = numpy.ones(n_gene) * 1.0 #min #個体を生成する関数の定義ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー def create_ind_uniform(min_ind, max_ind): ind = [] for min, max in zip(min_ind, max_ind): ind.append(random.uniform(min, max)) return ind #遺伝子,固体,世代を設定する関数の作成ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー toolbox.register("create_ind", create_ind_uniform, min_ind, max_ind) toolbox.register("individual", tools.initIterate, creator.Individual, toolbox.create_ind) toolbox.register("population", tools.initRepeat, list, toolbox.individual) #2,目的関数の設定ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー def evalOneMax(individual): return sum(individual) #交叉関数の再定義ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー def cxTwoPointCopy(ind1, ind2): size = len(ind1) cxpoint1 = random.randint(1, size) cxpoint2 = random.randint(1, size - 1) if cxpoint2 >= cxpoint1: cxpoint2 += 1 else: # Swap the two cx points cxpoint1, cxpoint2 = cxpoint2, cxpoint1 ind1[cxpoint1:cxpoint2], ind2[cxpoint1:cxpoint2] = ind2[cxpoint1:cxpoint2].copy(), ind1[cxpoint1:cxpoint2].copy() return ind1, ind2 #突然変異関数の再定義ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー def mutUniformDbl(individual, min_ind, max_ind, indpb): size = len(individual) for i, min, max in zip(xrange(size), min_ind, max_ind): if random.random() < indpb: individual[i] = random.uniform(min, max) return individual, #目的関数,交叉,突然変異,選択を求める関数を読み替えるーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー toolbox.register("evaluate", evalOneMax) toolbox.register("mate", cxTwoPointCopy) toolbox.register("mutate", mutUniformDbl, min_ind=min_ind, max_ind=max_ind, indpb=0.05) toolbox.register("select", tools.selTournament, tournsize=3) #3,メイン関数ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー def main(): random.seed(64) pop = toolbox.population(n=300) hof = tools.HallOfFame(1, similar=numpy.array_equal) stats = tools.Statistics(lambda ind: ind.fitness.values) stats.register("avg", numpy.mean) stats.register("std", numpy.std) stats.register("min", numpy.min) stats.register("max", numpy.max) algorithms.eaSimple(pop, toolbox, cxpb=0.5, mutpb=0.2, ngen=40, stats=stats,halloffame=hof) return pop, stats, hof #ここがおかしい?? if __name__ == "__main__": main() TypeError: Both weights and assigned values must be a sequence of numbers when assigning to values of <class 'deap.creator.FitnessMax'>. Currently assigning value(s) -1.3549805685970155 of <class 'numpy.float64'> to a fitness with weights (1.0,).

長文失礼します.プログラムが何故か動きません.おそらく最後の二行に問題があると思うのですがどなたか助けていただけないでしょうか.

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

y_waiwai
y_waiwai

2019/12/17 23:59

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
yutaroooooo
yutaroooooo

2019/12/18 00:05

アドバイスありがとうございます. すぐに編集します!!
y_waiwai
y_waiwai

2019/12/18 00:12

おお、すばらしい ありがとうございます あと、エラー・メッセージはでてきた全文を提示しただければよろしいかと
yutaroooooo
yutaroooooo

2019/12/18 00:28

何度も申し訳ございません.. すぐに編集します!!

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。