現在、私は自分がやっていることを達成するための最善の方法の周りに頭を抱えようとしています。私は以下のパンダを持っています。Python:遺伝的アルゴリズムでナップザック最適化を解く?
Player Pos Salary My Proj
0 James Harden PG/SG 10600 51.94472302
1 Jose Juan Barea PG/SG 4200 22.20823452
2 Stephen Curry PG/SG 8700 42.95809374
3 Eric Gordon SG 5400 27.45218158
4 Nikola Vucevic C 7400 37.00103015
5 Wilson Chandler SF/PF 4900 24.83866589
これは、毎日約200人のプレイヤーに起こります。
$ 50,000未満 1 PG、1 SG、1 SF、1 PF、1 C、1 G、1 F、および1を使用すると、次の制約に従ったドラフトで最大20のラインナップを満たす最適化を実行する必要があります。 1 UTIL
あなたが見ることができるように、ほとんどのプレイヤーは、ポジション列の "/"文字で示される単一のラインナップで複数のポジションを記入することができます。 GポジションはPGまたはSGのいずれかで満たされ、FポジションはSFまたはPFで満たされ、UTILポジションはすべてのポジションを受け入れることができます。
最初は、ナップザックのブルートフォースアプローチを使用しましたが、これは最もシンプルなようでしたが、文字通り何兆もの組み合わせがあるため、本当に本当に必要なことをすることなく過度の時間がかかります。
代わりに私はこれについて多くの講義ビデオを見てきたので、遺伝的アプローチを試してみることにしました。しかし、私は、この問題を一般的な1/0ナップザックアプローチでどのように設定するのか分かりません。典型的なナップザックのアプローチでは、ちょうど重さと値があります。私の体重と価値は選手の給料とその予想される得点です。しかし、私はここにもプレイヤーの位置を含める必要があります。これは、1人のプレイヤーにとって1つまたは時には2つの異なる可能性があります。
これは理にかなっていて、基本的にはPython 3の中でこの作業に取り掛かる方法についていくつかの洞察を求めています。
が完全に遺伝的アルゴリズムの基本を理解し、良い例here: