2013年12月14日土曜日

部隊シミュ・武将ランキング機能追加♪ ~兵法成長3の衝撃・最強は難しい><w

今回の更新は、主に以下の2つ。
[ver2.3→ver2.5]
1. 12月の新武将+イベント極江のDB追加
2. 部隊期待値込みランキング生成機能の追加

データベースの更新は毎度のことですが、なかなかに難産だったのが2.の方でして・・・
表からは見えない部分で、かなり大幅なコードの追加・改良をしています。
とは言っても、部隊シミュレータの本体の期待値を求める関数、みたいな骨格部分はいじっていないので多分大丈夫かなとは思っているのですが^^;;
私としては、武将のスキルや部隊全体まで加味してのランキングを作る、というのは戦国IXAの考察を始めてからのひとつの大きな目標だったので結構満足しています♪
Excelでは限界を感じてプログラムを始めたのが、部隊シミュのきっかけでしたから(笑)

     ◆     □     ◆

各種機能選択ボタンの中にある「武将ランキング」というのをクリックすると、
これがメイン画面になります。
計算の仕組みは、武将ランキングを発表しておられたりするので有名なウェーバー様のブログから頂きましたm(_ _)m ですのでウェーバーモードと命名してあります(笑)
※一応ウェーバー様に事前にお断りはしましたが・・・
不快だと思われればいつでも御連絡下さい。消します><w
ウェーバーモードは、部隊4武将のうちの3武将をあらかじめ固定しておいて、残りの1武将を誰にすれば部隊全体の戦闘力が高くなるのか、という視点でのランキングです。
武将ランキングを作るにあたって、どうしても部隊兵法補正やその武将の初期スキルが他の武将にかかる影響等を考えると単体のみでは評価は難しいのですよね。そこで、あらかじめ3武将を固定してその3武将に付加されているスキル等も決め打ちしてある状態を前提条件として作る。
そのうえで、残り1武将を誰にすればいいのか、と考えればその条件下では確実に“正しい”ランキングが作れますからね。
もっとも、このウェーバーモードでは最初の前提3武将の選び方によってランキング結果が上下します。実際にやってみれば分かるのですが・・・
例えば、以下のような条件でランキングを作ってみます。
【条件】
3武将は、大人家康・旧政宗・新島津の3人。
それぞれの空きスロットには、鉄砲隊剛撃LV10と三段撃 烈火LV10が付加されていて、かつ初期スキルも10になっています。
残りひとり加える武将(ランキング武将)の追加スキルも今回は上の3武将と全く同じにして、
剛撃+烈火LV10で初期10の状態。かつ、全武将が兵法振りであるとします。

*補足1*
ステ振設定、では兵法振と攻防極振りをそれぞれ何人ずつにするかの設定ができます。
その場合、例えば兵法1+極振り3だとすると、部隊内でもっともMAXの兵法値が高い武将のみが兵法振りになります。ランキング武将が変われば、当然部隊内の兵法MAXの武将も変化します。
部隊内に同率で兵法MAXの値が同じ武将が居れば、極振りの効果が低い武将が優先的に兵法振りされます。
*補足2*
一番下の対象武将範囲の設定では、チェックを入れたレアリティの武将を条件範囲に設定します。
このランキング生成機能は、内部で膨大な計算量をこなす必要があります。ですので、対象武将を天~序のALLにすると、スペックが低いパソコンだと固まったりするかもしれないです・・・><w
例えば、12スキルが全部有効な場合は、これらのそれぞれの発動パターンは全部で、
最大 2^12 = 4096通り。これを、天から序までの全武将だと500以上の武将に関してそれぞれ計算することになります。単純にこれだけではなく、データベースへのアクセス等もあったりします。
(コードの改良というのは、この辺りの処理を私にできる限り効率化したというのが主です・・・)

長々と補足をしましたが、その結果が以下になります。
色々と色が付いているのは、内部のツールチップを見てください^^;w
今回の設定だと、トップはなんとコスト3.5の新孫市!!
兵法成長3(兵法欄が紫色が成長3、赤色が成長2.5です)の威力は、思ったよりも凄まじいようです・・・そもそもに、孫市自体の初期スキルも相当な強設定ですからね。。
新景勝や明智に目が行きがちですが、状況によってはナンバーワンは違うということです。
今回の設定だと、コスト依存の烈火が入っていてのこの結果ですし(苦笑
では、最強武将は孫市かと言えば単純にそうとも言い切れなくて。
旧政宗を新秀吉にして、鉄剛撃を鉄挟撃にチェンジ。
他は全く同じ設定でシミュレートしますと・・・
景勝と孫市の順位が逆転しているのが分かると思います。
何故入れ替わったのか、騎鉄にかかるスキルが旧政宗よりも新秀吉の方が弱いからですね。
・コスト3.5なので、コスト4に比べてコスト依存スキルである
「三段撃 烈火」「鉄砲隊挟撃」の威力が弱くなる
・兵法成長が高い→部隊兵法値が高くなることによって、全体の発動率の底上げ
この2つの天秤の傾き方によって、どうとでもなるのです。
どういうセッティングをすれば孫市が最強武将になるのか、というのをこういうところから考えていくと、最適なスキルの組み合わせに近づくために必要な傾向が浮かび上がってくると思います。
別に孫市が最強だと言っているわけではありませんよ?
厳密な話をすれば、仮定の置き方や条件によって、ケースバイケースで順位は変わるという事です。今回の騎鉄のテーマだと、トップ集団が孫市・景勝・光秀だというのは確かでしょう。

ちなみに、上の結果を一応通常モードの部隊シミュレータで確認しておきます。
まずは最初の設定、3武将が大人家康+旧政宗+新島津の時の孫市のシミュレート。
これの結果が、
期待値『1,621,485』はランキング内の孫市の数値と一致していますね。
次に、3武将が大人家康+新秀吉+新島津になった時の挟撃烈火の景勝のシミュレート。
こちらの結果が、
これも、ちゃんとランキング内の数値に一致しています。
一応、こういう感じで私なりにチェックはしたのですがどこかおかしいところを見つけられた方は重ね重ねですが報告お願いしますm(_ _)m

私には関係ないですが(笑)、廃様同士の戦いでは最後はどっちがスキルが多く発動するかの運勝負になりますよね。そこで、どちらがどれだけ有利・好相性な部隊構成を敷いているのかというのは、ちょっとした差になるかもしれません^^
ちなみに、馬でシミュレートすると新極の勘助の位置がヤバいことに・・・w
炎や戦くじでも出るようですので、これはちょっと無課金組でも夢が見られますね!!

12 件のコメント:

  1. 部隊シミュレーター更新お疲れ様です。
    早速、ダウンロードして使ってみましたが、素晴らしい出来ですね!
    もともとは、ランキング表も、自分の手持の武将にどの武将を加えれば強い部隊を作れるんだろうという視点で作り始めたのが最初でした。
    そういう意味では、こういった形で自分の部隊でのランキングを簡単に作れるとうになったというのは凄いことだと思います。
    新シュミレーター、後ほど、自分のブログでも紹介させてもらってよいでしょうか。
    今後、思わぬ武将の落札価格が上がったり、下がったりすると面白いですねw

    返信削除
    返信
    1. いえいえ、こちらこそエクセルシートも提供して頂いてありがとでした^^
      ランキングも自分の手元にある武将と相談しながら使うというのが一番ありそうだなというのは同意です^^ そういう観点で言えばウェーバモードは理にかなってますよねw

      紹介は全然構いませんよー♪
      ウェーバーさんのアイデア頂いたのを実装したんですし^^
      細かく見たら、色々な浮き沈みがあると思いますね(笑)

      削除
  2. こんばんは
    さっそくDLしようと思ったけど、なぜかできず・・・・
    秘密の呪文がいるのかな?

    あ、そうか、明日からの対戦で最適武将を組まれたら困るからか^^




    って、今のクエ兵では剣豪以外は働く場がない  ><

    返信削除
    返信
    1. む・・・いつも通りパスは「hid」で行けるはずです><w
      今私が試してみましたが、いけましたよ??

      ちなみに、たかのぶさんとこは真緑で近づけませーん―(笑)
      書状をコソットお送りしますね^^ リアルお忙しそうですが、頑張ってください!

      削除
  3. 武将ランキングの完成おめでとうございます。
    年明けの完成かなと思っていたのでうれしい誤算でしたw
    機能も十分で大変満足しています。
    細かいことですが結果の初期ソートを期待値順にしてもらえると並び替える手間がなくなり助かります。

    返信削除
    返信
    1. 半月遅れで、コメントありがとうございました^^!!!
      あけましておめでとうございます~♪
      武将ランキング、以前から構想は練っていてちょっとずつ作ってはいたのですよね^^
      結構はやめに公開できたのは良かったのですが、結局バグがぽつぽつと見つかってしまい、色々と手直しする結果となっています^^;
      ですが、そういったことを教えて下さる方がいるお蔭で、部隊シミュレータは初版から見ると驚くぐらいに完成度が高くなってきていると自分でも感じています。フィードバックというのは偉大ですね!!
      初期ソートを期待値順に、というご要望ですが、現段階では表示する項目も色々と模索している段階でして・・・もう少し後で、項目が固まったらそのようにしようかとも検討しようと思います^^ ご意見ありがとうございましたm(_ _)m

      削除
  4. もしかしたら気付いているかもしれませんがバグ報告です。
    自作シミュに期待値を組み込んだ際に気付きました><;

    具体的には、剣豪スキルと通常スキルを併用すると発生します。
    剣豪スキルのみ、通常スキルのみの場合は正常です。

    例)剣豪スキルと通常スキルを併用
    細川幽斎 ★5 LV20 統率:槍S 馬SSS
    赤備え2050 = 49507.5(統率補正後)
    攻撃29730 = 34189.5(統率補正後)
    基本攻撃力:83697

    初期 虚空一閃LV10 期待値:11.228%
    スロ2 剣術 攻乃型LV10 期待値:6.82%
    スロ3 騎馬隊剛撃LV10 期待値:7.82%
    将攻期待値:18.048+7.82%
    兵攻期待値:7.82%

    将攻:34189.5+(18.048+7.82)%
    =43033.63986

    兵攻:49507.5+7.82%
    =53378.9865

    将攻+兵攻=96412(切り捨て)

    部隊シミュver2.5の期待値:96895 一致せず
    部隊シミュver2.3の期待値:96895 一致せず
    部隊シミュver2.2の期待値:96412 一致。
    比べてみるとver2.3以降は最大値もずれている模様です。

    もしかしたら部隊スキルの将攻2乗適用が悪さをしているのかもしれません。
    ついでですが将攻2乗バグはIXA内で修正された模様です^^

    武将ランキング機能は早速大活躍しております♪
    素晴らしいシミュをいつもありがとうございます(`・ω・´)ゞ

    返信削除
    返信
    1. コメントありがとうございます!
      自分の中でちょっと前にVer2.3でいじった部分で、かなり混乱していたりするので自信満々には言えない話なのですが・・・
      スキル発動時の計算方法は
      『{(将攻×統率×(将スキル効果)+兵攻×統率}×(兵スキル効果)』
      という式で合っているでしょうか・・・?
      そうすると、ver2.3以降の方がおそらく合っているような気がするのです。
      言葉で上手く説明できないので・・・数式に逃げます><w

      数式で言うと。統率込みの将攻の値をA、統率込みの兵攻の値をBとして、
      将スキルの上昇効果をX。兵スキルの上昇効果をYとすると。
      上の式は『(AX+B)Y』と書けますよね。
      これを分解すると、『A(X+Y)+BY』とはならずに『AXY+BY』になります。
      ですので『(AX+B)Y』の期待値を『E{(AX+B)Y}』とすると、これを分解すれば、
      『A{E(XY)}+B{E(Y)}』になると思うのです。
      (数学的な用語でいうと、この分解できるという性質は線形性が成り立っていると言います)
      ここでのE{XY}というのは、E{X}+E{Y}とはまた違った計算が必要になります。
      (将攻期待値というのはE(X)に当たるもので、兵攻期待値はE(Y)に当たる部分になります)

      実際に教えて頂いた例での全パターンを手計算で計算するとしんどいので・・・
      Excelにして簡易的に計算してみました。
      出先で急いで作ったものですが、私が以前作っていたExcelでの期待値シミュレータはこんな感じで内部計算やっていました。
      もし良ければ御参考に^^
      私がボケているという可能性もありますのでお確かめくださいm(_ _)m

      http://www1.axfc.net/u/3120509
      pass:hid

      削除
    2. 丁寧にご説明ありがとうございますm(_ _)m

      早速Excelの方を拝見させて頂きました。
      期待値の計算方法は全く問題ないです^^
      ただ、攻撃力の計算式が正しくないと思われます。

      {将攻×統率×(将スキル効果+兵スキル効果)}+{兵攻×統率×(兵スキル効果)}
      正しくはこちらになるかと。

      違うのは「将スキル×兵スキル」ではなく、「将スキル+兵スキル」な点です。

      頂いた計算式で計算した場合ですと、
      空き地を攻撃した際の兵被害の結果に、
      誤差以上のズレが生じてしまいます。

      Excelに関しても、こちらを適用すると、
      期待値=96,412となり一致しました。

      こちらもうっかり抜けている可能性があるのでご確認くださいm(_ _)m

      削除
    3. 私の方で実際に実験もしてみたりで確かめた結果、匿名さんのおっしゃる通りでした・・・混同していたのは私だったようです><
      こちらこそ、教えていただいてありがとうございましたm(_ _)m

      直す場所はちょっぴりなので、ちょちょいと修正版上げます><w
      ご指摘、ありがとうございました!!

      削除
  5. 武将ランキング見ているだけで楽しいですね

    ランキングモードでのバグらしきもの
    本来ランクアップで増えるはずのない剣豪の兵が増えてしまいます

    返信削除
    返信
    1. Ver2.51アップデート時に、こそっと修正させて頂きました^^;;
      直した時にその旨をさくっとコメント返しすればいいじゃないか、という話なんですが・・・元来が怠け者なもので、色々やりながら寝落ちして、それで気が付けばかなり日が経ってしまうというのがいつものパターンだったりします><
      またバグ等を見つけられましたら、コメントで教えて下さると嬉しいです!(コメント返しをしないブログ主がよく言うわ、というのは・・・中途半端イクサーというのがその辺りで出ているという事でご勘弁を><w

      削除