Open1
生産計画を遺伝的アルゴリズムで実装したいぞー
生産予定組むのに使えるアルゴリズムを探していたけれど、これだな
DPを考えてたけれど、最適な漸化式を考えるのは実用的じゃない。と言うか俺には無理だ。
加えて、準最適解でも問題ないというファジーな前提があるため、この手法が最適解だなぁ
本腰入れて勉強してみよう
そして、実際に動くコードをのっけてくれている御方に感謝です
これ見なかったら、動くイメージがつかめずに踏み出せなかった!
ざっくり理解
- 個体生成→適応度評価→交叉→変異をループさせるアルゴリズム
- 評価方法、変異、遺伝子表記方法等のパラメータをどう弄るのが肝
- とりま何世代か作ってみて最強個体を採用するという力業感がすごい好み
想定している実装前提とか
- 最大製造バッチを固定とするGeneを作成
- 秤量工程がボトルネックであることを利用
- 最適化対象
- 段替え回数の最小化
- 製造品種数が多いほどペナルティ
- 製造バッチの最小化
- ブランク数が少ないとペナルティ
- 在庫量の最小化
- これはブランク数評価で勝手に最適化されていく気がする
- 製品特性の類似
- 似通った組成の製品を連続して製造できない場合はペナルティ
- 段替え回数の最小化
- 使用装置の制限についての評価方法を要検討
- 特定装置に偏ると製造不可となるためNG
- Geneベースに装置ごとの上限を超えずに分配の可否を評価する
- 装置固定の製品
- リストから除去
- 各装置の上限を引く
- 残りの製品、バッチ数の辞書作って、バッチ数を大きい順にソート
- 大きい順に、装置の上限が大きい箇所に順次埋め、上限を超える場合はペナルティ
- 装置固定の製品
- 最適にはならないので、数パターン出力し、最終的には人間が手を加える
とりあえず、現行の工程管理者に組み方を聞いてみるかな
ペナルティきつすぎてうまく解が出ない気もするが、まぁやるだけやってみよう
最悪工程計画補助というだけでもいいしね