CGIの勉強と、せっかく作ったプログラムの有効活用ということで、「(旧武器)強化コスト最小化シミュレーター」なるものを作ってみました。
シミュレーター:http://cgi.dodomore.tokyo/saisyo/index.py
授業での発表資料:https://docs.google.com/presentation/d/1LzT3iWYLAnwWwqNN3XQgcJs5X8F0cZGWo1n5JdvBe4M/edit?usp=sharing
ソースコードなど:https://drive.google.com/file/d/0B5sunNw5o5tgVk91ZU8yMS0wRG8/view?usp=sharing
目次
なにこれ
武器を強化する際に、各強化値の時どの補助アイテムを使って強化すればもっとも安く+10まで強化できるかを計算します。
注意
作者の練習です。バグとかほとんど取ってません。運が悪いと(というかよく)とんでもない結果が出ます。あと結果が出るまでに1分前後かかります。
うまく動かねえぞゴルァ!、とか、結果絶対間違ってるだろ使って損したぞクソ野郎!、とか文句言われても知りません。時間があればちょっとは修正するかも
※追記
チューニングしてだいぶましな結果が出るようになりました。まだおかしなところはありますが、参考にはなるかも
使い方
- まず、シミュレートしたい武器のレアリティを選びます
- 「グラインダーの価格」は、グラインダー1つをどの価格に換算するか選んでください。グラインダー余ってるしいらないというなら0,売れば400メセタだから1つあたり400メセタと考える、マイショップで買うから一つ1050メセタ、など自分なりの価格を選んでください
- シミュレートしたい武器の一回の強化にかかる費用、各補助アイテムの価格を入力してください。
- リスク軽減(-2)などの使用量を多くするか、少なめにするか、全く使わないか選んでください。理屈上はこれらのアイテムを使うほどメセタの消費は減ります。
結果の見方は上の通り。
実行すると送信ボタンの下に結果が表示されます。予想コストは+10まで強化するのに必要な予想平均コスト。リスク軽減(-1)、リスク軽減(完全)、強化成功率+5%,+10%,+20%,グラインダーの価格を含んでいます。
各強化値においてどの補助アイテムを使って強化すればいいかを表示します。右が強化成功率アップアイテム、左がリスク軽減アイテムです。上の例では7→8に上げるときは成功率を上げるアイテムは使わず、リスク軽減(-1)だけ使え、という結果になっています。
上のように2-3ではリスク軽減を使い、3-4では使わないという明らかに変な部分もありますが、そこは実際にやる場合には自分で考えて修正お願いします。
言い訳
軽減(-2)や+30%はメセタに変換できないので、コストを最小化すると言っても軽減(-2)と+30%の価値をどう考えるか問題になってきます。そのへんは自分の感覚で良さそうな結果が出るように調整したので、若干テキトーです。
リスク軽減(-2)、+30%を使わない場合の結果についてはそこそこの精度だと思います。
どうやって計算してるの?
遺伝的アルゴリズム使ってます。Pythonのpyevolveというライブラリ使ってます。
すべての補助アイテムの使い方の組み合わせは1兆通りほどありますが、遺伝的アルゴリズムでこのプログラムではだいたい200万通りだけ計算して済ませています。
詳細は上の授業での発表資料をご覧ください
その他
リンクはご自由に
授業での発表内容
ソースコード http://cgi.dodomore.tokyo/saisyo/simu2.tar
このプログラムを作るきっかけとなったアルゴリズムの授業の担当者M先生に感謝申し上げます。