Tags

wow (82) real.life (27) mathematics (19) info.tech (13) commerce (10) doomsday (7) runescape (4)

Search This Blog

30 October 2009

WoW Mathematics: Programming Your Warlock Tank

In a few rare NPC encounters, a warlock may be needed to tank a boss. Examples include Mimiron's Aerial Command Unit and Leotheras the Blind in Demon Form. While the focus of the warlock is to maximise threat, they may be interested in maximising DPS while generating the minimum amount of threat needed to hold aggro.

Fortunately, they have the mathematical tool of programming (not to be confused with programming computers) to work with. In its simplest form, linear programming, a certain value (e.g. profit, costs, or in this case a warlock tank's DPS) will need to be optimised (maximised or minimised). Of course, two chosen factors will influence that value (for this case, the number of casts of Shadow Bolt and Searing Pain), and, subject to several constraints, the right combination of both will need to be found.

This exercise gives a little insight to the workings of stat optimising utilities like Rawr.

Summary (given the base stats and the only modifications to the mana pool):
  • This warlock tank should maximise DPS by spam casting Searing Pain.
  • Were it not for the extra threat, a DPS-maximising warlock would choose Searing Pain over Shadow Bolt (negating factors such as buffs and specializations).
  • This warlock can increase its damage by increasing its mana pool.

The given:
  • Damage is made up of Shadow Bolt B (at 730 damage per cast) and Searing Pain P (at 374 damage per cast). Therefore, D = 730B + 374P. This is the objective function that needs to be maximised.
  • Since negative numbers of Shadow Bolts and Searing Pains cannot be cast, the following technical constraint is implied: B, P > 0 .
  • The warlock only needs to tank for 120 seconds (or 2 minutes). Shadow Bolt takes 3 seconds to cast, while Searing Pain takes 1.5 seconds to cast. Therefore, they have a time constraint, where 3B + 1.5P < 120 .
  • The mana available to the warlock over that time is 500% of their base mana. Shadow Bolt costs 17% per cast and Searing Pain costs 8% per cast. Therefore, they have a mana constraint, where 17B + 8P < 500 .
  • To maintain aggro on the NPC they are tanking, they need to cast at last 35 Searing Pains over the 2 minutes. Therefore, they have a minimum threat constraint, where P > 35.

Detail:
Plot all of these functions on a graph!


The shaded area (called the feasible region) highlights all combinations of Shadow Bolt and Searing Pain casts that satisfy all constraints. The thick line (representing the objective function) needs to be moved inwards (towards the origin) until it touches the shaded area (hopefully, at one point). This is the combination that will maximise the warlock's damage. If it touches more than one point, the objective function is parallel to one of the constraints, and any combination along that line segment will yield maximum damage.

Although it may not look like it from the graph, the objective function does end up touching just one point, the intersection of the technical constraint line B = 0 and the mana constraint line 17B + 8P = 500. To find the optimal combination, simply solve simultaneous equations!

The optimal combination is zero casts of Shadow Bolt and 62 casts of Searing Pain (it needs to be rounded down because only complete casts in the 2 minutes can be counted). This will yield a maximum damage done of 23 188 damage. Since the technical constraint cannot be decreased any further, this warlock can increase its damage done by increasing its mana pool. Their mana pool is the binding constraint (or limiting factor). Of course, this applies until the mana constraint crosses beyond the time constraint.

EDIT 15Dec09: Repealed guess that Rawr uses multivariate calculus.

No comments:

Post a Comment