[Math models] Request for assistance
As some of you might be aware of, I wrote a little program to compare and optimize equipment for WoW. wowequipoptimizer - Google Code
It started as a c# program to find close-to-optimal equipment for the enhancement shaman by means of genetic algorithms. As this method worked fine for other modelling problems, i.e. healing, the program was extended to support other classes and other builds. More features were added and it slowed down really bad.
So I ported the whole program to c++ with QT as the main UI library.
The new version is several times (between 20 and 40) faster than the old version and now includes several, previously impossible, additions like gem requirements for meta gems.
Now to the task at hand, in the original 1.0 version I basically tried to write mathematical models, which I use in this context as a synonym for closed-form expressions for the several classes and builds, by mainly asking other players and reading through different theorycraft threads. Obviously the resulting models are of vastly different quality.
So I'm asking the fellow theorycrafting community to help me out with a few things about their classes, pretty much the following questions for 2.3
Basically each and every proc item has to be modelled individually, some even individually for each model (like set bonus), to properly write a closed-form expression of a proc item, it is necessary to find the average value of that proc, so things like internal cooldown are necessary.
Basically the rotation should be your bred&butter rotation, nothing fancy which you do just once an hour, since the skill has cooldown then, but something you repeat over and over.
For example a good rotation would be: 4 Cast X, 5 Cast Y in 20s
Now dps is basically (4*castxdmg+5*castydmg)/20 multiplied with certain factors like misery for a shadow priest (please include those factors too if they are not obvious in the talent tree).
Usually I can figure out everything except for the right rotation, things like mana usage and other factors are mostly well documented in the different theorycraft threads
Very interesting! I've considered such a project for some time, but I'm glad to see I've been beaten to it.
Let's see here...
Build: Deep Frost
Rotation: Er, spam Frostbolt?
Notes: mana consumption varies between flavor of build. Basically "deep frost" in this context only means the damage talents are all picked up; the 18 (ish) free points can be spent on mana talents in Arcane or additional snares and such in Frost.
Imp. Frostbolt (2.5 second cast)
Elemental Precision (+3% hit, -3% mana cost - the actual hit benefit is in dispute, however)
Ice Shards (100% crit bonus)
Piercing Ice (+6% damage)
Empowered Frostbolt (brings the coefficient to 3/3.5*.95+.1 = .9143 in 2.3)
Additional procs: I personally stick to [Icon of the Silver Crescent] and [Scryer's Bloodgem], though I use [The Lightning Capacitor] frequently. Icon should boil down to 68.83 +damage in the long run, assuming perfect use, chaincasting during the cooldown. Scryer's Bloodgem is 32 hit rating passive and 25 +damage in the long run. Lightning Cap is more complicated: let B = 1+b*c, for b the crit bonus and c the crit chance. Let Bf be this value for Frostbolt and Bl the value for the Lightning Capacitor. Lightning Cap only crits for 50% bonus and uses your crit chance with all spells, so school or tree-specific crit chances are neglected. Thus, Bl/Bf is some number less than 1. Thus, the equivalent +damage would be 250*c/r*Bl/Bf, where r is the +damage coefficient. This can be easily extended to other spells and rotations. The actual DPS benefit, of course, is just 250*c/t. This is, however, neglecting the internal cooldown that the spell will have in 2.3. In this event, if the internal CD is between t and 2*t (2.5 and 5 seconds for unhastened Frostbolts, but note that these values shrink with haste), substitute c*(1-c/3) for c, which should account for the "lost" charge due to internal CD. In other words, the number of charges lost is based on how many casts occur during the CD period. If, for example, the CD were between n*t and (n+1)*t seconds, then c should be substituted with c*(1-c/3)^n, if I'm not mistaken. It's a bit of an on-the-spot theorycrafting, but I'd be happy to draw up the probability tables.
Now, this brings me to a question: is your program only meant to compare items, or is it meant to compare the relative values of stats as well? If only the former, then raw evaluation of the relevant functions should do fine. If you do the latter, however, how do you calculate these equivalences?
Cast/Skill rotation: This is where affliction gets a little harder to model; we have too many DoTs with too many different durations, and it's not quite the same as a cooldown because you can immediately recast it on a resist. We usually model it as each DoT requires so much of your cast cycle to maintain at 100% uptime, and the remaining portion (usually around half, depending on curse) gets dumped into as much shadowbolts as possible, and as much lifetaps/darkpacts as necessary. The particulars are in leulier's (another) warlock spreadsheet thread, but if you've already coded this far you can probably pick it up from there.
The spreadsheet is probably more flexible than you really need; assume any affliction build has SL and UA, and bane and improved shadowbolt. I put in some information towards the end of the thread on a closed-form (rather than iterative) solution to shadowbolt/lifetap frequencies, which should help improve performance. The main consideration is that a spell resist affects average cast time and average uptime for all DoTs.
Notes: Corruption and Curse of Agony have a 10% tax on their spell damage coefficient. Siphon Life and Drain Life have a 50% tax from being life-steal effects. There is much debate on whether or not immolate is worth casting; spreadsheets say it is but in practice its odd duration means it clips your shadowbolts or DoTs. Doom > Agony. Allow options for Shadows/Elements/Recklessness or a damage curse.
Remember that life-gain effects like potions, totems, and set bonuses affect our regen model.
Important talents/skills: Necessary Talents
Set and Proc items: It turns out that refreshing a DoT early will usually lose more damage than it gains. They don't affect our cast orders at all so +dmg procs can easily be modeled by dmg*uptime. On-Use cooldowns are usually saved for when the stars align and all four (or five) DoTs are due to be refreshed within the duration of the buff; 20-second durations allow you to get in two corruptions and UAs, barring resists. This does generally mean they are not used as soon as the cooldown expires and I can't help you with frequency.
T4 has good bonuses. T5 2-piece is for demo locks, and T5 4-piece is unaffected by spell damage. T6 has good bonuses.
This is still far from finished though.
All in all you're probably better off sticking to evaluation of items; equivalence is a hairy subject.
I've now added the Frostmage and Firemage models, while they are still far from complete they should atleast allow comparing different equips.
While the effect of increasing stats that multiply eachother isn't linear, when you look at a small change of stats it's nearly linear.
For example if I do 100 DPS and get 1 more DPS with 1 more AP and can also get 1 more DPS from 1 more crit, getting both 1 AP and 1 crit would give me 1.01^2=1.0201 which is hardly any more than 102 DPS.
In general (1+x)^2=1+2x+x^2, and if x<<1 then x^2<<2x and then you can ignore the x^2 and say (1+x)^2~=1+2x. And when you compare items you pretty much always see differences that are <<1 (1 being your total current DPS).
Granted when you change stats by a large amount they may no longer be linear (such as agi), but in small amounts they're pretty damn close to being linear you can just ignore the multiplying effect.
1. Class: Warrior
2. Builds: 17/44/0 and 3/58/0
3. Skill Rotation:
Rampage: takes the place of a Hamstring every 30 seconds, requires 20 rage to activate.
Heroic Strike: Whenever rage generation allows for it; 15 rage untalented. Not on the GCD.
Admittedly I'm really not familiar with many of the following items.
Ren, just to clarify: that's for DW fury only, right? A 2H spec would play differently, with a slam rotation and favoring WW over bloodthirst, if I understand correctly.
I've added the affliction model assuming coa-ua-corr-immo-sb-sb-sb-sb-dp-lt as the rotation and "infinite health" for lifetap in that rotation.
I've also added the fury warrior model.
Both models should be fairly correct and both have T6 4p bonus modelled in.
- As PSGarak pointed out, it's only for DW.
- I'm not sure it's optimal to use Hamstring at every cd any longer (it was when it procced WF), it has added threat (181) and does almost no damage (63). HS has better threat and rage efficiency than Hamstring.
damage/threat = 0.35
damage/rage = 6.30
Heroic Strike (with talent):
damage/threat = 0.90
damage/rage = 14.67
Adding to this, using Hamstring at every cd WILL make you miss BT and WW's when they come off CD, we don't play with zero latency and 0 reaction time.
edit: most of the theorycrafting and modeling of warrior builds and gear can be found in the DPS warrior spreadsheet, current one by DrAllcom, it might be good to check and compare with the result you get Tornhoof.
1. Class: Shaman
2. Build: Elemental
3. Cast/Skill rotation: (which casts, how often, how long) Lightning Bolt x3 (2.0), Chain Lightning x1 (1.5)
4. Notes: (everything, from special spelldmg calculations (like the old fireball time reduction) to mana usage
Lightning bolt coefficient: .794 (assumed, this is in testing atm)
Chain Lightning: .640 (also assumed)
5. Important talents/skills
Concussion: 5% increased damage on Lightning Bolt, Chain Lightning, Shocks
Convection: 10% reduced mana on LB, CL, shocks
Call of Thunder: Increased Crit on LB/CL by 6%
Elemental Fury: Decreased the mana cost of your next two damage spells by 40% on spell crit (effective for 2.3)
Elemental Fury: Increased crit damage on all Fire, Frost, Nature spells by 100%
Elemental Precision: Increased chance to hit by 6% (and reduced threat by 10%, if you are modeling threat)
Lightning Mastery: Reduced LB/CL cast time by .5 seconds (already factored into rotation)
Unrelenting Storm: Increased mana/5 by 10% of intellect
Elemental Mastery: Next spell cast has 100% chance to crit (3 min CD)
Lightning Overload: 20% chance to proc a similar Lightning Bolt or Chain Lightning equal to 50% damage.
Totem of Wrath: Increases Chance to Hit/Chance to crit by 3%
Totemic Focus: Decreased mana cost of totems by 25% (optional talent)
Nature's Guidance: Increased chance to hit by 3%
Tidal Mastery: Increased Chance to Crit on LB/CL by 5% (3% in my build)
6. Set bonus: (which set bonus you like to have)
Netherstrike: +23 spell damage [Netherstrike Breastplate]
T4 2piece: Increases +spell damage on Wrath of Air by 20. (101 base)[Cyclone Shoulderguards]
T6 2piece: Increase 15 mana/5, 35 crit rating, 45 spell damage when all four totem schools are down.[Skyshatter Gauntlets]
7. Additional proc items (with on cast/on use/on equip effects)
[The Lightning Capacitor]
[Sextant of Unstable Currents]
[Icon of the Silver Crescent]
8. Talent point distribution, e.g. in which tree you'll need xx points for this model to work
43/0/18, 41/0/20 is the cookie cutter, usually dropping 3/5 Unrelenting Storm (6% mana/5 from intellect) for 2% extra crit for LB/CL
I've added the elemental shaman model, just lightning bolt spam atm, chainlightning rotation is not yet in.
Feedback time: The model for elemental shaman is way off.
We need 4% (3% if draenei) hit to reach the hit cap. Currently it's giving me ~10% after an optimisation, which means that The Skull of Gul'dam, Eye of Mag, and Nelth's Tear are the top three trinkets. These should not feature in the top 10. Neither should Ring of Unrelenting Storms be preferable to other rings (it's a trash kara ring, it's good, but not that good).
Also, the crit & haste rating values for spelldamage are off (1 haste rating should never be worth negative spelldamage, and the equiv values should be 0.8 dmg at least.
[e]And I'd recommend having a single column for the equiv values, rather than a series of them, to make it easier to enter values in.
1. Class: Paladin
2. Build: (47/7/7)->Healer
3. Cast/Skill rotation: (which casts, how often, how long)
Of course, this really depends on the boss. Since 2.3 I spam more and more FoL and only keep Light´s Grace up(15sec).
However, here is a rotation with a few Holy Lights:
00:Flash of Light
Both healing spells have the usual calculation (FoL 1.5/3.5; HL 2.5/3.5)
5. Important talents/skills
Divine Intellect: 10%more Intellect
Healing Light: 12% more Heal
Illumination: 60% mana back when crit
Divine Favor: 2min CD. Next spell is 100%critical
Holy Guidance: 35% of the Intellect=+Heal
Light´s Grace: 15sec after HL 2sec castime for HL instead of 2.5
Holy power: 5%crit
Sanctified Light: 6% HL crit
Divine illumination: 3min CD. 15sec mana cost reduced by 50%
Improv. BoW is already included I think.
6. Set bonus: (which set bonus you like to have)
4 pieces: Reduces the cooldown on your Divine Favor ability by 15 sec.
4 pieces: Your critical heals from Flash of Light and Holy Light reduce the cast time of your next Holy Light spell by 0.5 sec for 10 sec. This effect cannot occur more than once per minute.
2 pieces: Increases the critical strike chance of your Holy Light ability by 5%.
4 pieces: Increases the healing from your Flash of Light ability by 5%.
7. Additional proc items (with on cast/on use/on equip effects
[Ribbon of Sacrifice]
[Lower City Prayerbook]
[Essence of the Martyr]
[Pendant of the Violet Eye]
[Eye of Gruul]
[Fel Reaver's Piston]
[Band of the Eternal Restorer] 15%proc
[Memento of Tyrande] 10%proc, 45sec hidden CD
[Gladiator's Ornamented Gloves] and also the S2+S3 gear: 2%FoL crit
8. Talent point distribution
41p in Holy, nothing more.
btw. great work;)
|All times are GMT -4. The time now is 3:49 AM.|
Forum Infrastructure by vBulletin 3.6.12 ©2000-2007, Jelsoft Enterprises Ltd.