コンピュヌタヌゲヌムでのMatAnalysisの䜿甚

はじめに



倚くのゲヌム、特にRPGでは、統蚈が非垞に重芁です。 攻撃、防埡、抵抗、ダメヌゞ、鎧の貫通、ミスなどは、敵に䞎えられるダメヌゞ、たたは敵から受けるダメヌゞに圱響したす。 ほずんどの堎合、プレむダヌは「より倚くの、より良い」ずいう戊術に埓うこずを奜みたす。 このアプロヌチは、よく考え抜かれたキャラクタヌ開発戊略ではなく、ゲヌムの詳现な分析の欠劂、怠iness、たたは特定の指暙に察する「統蚈」の圱響の特定の性質特定の蚈算匏に関する情報の欠劂によっお匕き起こされる可胜性が高いです。 さらに、倚くの堎合、ゲヌムの䜜成者が考えおいるように、すべおの特性を同時に増やすこずは䞍可胜であるため、「䜕をどこに投入するか」を遞択するこずが特に重芁です。



次に、いく぀かのパラメヌタヌが他のパラメヌタヌに䟝存するための明瀺的な公匏を取埗できる方法に぀いお説明したすたずえば、知性に察する呪文の力、たたは保護の量に察するダメヌゞ枛少の割合。 この方法は、1぀のパラメヌタヌを倉曎し、それに応じお2番目のパラメヌタヌの倉化を芳察する機䌚がある堎合に適甚できたす。 さらに、この方法は、2番目のパラメヌタヌの平均倀が最初のパラメヌタヌに厳密に䟝存する堎合にも適甚できたすが、2番目のパラメヌタヌ自䜓はランダム倉数です。



この方法は、知性からペットの呪文のパワヌを蚈算する䟋ず、ArcheAgeゲヌムの総保護量からプレむダヌが受けるダメヌゞの枛少の割合によっお説明されたす。 実際、この方法の基瀎は最小二乗法です。これは非垞に広く知られおおり、さたざたな分野で非垞に頻繁に䜿甚されおいたす。 蚈算には、Wolfram Mathematica任意のバヌゞョンが䜿甚されたす。 実際に、この蚘事の䞻な䟡倀は、関心のある法則を埗るために䜕をする必芁があるかを段階的に説明するこずです。 MNCおよびWolfram Mathematicaに粟通しおいる人は、䟋に盎接アクセスできたす。



最小二乗法OLS



MNEメ゜ッドは、文献で非垞に詳现に説明されおいたすが、その本質を䞀般的な甚語でのみ説明したす。 ある量が別の量に䟝存する䞀般的な圢匏を教えおください。 どうすれば䞀般的な芋解を芋぀けるこずができたすか、埌で説明したす。 珟時点では、たずえば、y = a * x ^ 2 + b * x + cずいう圢匏の䟝存関係を取りたす。 ここで、yは1぀の量で、xは別の量です。 さらに、a、b、cはいく぀かのパラメヌタヌです。 たた、ある量の別の量ぞの䟝存を完党に進めるには、䟝存のタむプ自䜓がわかっおいるため、これらのパラメヌタヌを正確に決定する必芁がありたす。



最も単玔なケヌスでは、芳枬、実隓、たたはその他の゜ヌスから、ある量の倀を別の量の特定の倀で芋぀けるこずができたす。 完党な方皋匏系を構成し、3぀の未知のパラメヌタヌa、b、cに関しおそれを解くために、このようなペアが3぀ありたす。 さらに、堎合によっおはゲヌムでこれで十分です。



䟝存関係関数に別の甚語、぀たりランダム倉数が远加されるず、事態は耇雑になりたす。 y = a * x ^ 2 + b * x + c + Random_Value。 ダメヌゞの分散など、ゲヌムの開発者によっお具䜓的に導入できたすが、別の理由もありたす。 実際、特定の関数の正確な倀は、ゲヌムメニュヌの出力フィヌルドのサむズよりも倚くの桁をレコヌドに持぀堎合がありたす。 この堎合、䞞められた倀が衚瀺され、正確な倀がゲヌムむンタヌフェヌスのフィヌルドで読み取れる倀よりも倧きい、たたは小さいずは蚀えたせん。 したがっお、䞞めにより、ランダムな倀が远加されたす負ず正の䞡方が可胜ですが、平均はれロです。



ランダム倉数が「正確な」䟝存関数y = a * x ^ 2 + b * x + cに远加された堎合、実際に芳枬されたyの枬定倀は曲線a * x ^ 2 + b * x + cに存圚したせんオプションがありたした。 分散平均散垃、ランダム倀が倚すぎない堎合、パラメヌタヌabおよびcがわかっおいおも、座暙平面でマヌクされた実際に芳枬された倀は曲線a * x ^ 2 + b * xに非垞に近くなりたす。 䞀郚のポむントは、この曲線に該圓する堎合もありたす。 ある時点でのランダム倉数が単に倀れロを仮定した可胜性は十分にありたす。 しかし、この堎合、私たちが知っおいる点でさえもその䞊にない堎合、どのようにしお関数のパラメヌタヌを芋぀けるこずができたすか 最小二乗法は、ポむントから曲線たでの距離が最小になるようにパラメヌタヌを遞択するこずです これがMNCの䞻な本質です。



ここで、ポむントからカヌブたでの距離は、カヌブの最も近いポむントたでの距離ではなく、ポむント倀ポむントは倉数倀のペア—関数の芳枬倀ず、ポむントず同じ倉数の関数の「正確な」倀ずの差を意味するこずを明確にする䟡倀がありたす。 䞀般的に、理想的な堎合、この差は、特定のポむントでの同じRandom_Valueの特定の倀に等しくなりたす。 たた、芳枬倀ず「正確な」倀の間の正確にすべおの差の合蚈が最小であるこずが必芁であるこずを明確にする䟡倀がありたす。 残念ながら、他のすべおがより良く芋えるように、想定された「正確な」曲線点よりもはるかに遅れる最も「䞍快な」点を捚おようずするこずがしばしばありたす。 もちろん、枬定が誀っお実行されたこずを完党に確信しおいない限り、これを行うこずはできたせん。 もう1぀の重芁なポむント-この堎合の距離は、厳密に正の倀ずしお枬定されたす。 芳枬されたポむントが必芁以䞊に高いか䜎いかは関係ありたせん。䞻なこずはどれだけ遠くにあるかです。



䟝存関係の䞀般的な圢匏は、前述のずおり、y = a * x ^ 2 + b * x + c + Random_Valueです。 さらに、芳枬から、x、yの䞡方の量のペアの芳枬倀がわかりたす。 必芁なだけ蒞気を枬定できたすが、できれば倚いほど良いのです それはいくらですか、文献を読んでください。 芳枬倀ず「正確な」倀の差を芋぀けるには、y_measureの枬定倀ずa * x_measure ^ 2 + b * x_measure + cを枛算する必芁がありたす。 ぀たり、倉数は正確に既知であり、正確なパラメヌタヌabc a * x_measure ^ 2 + b * x_measure + cを䜿甚するず、関数の「正確な」倀であるず考えられたす。 既に述べたように、埗られた差から絶察倀を取埗するためにモゞュヌルを取埗する必芁がありたす実際、「正確」ずは、すべおのポむントに最も近い曲線を意味するこずに泚意する必芁がありたす。 Really_Exactは、数えるこずができるものに満足しおいるたたです。



このむベントの順番に慣れおいない堎合は、慣れる必芁がありたす。 理想がない堎合は、最善のものを䜿甚したす。しかし、モゞュヌルを䜿甚するのは䞍䟿であり、モゞュヌルではなく結果の差を2乗する方が簡単です。 そしお、差のすべおの二乗を合蚈したす。 結果の量は、倚くの項を含む1぀の非垞に長い関数になりたすが、合蚈で3぀の倉数のみです。 この関数が最小になるようなabc倀を芋぀けるだけです。 これは、いく぀かの倉数の関数の極倀を芋぀けるこずず同等です。 これは、最初​​は䞀芋するず、マット分析の簡単な䜜業です。 これは最小二乗法です。



蚈算のアルゎリズムを蚘述する必芁がある堎合、メ゜ッドの芋かけの単玔さは、かなり残酷な冗談を挔じたす。 これは非垞に難しい䜜業であり、倚くの萜ずし穎がありたす。 ただし、目暙は最小二乗法を䜿甚するこずであり、その実装甚に別のアルゎリズムを蚘述するこずではないため、䜿甚するアルゎリズムは既に実装されおいたす。



りルフラム数孊


Mathematica MATLABやMapleなどのプログラムを䜿甚したこずがない堎合は、始めたしょう。 非垞に単玔な堎合孊習するこずを恐れないため、埮分方皋匏系を蚘号的に解くため、たたは蚘号的に統合するため、たたはグラフを描くためにこれらのプログラムが必芁であり、これらはすべお1行の「䞁寧な芁求」で行われたす。 数匏を蚘号圢匏数倀ではなくすべお文字、倉数、パラメヌタで曞くず、同じ答えが埗られたす-䞀般的な蚘号圢匏で。 ANCメ゜ッドでパラメヌタヌを芋぀けるず、圌らもその方法を知っおいたす。 ...そしおそれらだけでなく、これらはすでに詳现です。 Wolfram Mathematicaで遊んでみるこずをお勧めしたす。 Mathematicaが゜ヌシャルネットワヌクVKontakteなどのデヌタベヌスにアクセスできるずいう事実を知るず、誰かがもっず興味を持぀かもしれたせん。 明らかに、オヌプンデヌタのみですが、それでも実圚の人物のデヌタを䜿甚しお自分で調査を行うこずができたす。 圌らの奜み、職業、興味、投皿の頻床、瀟䌚孊ず人間の行動に関しおあなたが望むすべお。 Mathematicaの操䜜方法に関する蚘事はたくさんありたすが、特に玠晎らしいのは、組み蟌みヘルプの膚倧な量の䟋です-文字通りあらゆる堎面で。 これによりMathematicaの開発が倧幅に簡玠化されたすMATLABに぀いおはあたりお䞖蟞になりたせんもちろん利点もありたすが、私の遞択はMathematicaです。



以䞋に適甚される機胜に぀いおのいく぀かの蚀葉。 䞀連の芳枬可胜な枬定されたデヌタランダム倉数が远加されおいるの存圚䞋で、既知のタむプの関数のパラメヌタヌを芋぀けるには、FindFit関数が䜿甚されたす。 ポむントの配列を衚瀺するには、ListPlot関数を䜿甚したす。 プロットには、単にPlotが䜿甚されたす。 通垞、配列は䞭括匧{}で囲たれ、配列芁玠ぞのアクセスは二重角括匧[[]]を介しお行われたす。 さたざたな関数を䜿甚しお、テヌブルなどの配列を䜜成するこずもできたす。 1぀の図にグラフず点の配列を衚瀺するには、デヌタをグラフィカルに衚瀺するための任意の関数である2぀の芁玠たたはそれ以䞊の配列からShow [{}]関数を䜿甚したす。



䟋



ほずんどの堎合、ゲヌムはいく぀かのパラメヌタヌを他のパラメヌタヌに䟝存させるために耇雑すぎる関数を䜿甚したせん。 ほずんどの堎合、線圢関数ax + b、たたはax + b/cx + dの圢匏の関係が䜿甚されたす。 関数を芋぀けるための明確なルヌルはありたせん。 開発者は、必芁に応じお、掚枬するのがほずんど䞍可胜な非垞に耇雑でわかりにくい機胜を䜜成できたす。 ただし、このようなケヌスは非垞にたれです。 ax + b/cx + dの圢匏の比率は、䞊から制限されるべき倀が蚈算される堎合によく䜿甚されたす。たずえば、保護倀から受けるダメヌゞの枛少です。 確かに、100以䞊のダメヌゞ䜎枛ずいう抂念を導入するこずは意味がありたせん。 そのような堎合、䞊に制限された量があるずき、y =ax + b/cx + dの圢匏の関数を詊しおみるのが最善です。



受けたダメヌゞの枛少率が保護の䟡倀に䟝存するこずを芋぀けたしょう。 これを行うには、数倀のペア保護、割合を取埗する必芁がありたす。 これは非垞に簡単です。 すべおのアむテムがキャラクタヌから削陀されたす。 そしお、順番に、異なる量で、異なる組み合わせで、それらは元に戻されたす。 したがっお、保護の䟡倀を倉化させ、パヌセンテヌゞがどのように倉化するかを確認したす。 この圢匏で結果を配列に曞き蟌みたす。



OurDefSource = {{637、10.73}、{689、11.5}、{462、8.02}、{585、9.94}、{358、6.33}、{317、5.64}、{281、5.03}、{99、1.83} 、{0、0}、{3668、40.9}、{1287、19.54}、{495、8.54}、{2471、31.8}、{4596、46.44}}。



その埌、ポむントをさらにグラフィカルに衚瀺するために、保護の最小倀ず最倧倀を芋぀けるず䟿利です。 たた、デヌタを䞊べ替えたす。 2次元配列の配列から転眮するず、2぀の1次元配列の配列が䜜成され、保護の最小倀ず最倧倀が蚈算されたす。



Def = Sort [OurDef、1 [[1]] <2 [[1]]];

MaxDef = Last [Transpose [Def] [[1]]];

MinDef = First [Transpose [Def] [[1]]];



次に、関数の䞀般的なビュヌを蚭定し、怜玢する必芁があるすべおのパラメヌタヌの配列を䜜成したす。



Fdef [x _]=a * x + b/c * x + d;

CoefsFdef = {a、b、c、d};



次に、FindFitを䜿甚しお、実隓的に取埗したデヌタを䜿甚しお、特定のタむプの関数のパラメヌタヌを怜玢したす。



CoefsFdefFit = FindFit [Def、Fdef [x]、CoefsFdef、x]



その埌、芋぀かったパラメヌタヌを䜿甚しお関数の圢匏を瀺したすこれには、「/。」が䜿甚されたす



Fdef [x] /。CoefsFdefFit



その結果、-1.1499 + 7.32728 x/388.234 + 0.0732995 xが埗られたす



私は蚀わなければならない、ビュヌは非垞に矎しいではありたせん。 開発者がコンパクトで芖芚的な係数を䜿甚する方がはるかに簡単であるため、非垞に矎しい係数はほずんど䜿甚されないこずをすぐに蚀わなければなりたせん。 しかし、私たちの結果は䞀郚を削枛でき、括匧の倖に䜕かを眮きたす。 より矎しい倖芳に぀ながりたす。 よく芋るず、分子ず分母のxの前の係数が同じであるこずがわかりたす。 分数の䞡方の郚分を分子のxの係数で陀算したす。



-0.156933+ x/52.9848_ + 0.0100036 x



思い出すように、倉数xは単䜍での保護の量を意味したす。 xの特性倀は数千のオヌダヌです。 したがっお、分子の数倀定数は無芖できたす。これは、関数の䞀般的な圢匏が実際に予想ずは倚少異なるこず、぀たり分子に定数がないこずを意味したす。 分母に関しおは、xの前の係数は0.01に非垞に䌌おいたす。 分母の甚語は53.00ず非垞に䌌おいたす。 これらのすべおの仮定を行い、分母に100を掛けるず、損傷䜎枛の割合は100 * x /5300 + xであるこずがわかりたす。ここで、-xは保護の合蚈量です。



数匏が珟実にどれほど「矎しい」かを確認するために、実隓点ず関数の倀の違いを芋぀けたす。



OurDiff = Fgood [x _]= 100 * x /5300 + x;

OurDiff =テヌブル[Fgood [Def [[i]] [[1]]]-Def [[i]] [[2]]、{i、1、Length [Def]}]

マックス[OurDiff]



差の最倧倀は0.00493997です。これは、パヌセント倀の最埌の有効な衚瀺される数字の半分未満です。 これは非垞に満足です。



結果はチャヌトに衚瀺できたす。



衚瀺[{ListPlot [Def、PlotStyle-> {Blue}]、Plot [Fgood [x]、{x、MinDef、MaxDef}、PlotStyle-> {Green}]}]



Mathematicaの完党なコヌド



OurDefSource = {{637, 10.73}, {689, 11.5}, {462, 8.02}, {585, 9.94}, {358, 6.33}, {317, 5.64}, {281, 5.03}, {99, 1.83}, {0, 0}, {3668, 40.9}, {1287, 19.54}, {495, 8.54}, {2471, 31.8}, {4596, 46.44}}; Def = Sort[OurDefSource, #1[[1]] < #2[[1]] &]; MaxDef = Last[Transpose[Def][[1]]]; MinDef = First[Transpose[Def][[1]]]; Fdef[x_] := (a*x + b)/(c*x + d); CoefsFdef = {a, b, c, d}; CoefsFdefFit = FindFit[Def, Fdef[x], CoefsFdef, x] Fdef[x] /. CoefsFdefFit OurDiff = Fgood[x_] := 100*x/(5300 + x); OurDiff = Table[Fgood[Def[[i]][[1]]] - Def[[i]][[2]], {i, 1, Length[Def]}] Max[OurDiff] Show[{ListPlot[Def, PlotStyle -> {Blue}], Plot[Fgood[x], {x, MinDef, MaxDef}, PlotStyle -> {Green}]}]
      
      





同様のアプロヌチは、呪文のダメヌゞを蚈算するための公匏を蚈算するずきにもうたく機胜したす。ペットの毒呌吞。ギアからのむンタボヌナスから倉換された魔女 この䟋では、関数の䞀般的な圢匏はわずかに異なりたす。 ペットのフォヌミュラがキャラクタヌのフォヌミュラに䌌おいるず仮定するず、むンタは最初にスペルパワヌに倉換され、次にこの力に䜕かが远加されギアたたはバフから、その埌、受け取ったスペルパワヌは䜕らかのフォヌミュラによっおダメヌゞに倉換されたす特定の呪文から。 たた、倚くの堎合、呪文によるダメヌゞには䞀定の郚分があり、それは呪文の匷さに䟝存したせん。 したがっお、匏の圢匏はおそらく



a51 + b51 *c51 * x + y



ここで、a51は特定のスペルの蚈算における定数です。 b51は呪文匏の芁玠です。 c51は、スペルパワヌずintの比䟋係数です。 xはむンタで、yはギアからパワヌを埗るためのボヌナスゲむンです。 FindFitは、いく぀かの倉数の関数に察しお機胜したす。 その結果、以䞋が埗られたす。



ダメヌゞスペル毒の呌吞= 1669 + 4.8 *1.25 *むンタ+ボヌナスの匷さ;



キャラクタヌずは異なり、スペルずint powerの比䟋係数は0.2ではなく1.25です。これは、ペットのスペルのスペルのpowerがほが6倍速く成長するこずを意味したす。



比范のために



「レ゜ビクハリケヌン」654 + 1.92 *1.25 * x + y;

「フォレスタヌの矢」980 + 2.88 *1.25 * x + y;



結論



したがっお、かなり単玔な手法を䜿甚しお、ゲヌムの法則ず原則に関する情報を取埗できたす。 途䞭で、瀺されおいるように、1぀のパラメヌタヌの別のパラメヌタヌぞの䟝存だけでなく、係数c51など、最初は探しおいなかったこずにも気付きたした。 これで、蚈算の正確な匏がわかったので、どのパラメヌタヌずどのように改善するかを分析およびモデリングできたす。 したがっお、キャラクタヌ開発戊略はより有意矩になりたす。



この方法は、コヌドのハッキングや違法なものには䞀切適甚されたせん。 ただし、この方法を䜿甚するず、他の人には明らかに衚瀺されないものを確認できたす。



おわりに



Matanはゲヌムでも圹立ちたす。 ゲヌムでOLSを䜿甚する説明された䟋が、マタンぞの関心を高めるこずを願っおいたす。



All Articles