FC2ブログ
記事一覧はコチラ

スポンサーサイト

-------- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ファミリア厳選の効率を追求する(理論編)

2015-02-08 19:17
(2015/04/25追記)
4/22のアップデートでファミリアの仕様が大幅に変更されたため、
この記事の内容は現在の仕様とかけ離れている可能性があります。


妄想記事です。
理論編と書いていますが、続編を書く見込みはありません。
ファミリア厳選とは、キャラ作成直後にファミリアを使用・鑑定し、
良い潜在能力が出るまでキャラ作成をやり直す作業です

特にドロ大(アイテムドロップ率2倍)の有無はそのキャラの生産能力に直結するため、
メインキャラの育成には欠かせない工程です。

blog380.png
(と言っておきながら、ボスダメ30%で妥協する図)
一口にファミリアの厳選と言っても、
その具体的な方法は1つではありません。
・ファミリアを1ループにつき何種類使うか
・どのファミリアを使うか
・どのようにアイテムを移動させるか
などなど、考えられることは多岐にわたります。
当然、取りうる方法の中には「良い」ものもあれば「悪い」ものもあります。

ここでは、その良し悪しの判断のために、「効率」を定義します
ファミリア厳選は運がからむものなので、

効率 = (効用の期待値) / (費用の期待値)

とし、効率が大きいほど良いとします。
ここで効用とは、「満足の度合い」という意味です。
費用は、単純化のために金銭的、時間的な費用を考えます。

例えば、目標を「ドロ大が引ければあとはどうでもいい」とします。
このとき、ドロ大が出れば効用は1 (正であればいくつでも同じ)、
ドロ大が出なければ効用は0と考えます。
1ループ当たりの効率を考えることにすると、

効率 = (1ループでドロ大を引く確率) / (1ループ当たりの費用)

と書くことが出来ます。
次に、具体的にどのような方法を取るかを考えます。
単純化のために、ファミリアの厳選方法は以下の2つの要素からなるとします。
(1)ファミリアを1ループにつき何種類使うか
(2)どのようにファミリアを集めるか
これら2つは、互いに依存した関係にあります。
すなわち、(1)によって最適な(2)が変わり、
また(2)によって最適な(1)が変わってくるということです。

この問題は、一方をもう一方の関数とみなすことで解くことが出来ます。
難しく言っていますが、やることは中学で習う連立方程式と同じです。

局所的に見れば、(1)は効率の分子・分母の両方を変化させ、
(2)の内容は効率の分母のみを変化させます。
つまり、効率を考える上で(2)のほうが単純ということです。
こういうときは、「(2)は(1)によって決まる」とするほうが計算が楽です。

(2)は(1)を決めれば自動的に決まることにすると、効率最大化問題は、
・ファミリアを1ループにつき何種類使うか
だけを考えれば良いことになります。

これは1変数関数の最大値を求める問題なので、
高校数学の知識で解くことが出来ます。

説明が抽象的になってしまったので、
具体的な問題にして、実際に解いてみます。

目標を先ほどと同様にし、1ループ当たりの効率は

効率 = (1ループでドロ大を引く確率) / (1ループ当たりの費用)

で表されるとします。
ファミリアを1ループにx種類使うとしたとき、
この効率を最大にするxを求めるというのが今回の問題です。

まず、1ループでドロ大を引く確率Pxは、
1つのファミリアでドロ大がつく確率をpとすると、
 Px = 1 - (1 - p)x
です。

次に1ループ当たりの費用ですが、
これはそれっぽい関数を仮定するしかありません。

ここでは、
・1キャラ作成するのに300秒かかる
・1つのファミリア取得にかかる時間は、最も短いものから
 30秒, 40秒, 50秒, …と10秒ずつ増えていく
と仮定します。

したがって、1ループ当たりの費用Cxは、
 Cx = 300 + {30 + 40 + ・・・ + (20+ 10x) }
   = 300 + x(25+5x)   (等差数列の和の公式より)
   = 5(x2 + 5x + 60)
となります。

ここまで来れば、あとは計算で
(効率) = f(x) = Px / Cx
を最大にするxを求めるだけです。

今回のケースではxが整数しか取らないので、
Excelを利用するのが簡単かつ確実でしょう。

上記の計算式を適切にExcelに入力すると
下の図のようになります。
(ドロ大が出る確率p = 1/40と仮定しました)

x=7でf(x)が最大になることが分かります。

blog381.png 


以上の手続きにより、この仮定のもとでは、
ファミリアを1ループにつき7種類ずつ使うのが最も効率が良いことになりました。

実際はCxがもっと複雑になるでしょうが、
どうにかして数値化さえしてしまえば同じように表を書いて解けます。
この記事の主旨は、ファミリアの厳選を題材として、
物事の効率化を考える1つの筋道を示すことです。
すなわち、「ある目的を達成するには、何を考えればいいのか」
を明確にしていく作業です。

目的:ドロ大を最も効率良く手に入れたい
→効率とは何か考える
効率:(ドロ大を引く確率) / (費用)
→確率と費用がどのように決まるのか考える
確率:使用するファミリアの種類で決まる
費用:ファミリアの種類・集め方で決まる
→効率を最大化する上で、何が決定的に重要か考える
重要なもの:ファミリアを何種類集めるか


このように理由をつけて考えることで、
焦点をしぼった議論が可能になります。
何を考えていて、何を考えていないかを共有しているので、
質問や反論、提案が無駄なく出来ます。

また、順序立てて考えられているので、
簡単な修正を施すだけで別のケースを考えることが出来ます。


ファミリア厳選の話に戻します。
効率最大化を考える上での問題は、
Cxが簡単には分からないということです。
例題では無理やりな仮定を置いて解決しましたが、
真の値は、実際にファミリアを集めるなりして測定するしかありません。

しかし、効率化のために時間をかけて調べるというのは、
効率化の動機に矛盾します(そこまで含めて考えてもいいのですが)。

したがって、実践的には、元からデータの集まっているものを選んで
効率化する、ということになります。
または、これからも継続して行うであろう作業は、
効率化を行うためにデータを記録する、という戦略も考えられます。
メイプルのブログでも、昔は狩りの効率を計測しているものが
少なくありませんでしたね。

以降があれば、ファミリア集めの最適化の話になると思います。
以上です。長文失礼しました。
スポンサーサイト
コメント
コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。