Saturday, October 31, 2009

More on DPS modeling

More thoughts on this topic:

1. DPS is a high-order Markov process: It's high order for a few events, like when to use cool-downs (and in some cases it can be a forward-looking process, where you make a decision based on a cooldown [heroism/bloodlust] that will be used in the future). But, for the vast majority of events, it should still be well described by a first order Markov process. That's important for computability. We can, for the sake of completeness, model these separately. We'll compute most variables on a first-order Markov process, and then inject these more sporadic, high order processes into the system propagation. Presumably the number of events which affect these high-order events is low, meaning one doesn't really consider what one is going to cast after using a cool-down, they just want to ensure that all cooldowns are used in the most stacked manner possible. After the cooldown is used, decisions are once again made on a first-order Markov basis.

2. Related Event Modeling: In some cases, two events are going to be obviously related. The existence of immolate on the boss and the event of casting immolate are going to be very anti-correlated. I think it might be advantageous, then to create two separate "adiabatic" basis vectors describing these: "cast immolate, immolate not present on target" and "cast immolate, immolate present on target", rather than having two ambiguously coupled states, where for example the lack of immolate could affect decisions for spells other than immolate. This, of course, would be an approximation -- there are a few edge cases where one might incinerate without immolate being on the boss, if the boss is going to die very soon, but I think this a corner that could safely be cut.

3. Convergence test for Significant Events? One idea I'm toying around with is to collect statistics based on significant events for a variable amount of time dependent on the convergence of the first order Markov transition matrix. For example, you go into the combat log and pull out the event: "Immolate falls off target". Then you collect the sequence of spells cast after that event until some core block of the transition matrix converges (that core belonging to events which cast the primary spells of the rotation). Failure to converge within some time window would mean that there was a significant, rotation altering event that occurred in the interim.


More thoughts later...

Friday, October 23, 2009

Idea for accurate DPS modelling

Fair warning: this is a topic which few outside the WoW community would appreciate. It's applying geek math to a geek hobby -- it's geek squared.

Anyways, the concept, which I'm still formulating is as follows:

1. Create an orthogonal basis set for the class in question, defined by the spells used by that class most often in a rotation. Use this to form a square transition matrix, under the Markov approximation that the transitions between basis elements is only dependent on the previous state (the spell cast before last).
2. Determine a set of relevant events which might affect this transition matrix. For our WoW example, I think monitoring debuffs/buffs on the character, character created debuffs on the boss, and boss abilities would be a good starting point. You'd want to filter these to a minimum. We'll call these "perturbative event vectors".
3. Compute the transition matrix using standard HMM modelling techniques, over a duration whose end points are defined by the events are given in #2. This might require the creation of composite event vectors which enumerate simultaneous input possibilities. The concept of a time boundary I think needs to be a little squishy in that regard (so you account for reaction time. Simultaneous = within some reaction time interval).
4. This should result in a piece-wise Markov process.
5. Take these piece-wise chunks of the transition matrix, with their associated perturbative event vector, and create some sort of comparative method to compare them with similar events (and the events that created them). Taken over a large number of similar events, you could then cluster the transition matrices (with their associated perturbative event vectors), and come with a set of average transition responses to events.
6. You can then use these data, and create entirely new novel event sequences. Modelling, for example a certain number of resists, boss ability use frequency, etc, to generate DPS figures for a number of different behavioral profiles. Ellucidating these profiles would help identify proper response behavior, and thus one could use this to improve DPS.