機械学習と深層学習 Python によるシミュレーション kpga.py


機械学習と深層学習 Pythonによるシミュレーション の第3章の遺伝的アルゴリズムのコード kpga.pyについて、 わかりやすく書き換えてみました。

環境

  • Python 3.6.5 Anaconda

コード

変数・定数名をだいたい変えています。 そして、テスト用ファイルを作らなくても自動的に荷物を生成するように init_parcel を変更しています。 また、 eval_fit で重さの合計値も出力するよう変更しています。

eval_fit は適合度を計算する関数という説明が 書籍 にありましたが、 適合度というのは合計価値のことですね。 それを下のコードでは合計重量と一緒に返しています。

荷物をクラスにするなどまだまだ変更できるところはありますが、とりあえずここまでです。

荷物の組み合わせは何度も作成されますが、前回よりも必ずスコアが良くなるというわけではないですね。 ただ、平均は上がっていきます。

計画的に計算するアルゴリズムではなく、乱数で進めていくアルゴリズムなので、 数値によっては ng_pool の中に候補がひとつしかないこともあります。 その場合はエラー終了します。 候補がひとつもなければループから抜け出せなくなります。