Theck's MATLAB TPS analysis - WotLK/3.x

Warning: Theorycraft inside.

Moderators: Fridmarr, Worldie, Aergis, theckhd

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby theckhd » Wed Jan 13, 2010 8:38 am

Blade Warding Theory and Simulation

I mentioned in the last post that due to Judgement mechanics, uptime calculations are a bit more complicated now. Since every Judgement can result in 0, 1, 2 or even 3 procs of an enchant, it changes the numbers a bit.

For Mongoose, all we care about is uptime, so the previous analytical solution should suffice. Blade Warding is another beast though - we care not only about uptime, but also mean stack size and potentially the number of procs (for damage purposes). This is, quite frankly, a pain in the ass.

Why?

Well, first of all, the values I gave for BW uptime in the last post were "best-case" values. They assumed that the buff was never consumed by a parry. If we're actively being attacked, the uptime should be lower because it will terminate early on occasion. So to get the proper uptime, we need to somehow incorporate a boss attack event into the math.

In addition, we want to know the mean stack size. Which means we need to incorporate conditional probabilities to handle a procs occurring during the buff period, multiple simultaneous procs from the Judgement mechanic, and boss swings resetting the stack size.

As much fun as that sounds, I took the easy way out. Rather than seek an analytical solution, I wrote a script to simulate a limited combat environment. The code is here: calc_bw.m

The basic idea is as follows: It simulates combat in time-steps of 0.1 seconds, and runs for 10^6 iterations (or 10^5 seconds, nearly 28 hours worth of combat). It simulates 4 different event types (auto-attacks, Judgements, HotR's, and boss attacks) and determines if any of those events are "off cooldown" for the current time step. If so, it rolls for attack success and proc chance. During all of this, it tracks many of the important details for each time step - stack size and remaining duration, which type of events fired, and number of procs.

As a result, it can very easily spit out the uptime, mean stack size, and total number of procs. The only downside is that I haven't optimized the code very much, so it takes about a minute to run. This means that it would be tricky (at least at this point) to generate a plot of the dependence on boss swing speed or weapon speed, for example. However, it's relatively easy to run it 3 or 4 times for some representative values.

So, without further adieu, here they are:

Code: Select all
  -Base-
Boss   Plyr                Mean      Total
Speed  Weap Sp.   Uptime   Stack     Procs
2.0     2.6       17.2%    0.204     2976
2.0     2.0       16.1%    0.190     2798
2.0     1.7       15.0%    0.178     2611
2.0     1.6       15.1%    0.175     2597
2.0     1.5       14.9%    0.173     2591

  -Base-
Boss   Plyr                Mean      Total
Speed  Weap Sp.   Uptime   Stack     Procs
2.0     1.7       15.0%    0.178     2611
1.8     1.7       14.7%    0.171     2640
1.5     1.7       13.4%    0.153     2587
1.2     1.7       10.8%    0.120     2570
1.0     1.7       11.1%    0.123     2659

  -Base-
Boss   Plyr                Mean      Total
Speed  Weap Sp.   Uptime   Stack     Procs
5e5     1.7       22.9%    0.295     2543


As you can see, the uptime decreases slightly as both our weapon speed gets faster and as the boss swing speed gets faster. Keep in mind that these are basically Monte Carlo simulations, so there's some variability in the data - the total procs can vary by +/- 50-75 from run to run, and similarly the uptime can vary by roughly a percent. That's why the last sims in the second block has more procs and higher uptime than the previous one. I can do some longer runs later to get more accurate values, but it would take some time.

So, within the limits of error, we find that the uptime varies by a few percent with both boss attack speed and weapon speed, but should be between 10 and 15% for Icecrown bosses depending on your weapon choice.

In the last simulation, I set the boss swing speed to a ridiculous number (like 5e5 seconds) so that no boss parries occur during the simulation. This will check against the analytical expression I gave, which didn't include boss parries. If I plug the avoidance and miss values of the simulation (9.62% avoid, 2.12% miss) into the analytical expression, I get an expected uptime of 27.8%.

You can see that we get about 23% uptime in that simulation, which is a bit lower than the analytical prediction. I'm not sure yet whether this is due to an error in the code, an error in the derivation, or something else entirely (maybe there's a subtlety I've missed here due to "stack bunching" effects?).

Since most bosses in Icecrown seem to be swinging at around 1-1.5s, let's estimate the uptime as 12% and the mean stack size as 0.13. We should be getting around 2600 procs in 1e5 seconds, or 0.026 procs per second (1.56 per minute). The average amount of parry rating gained is then
0.13 * 200 = 26 parry rating,
which is roughly on-par with the itemization of the 26 agility enchant.

Assuming that the proc damage is modified by Crusade, One-handed Weapon Spec, Sanctified Retribution, and Glyph of Sense Undead, each proc will be giving us
700 * 1.03 * 1.1 * 1.03 = 816.9 damage (841.4 for a Crusade mob, 849.8 for an Undead).
At 0.026 procs per second, this works out to
816.9 * 0.026 = 21.2 DPS (21.9 for Crusade, 22.1 for Undead)
Since the damage is physical, we only get the 1.43 modifier, for 30.4 TPS (31.3 Crusade, 31.6 Undead)

It also adds some DPS through parry-haste, but that will be a relatively minor effect. In the future I may modify the code to try and incorporate this, but it's likely to be a small enough effect that we'll never see it within the noise limits of the simulation.

So anyway, if we compare Blade Warding to 26 agility, it has roughly the same threat output with 10% less avoidance (thanks to kings). For DPS, it's about the same as the Greater Potency enchant, slightly ahead of 26 agility. It lags Mongoose by a significant amount in all categories.

The only thing that changes dramatically with boss attack speed is the avoidance, which will go up to around 35.6 parry rating for a slow-swinging 2.0-speed boss. That brings it slightly ahead of 26 agility, but still far behind Mongoose (~52 agility average).
Last edited by theckhd on Wed Jan 13, 2010 12:52 pm, edited 1 time in total.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7968
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby theckhd » Wed Jan 13, 2010 8:43 am

Lythac wrote:When I was looking at +26agi last night I was in ret gear so not having the meta. Reading my previous post I should have written about the +2% meta elsewhere, it was only that I remembered about it then. The 58 armor gain may have been coming from rounding.

That's odd, I would have expected it to be rounded with a floor() rather than a ceil(). But I think Shathus' intuition is probably right.

So it should be a flat 264 armor from mongoose and 57.2->58 armor from 26 agility.
Thels wrote:Do we know that the talent and meta apply after each other, for a total of 12.2%, or do they stack, so the bonus is only 12%?

I don't know off-hand, but again, it should be easy enough to figure out by equipping and un-equipping a helm. It might be easier to equip a Ret helm and a Prot helm with the same base armor and 0 agility. Presumably nobody has the Armor meta in their ret gear, anyway.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7968
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby Thels » Wed Jan 13, 2010 9:39 am

theckhd wrote:That's odd, I would have expected it to be rounded with a floor() rather than a ceil().


It'll probably add all values together first, and then round down. If he happened to be at .9 without the enchant, it could just be a lucky rounding.

theckhd wrote:I don't know off-hand, but again, it should be easy enough to figure out by equipping and un-equipping a helm. It might be easier to equip a Ret helm and a Prot helm with the same base armor and 0 agility. Presumably nobody has the Armor meta in their ret gear, anyway.


I got 15sta/10agi in my prot helm and 10stats in my retri helm, so that should even out, but the 21 agi from my ret's meta will screw stuff up. I could buy the holy helm and sell it after, but then it would miss the 10 agi as well.

Also, what value do we compare this to? We already established that only the armor from items is affected by Toughness (and presumably the meta), so an increase in total armor by equipping the metagem is rather useless.
ImageImage
User avatar
Thels
 
Posts: 1299
Joined: Tue May 15, 2007 7:30 am
Location: The Netherlands

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby lythac » Wed Jan 13, 2010 9:57 am

Get naked armor value. Have 2 helms with same armor one with meta, one without.

(Helm, Meta, Toughness - Naked) / (Helm, no Meta, no Toughness - Naked)

Hopefully this should work out to either 1.12 or 1.122
Ryshad / Lythac of <Heretic> Nagrand-EU
User avatar
lythac
Moderator
 
Posts: 2685
Joined: Wed Sep 24, 2008 8:10 am

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby Gamingdevil » Wed Jan 13, 2010 10:04 am

Theckd wrote:Assuming that the proc damage is modified by Crusade, One-handed Weapon Spec, Sanctified Retribution, and Glyph of Sense Undead, each proc will be giving us
700 * 1.03 * 1.1 * 1.03 = 816.9 damage (841.4 for a Crusade mob, 925.5 for an Undead).
At 0.026 procs per second, this works out to
898.6 * 0.026 = 21.2 DPS (21.9 for Crusade, 24.1 for Undead)
Since the damage is physical, we only get the 1.43 modifier, for 30.4 TPS (31.3 Crusade, 34.4 Undead)


Am I correct to assume you took the bonus from Glyph of Sense Undead as 10% there? It's only 1%.

I'm curious to know where you got that 898.6 value from to calculate the dps. I don't see it turn up anywhere else. (I might just be blind though)

Lythac wrote:Get naked armor value. Have 2 helms with same armor one with meta, one without.

(Helm, Meta, Toughness - Naked) / (Helm, no Meta, no Toughness - Naked)

Hopefully this should work out to either 1.12 or 1.122


You'd have to still fulfill the meta requirements though.
If it is weak, kill it before it gets stronger. If it is strong, weaken it.
Image
User avatar
Gamingdevil
 
Posts: 1738
Joined: Mon Jan 14, 2008 8:16 am
Location: Belgium

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby Awyndel » Wed Jan 13, 2010 10:17 am

Ok so mongoose beats bladewarding in avoidance, threat and armor. Would have been weird if that changed, but it's nice to have some numbers of proof to point to :) .


Personally I really like blood draining, because it's a heal when you need it most, and hence you could consider it somewhat like more health. Theck I didnt quite understand why you said it would only proc after AD procs. Something to do with average hit sizes? Also I heard a lot of ppl saying it doesn't have time to built up stacks anymore since stuff hits so hard nowadays ( here I was thinking stuff also hit hard in ulduar, and hits less hard in icc ) . Is there any data available on average stacks, and how usefull those will be for health? I'm having trouble here deciding between the ocasional heal and an armor proc.
User avatar
Awyndel
 
Posts: 672
Joined: Sat Feb 14, 2009 8:49 am
Location: The Netherlands

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby lythac » Wed Jan 13, 2010 12:00 pm

Gamingdevil wrote:You'd have to still fulfill the meta requirements though.


Great, this made it easy for me to do and stopped me faffing around. I used my old JC trinkets to turn the meta on and off.

Code: Select all
                       Naked   Helm    Dif
Meta + Toughness         172   2426   2254
No Meta + No Toughness   172   2181   2009


2254/2009=1.12195122


An armor increase of 12.2%.
Ryshad / Lythac of <Heretic> Nagrand-EU
User avatar
lythac
Moderator
 
Posts: 2685
Joined: Wed Sep 24, 2008 8:10 am

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby theckhd » Wed Jan 13, 2010 12:56 pm

Gamingdevil wrote:Am I correct to assume you took the bonus from Glyph of Sense Undead as 10% there? It's only 1%.

Argh. Yes, I did. I went back and fixed the numbers using the proper 1.01 factor.

Gamingdevil wrote:I'm curious to know where you got that 898.6 value from to calculate the dps. I don't see it turn up anywhere else. (I might just be blind though)

That number was from a previous version where I used the 1.1 factor for an Undead mob but forgot to square the Crusade factor. When I re-wrote it to give the values in the "Base (Crusade, Undead)" format, I fixed the results but apparently forgot to fix that factor. I went back and fixed that too.

Thanks for catching those errors.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7968
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby theckhd » Wed Jan 13, 2010 12:58 pm

Thels wrote:
theckhd wrote:That's odd, I would have expected it to be rounded with a floor() rather than a ceil().


It'll probably add all values together first, and then round down. If he happened to be at .9 without the enchant, it could just be a lucky rounding.

Good point. So I guess we can settle on 57 armor for 26 agility then?
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7968
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby tlitp » Wed Jan 13, 2010 7:01 pm

theckhd wrote:
Code: Select all
  -Base-
Boss   Plyr                Mean      Total
Speed  Weap Sp.   Uptime   Stack     Procs
2.0     2.6       17.2%    0.204     2976
2.0     2.0       16.1%    0.190     2798
2.0     1.7       15.0%    0.178     2611
2.0     1.6       15.1%    0.175     2597
2.0     1.5       14.9%    0.173     2591

  -Base-
Boss   Plyr                Mean      Total
Speed  Weap Sp.   Uptime   Stack     Procs
2.0     1.7       15.0%    0.178     2611
1.8     1.7       14.7%    0.171     2640
1.5     1.7       13.4%    0.153     2587
1.2     1.7       10.8%    0.120     2570
1.0     1.7       11.1%    0.123     2659

  -Base-
Boss   Plyr                Mean      Total
Speed  Weap Sp.   Uptime   Stack     Procs
5e5     1.7       22.9%    0.295     2543

The current sim of BW is borked (read : it is contradicted by both analytical methods and experimental data). Until the BW model is fixed, take those predicted average uptimes with a grain of salt. Expect the real values to be ~ 50% higher.


Edit

Ok, here's a random example :
1. 10N-Festergut (~23% observed uptime)
2. get relevant stats from the paladin's armory profile
Code: Select all
player_base_speed=1.7
gear_hit=225
gear_expertise=166 (add in 3 racial expertise)
gear_defense=837
gear_dodge=711
gear_parry=306

3. set up the raid environment
Code: Select all
-20% on boss speed
no +20/+3% player speed
+Horn of Winter
+MotW (improved)
+BoK/BoSanct
+Draenai aura
no Scorpid Sting/Insect Swarm

4. compute the relevant combat variables
Code: Select all
player avoidance
boss avoidance
parryhaste factors (no reckoning)

5. get the estimates (rounded)
Code: Select all
                      simulation    analytical
boss_base_speed=2.0      ~14%         ~25%
boss_base_speed=1.0      ~10%         ~24%


Festergut isn't exactly an ideal example, granted. Still, the sim's estimates seem awfully low. 22.9% combined uptime when the target never actually parries ? :shock:
User avatar
tlitp
 
Posts: 556
Joined: Mon Jul 27, 2009 3:25 pm

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby theckhd » Thu Jan 14, 2010 6:23 am

tlitp wrote:The current sim of BW is borked (read : it is contradicted by both analytical methods and experimental data). Until the BW model is fixed, take those predicted average uptimes with a grain of salt. Expect the real values to be ~ 50% higher

Yeah, I agree. There's got to be an error in the code. I didn't have time to look up some parses earlier, so I didn't know whether they would agree with the code's result or the analytical result, which is why I left that as an open question in my post.

I'll try and go through it with a fine-toothed comb today if I get some time. My guess is that there's an error in the proc rate somehow. Unfortunately, I want to get the new Expertse vs. Avoidance stuff posted this morning as well, and I already have a busy schedule the next few days. I'll probably spend the majority of tomorrow in the lab re-aligning optics, which leaves little time for theorycrafting.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7968
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby Araiken » Sun Jan 17, 2010 11:44 pm

So...Mongoose is #1 ?


Sorry all your theory crafting goes over my head..
Image
Araiken
 
Posts: 60
Joined: Sat Mar 21, 2009 8:54 pm

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby Eredor » Tue Jan 19, 2010 1:18 am

We changed the way PPM procs work to make sure many of the weapons and trinkets did their expected performance in Icecrown instead of proc'ing too much for some specs or classes or forcing players into unusual behavior to try and fish for the procs. This change also affected some older mechanics in the game too such as the Berserking enchant. For the most part the intent is that these systems all proc off of attacks and they are balanced with that assumption.

At this time we're happy with the damage that characters are now doing after these changes, though we'll continue to monitor and adjust damage overall and that includes the proc-based items.

Source

More work for Theck I'm afraid...
User avatar
Eredor
Maintankadonor
 
Posts: 48
Joined: Thu Oct 01, 2009 4:45 am

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby theckhd » Tue Jan 19, 2010 7:41 am

Eredor wrote:Source

More work for Theck I'm afraid...

I'm 99% certain they're referring to the change to HV applications that nerfed Byrntoll, Mongoose, etc. I don't think this is another unannounced change, especially given the context. If you look at the post he was replying to:

So there have been rumors of this going around on various theory sites.

Apparently, the behavior of all PPM mechanics has been changed, so that they no longer proc off certain things which they did before. This translates to less uptime for things like berserking, the Heartpierce proc, and less Bryntroll procs.


Which certainly sounds like the changes discussed a few pages back.

Though I'm not sure if he has a valid complaint - I don't know if they did anything to rogues that would change proc uptimes, since the fix was centered on Byrntoll's high proc uptime for Retribution. tlitp would probably know, since he's actually a rogue and (probably) follows that class's theorycrafting.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7968
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB TPS analysis (A Jonesy derivative work)

Postby tlitp » Tue Jan 19, 2010 11:54 am

theckhd wrote:(..) I don't know if they did anything to rogues that would change proc uptimes, since the fix was centered on Byrntoll's high proc uptime for Retribution. tlitp would probably know, since he's actually a rogue and (probably) follows that class's theorycrafting.


They Shoot Rogues, Don't They ? :twisted:

Berserking/Mongoose(/Blade Ward) are still 1 ppm, not haste-normalized. It's been speculated that what Blizzard actually changed is the proc triggers, the same as in the case of the paladins. Namely, the poison applications are no longer valid triggers for such ppm-based dynamic effects.
User avatar
tlitp
 
Posts: 556
Joined: Mon Jul 27, 2009 3:25 pm

PreviousNext

Return to Advanced Theorycraft and Calculations

Who is online

Users browsing this forum: No registered users and 1 guest

cron

Who is online

In total there is 1 user online :: 0 registered, 0 hidden and 1 guest (based on users active over the past 5 minutes)
Most users ever online was 380 on Tue Oct 14, 2008 6:28 pm

Users browsing this forum: No registered users and 1 guest