Theck's MATLAB thread - Cataclysm/4.x

Warning: Theorycraft inside.

Moderators: Fridmarr, Worldie, Aergis, theckhd

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby theckhd » Mon Oct 11, 2010 6:41 am

I don't know. But I should have answers to that and most other questions soon(TM).
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby Klaudandus » Mon Oct 11, 2010 2:47 pm

I guess I'll add Insight to the things to make a parse on.
The Element of Forum Hyperbole
Image
---
Flüttershy - Draenei Protection Paladin, Aerie Peak
Klaudandus - BE Protection Paladin, Feathermoon (Semi-retired)
User avatar
Klaudandus
 
Posts: 9468
Joined: Thu Apr 02, 2009 7:08 am
Location: Texas' Armpit

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby theckhd » Mon Oct 11, 2010 4:49 pm

Default Gear Set

This is the default gear set I'm using for the calculations on this page. It's loosely based off of the gear I had on Theck this past summer, which should still adequately represent an average tank progressing on ICC25 hard modes (i.e. able to kill early hard modes, but probably still working on PP/Sindra/LK).

Sanctified Lightsworn Plate (Heroic)
Bile Encrusted Medallion (Heroic)
Sentinel's Winter Cloak
Gargoyle Spit Bracers (Heroic)
Verdigris Chain Belt
Grinning Skull Greatboots (Heroic)
Deviums Eternally Cold Ring (Heroic)
Ashen Band of Endless Courage
Corroded Skeleton Key
Sindragosa's Flawless Fang
Last Word (Heroic)
Icecrown Glacial Wall (Heroic)
Libram of the Eternal Tower

I've left the socketing alone for the most part, since the socket bonuses haven't changed. That means 30 stam in every blue or yellow socket, but instead of agi/stam in red sockets I've used parry/stam (assuming they give 9 or more stamina per red gem).

Each item has had its highest avoidance stat (dodge or parry) reforged into mastery in an attempt to reach block cap. I managed to get to around 100% but no further without swapping armor items out for more avoidance.

Enchants are:
Arcanum of the Stalwart Protector
Greater Inscription of the Pinnacle
Enchant Cloak - Mighty Armor
Enchant Chest - Super Health
Enchant Bracer - Major Stamina
Heavy Borean Armor Kit
Frosthide Leg Armor
Enchant Boots - Tuskarr's Vitality
Enchant Ring - Stamina x2
Enchant Weapon - Accuracy
Enchant Shield - Major Stamina

Net stats
Most of these are recognizable enough to be understandable, but until I get them into the glossary feel free to ask. We've used "ph" and "sp" as shorthands for physical and spell, "dr" for damage reduction
str: 2178
sta: 5625
agi: 290
int: 102
armorystr: 1830
hitpoints: 63279
armor: 2.9026e+004
phdr: 0.6357
resistance: 0
spdr: 0
phhit: 4.8448
sphit: 11.6801
exp: 23.0294
phhaste: 10.0000
sphaste: 5.0000
effhaste: 0
phgcd: 1.5000
spgcd: 1.4286
phcrit: 6.9757
spcrit: 11.4940
aacrit: 6.9757
sp: 1398
hsp: 1398
mast: 18.2819
miss: 4.4000
dodge: 20.3412
parry: 20.0368
block: 55.2221
avoid: 44.7779
avoidpct: 0.4478
VengAP: 6.0115e+003
ap: 11646
wdamage: 1.9483e+003
ndamage: 2.4475e+003
swing: 1.6364
reck: 0.3007
wswing: 1.2100
wdps: 1.6103e+003
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby theckhd » Mon Oct 11, 2010 5:00 pm

Ability damage

Setup:
Talents: 0/31/5 with all prot damage talents + Crusade
Glyphs: N/A
Seal: N/A
Gear: T10 sample set

Code: Select all
                Damage
Ability    Raw    Net  Glyph
ShoR     15546  14324  15756
CS        4063   3743   3912
JoT       5177   5363   5899
AS        8888   9044  11757
HW        3329   3806      0
HoW       3492   4516      0
Exor      3141   3145   3774
SoT        388    415      0
SoR        356    356      0
SoJ        162    162      0
Cens      9635  10307      0
Cons      6629   6637      0
HotR       606    559    615
HaNova    4912   4321      0
Melee     1296   1132      0


Raw is the damage one would expect on a regular hit without target damage reduction. Net incorporates damage redux, hit/miss, and crit factors. Glyph is the same as net, but with that ability's glyph active. Censure damage is for a 5-stack over 15 seconds, and Consecration is a full 10 ticks. "HaNova" is HotR's AoE "holy nova" component.

A stark change from the Wrath model of paladin tanking, our abilities now cover a wide range of damage values. I'm going to come back to this post and address DPS values/plots once we have our rotation nailed down (more on that later).

In the meantime, here's a plot of net damage for each ability, to give you some feeling of the damage range we're talking about:
Image
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby theckhd » Mon Oct 11, 2010 5:45 pm

Rotation Simulations

The rotation simulation code is available on the matlabadin project page, as are the priority models used.

Setup:
Talents: 0/31/5 with all prot damage talents + Crusade
Glyphs: CS/Jud/ShoR for Prime, AS for Major
Seal: SoT
Gear: T10 sample set

There are some subtleties here that I want to discuss before addressing the data. The simulation works by simulating a limited combat environment. It keeps track of ability cooldowns, holy power, and the GCD, iterating in user-definable time steps. At each time step, it checks the priority queue in order and casts the first thing for which the conditionals are true.

While it's capable of incorporating haste effects (by working in time steps of 0.1s or less), that leads to some weird situations. For example, since Holy Wrath is a spell it has a shorter GCD than a melee attack like Crusader Strike. Thus, you can end up in a situation that looks like this:

CS-HW-????

If your Holy Wrath GCD is shorter than 1.5 seconds by at least one full timestep, CS still won't be off of cooldown. However, if something else is (Judgement perhaps, or Consecration) it'll try and cast that instead. That pushes CS back by almost a full GCD, inevitably causing a massive drop in DPS.

Because of this, I've simulated in time steps of 0.5 seconds, which is essentially throwing out haste as far as our spellcast choices are concerned. Since we are unlikely to want to deviate from casting CS on every alternate cooldown, this shouldn't be an issue.

In the queues below, there are some non-standard abbreviations:

SD stands for Sacred Duty, and means that in a case where you have 3 Holy Power, no Sacred Duty buff, and Judgement is off of cooldown, you prioritize Judgement (instead of just casting ShoR) to "fish" for a Sacred Duty proc.

J# stands for "Judgement #," and means that we treat Judgement as having an effective cooldown of #. "J8" would be the "standard" mode, and is implicit anywhere that a lone "J" is encountered. "J9" treats Judgement as having a 9-second effective cooldown, which is mostly irrelevant for us, but can cause strange things to happen when you prioritize AS over Judgement.

#ShoR stands for an #-point ShoR. If the number is omitted, it's assumed to be a 3-pointer.

2SDShoR stands for an 2-point ShoR if and only if Sacred Duty is up.

The simulation is run for 90k time steps, which is 30k GCDs, or roughly 12 and a half hours of combat. That's a long time, but random procs are random, and it's still entirely possible to get variations of 10-20 DPS from sim to sim. This is pretty evident from rotations #2 and #10, which are functionally identical queues because the cooldown clashes make SD prioritization irrelevant. However, #2 has 38 more AS casts than #10 due to lucky GC procs, which gives it an edge of about 30 DPS.

Code: Select all
Q#         Priority                              DPS   Empty    E%
1   SD>ShoR>CS>J>AS>Cons>HW                    7837     32   0.1
2   SD>ShoR>CS>J>AS>HW                         7776     43   0.1
3   SD>ShoR>CS>AS>J8>HW                        7694    833   1.5
4   SD>ShoR>CS>AS>J9>HW                        7336   2195   7.3
5   SD>ShoR>CS>AS>J8>HW>Cons                   7703    525   0.7
6   SD>ShoR>CS>AS>J9>HW>Cons                   7426   1403   4.7
7   SD>ShoR>AS>CS>J>HW>Cons                    7637   1114   2.3
8   SD>AS>ShoR>CS>J>HW>Cons                    7640    982   2.1
9   AS>SD>ShoR>CS>J>HW>Cons                    7636   1036   2.2
10   ShoR>CS>J>AS>HW                            7767      0   0.0
11   ShoR>CS>AS>J>HW                            7695    144   0.5
12   ShoR>AS>CS>J>HW                            7609   1268   3.0
13   AS>ShoR>CS>J>HW                            7573   1487   3.4
14   SD>3ShoR>2SDShor>CS>J>AS>HW                6728   2041   3.1
15   Inq>3ShoR>CS>J>AS>HW (Inq model)           7258      0   0.0
16   Inq>3ShoR>CS>AS>J>HW (Inq model)           7421    155   0.5
17   Inq>3ShoR>2SDShoR>CS>J>AS>HW (Inq model)   6412   1207   1.5


Second data set, to give you an idea of the variance:
Code: Select all
1   SD>ShoR>CS>J>AS>Cons>HW                    7812     40   0.1
2   SD>ShoR>CS>J>AS>HW                         7770     39   0.1
3   SD>ShoR>CS>AS>J8>HW                        7710    849   1.6
4   SD>ShoR>CS>AS>J9>HW                        7321   2285   7.6
5   SD>ShoR>CS>AS>J8>HW>Cons                   7695    553   0.8
6   SD>ShoR>CS>AS>J9>HW>Cons                   7433   1392   4.6
7   SD>ShoR>AS>CS>J>HW>Cons                    7629   1064   2.2
8   SD>AS>ShoR>CS>J>HW>Cons                    7651    976   2.1
9   AS>SD>ShoR>CS>J>HW>Cons                    7649   1033   2.2
10   ShoR>CS>J>AS>HW                            7758      0   0.0
11   ShoR>CS>AS>J>HW                            7671    160   0.5
12   ShoR>AS>CS>J>HW                            7579   1291   3.1
13   AS>ShoR>CS>J>HW                            7558   1496   3.4
14   SD>3ShoR>2SDShor>CS>J>AS>HW                6735   2025   3.1
15   Inq>3ShoR>CS>J>AS>HW (Inq model)           7252      0   0.0
16   Inq>3ShoR>CS>AS>J>HW (Inq model)           7459    143   0.5
17   Inq>3ShoR>2SDShoR>CS>J>AS>HW (Inq model)   6427   1126   1.5


There are lots of observations to be made here, and I hope to come back to this post and discuss some of the more subtle ones in more detail. But for now, here are the big ones that matter:

  • Cons>HW (#1 vs #2) at the end of the queue is a slight DPS increase, if we can afford the mana. Note that this sim already includes Hallowed Ground, so if you don't spec that it's basically dead even (i.e. not worth the mana cost).
  • Despite being our "signature" move, Avenger's Shield is relatively low priority.
    • Putting it above Judgement inevitably causes empty GCDs and a drop in DPS, no matter what else you try and fill the rest of the queue with.
    • That said, the difference between #10 and #11 is relatively small, so it won't hurt you much to prioritize AS>J.
    • Putting it above CS or higher is always a significant DPS loss.
  • Given that there isn't a significant difference between #2 and #10, Sacred Duty prioritization isn't worth bothering with. It causes empty GCDs thanks to ShoR misses that offsets any benefit it might convey. It can help in a few situations with high AS priorities, but those are always sub-optimal anyway.
  • 2-point ShoR's are always a DPS loss even if you only use it on a guaranteed crit.
  • Inquisition is always a DPS loss. Interestingly, with Inq up you actually start to see AS>J pull ahead of J>AS, but neither are as good as using that Holy Power on ShoR.


TLDR Summary
  • Our new queue is ShoR>CS>J>AS>HW. Feel free to slip Cons in above HW if the boss is stationary and mana isn't an issue.
  • This is equivalent to the following (dubbed "939") rotation: CS-J-CS-X-CS-ShoR, where X is filled with AS if it's available, or HW otherwise.
  • Yes, this is bad news for Grand Crusader. More on that soon.
Last edited by theckhd on Tue Oct 12, 2010 7:01 am, edited 1 time in total.
Reason: corrected data
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby theckhd » Mon Oct 11, 2010 7:26 pm

Talent Comparison

Setup:
Talents: 5/38/10 with all relevant damage talents (see analysis)
Glyphs: CS/Jud/ShoR for Prime, AS for Major
Seal: SoT
Gear: T10 sample set


To do this analysis, we use a reduction strategy. We start with an unpossible spec that contains every relevant damage talent we have access to in all 3 trees, and record the simulated and modeled DPS output.

We then set each talent to 0 points spent one at a time and repeat the sim/model. The difference was the effect of that talent, and the difference per point is simply that value divided by the number of points we dropped.

I've done this three ways - first with the simulator, and then twice with the analytical model (see the post on the next page). The first model covers ShoR>CS>J>AS>HW, the second covers ShoR>CS>J>AS>Cons>HW (for hallowed ground handling). Note that I haven't glyphed Consecration here, but you could conceivably do so to get a 20% increase to the effect per talent point of Hallowed Ground.

Code: Select all
                           DPS per point
Talent                     Sim  Model   w/Cons
SotP                      43.4   43.4    ---
Hallowed Ground            0.0    0.0   18.0
WotL                     284.4  277.6  272.1
Reckoning                 97.8   97.8    ---
Arbiter of the Light      23.2   22.7    ---
JotP                      30.6   30.6    ---
Crusade                   76.5   74.8    ---
Rule of Law               40.5   39.5    ---
Grand Crusader            53.9   46.7    ---
Sacred Duty              287.3  283.4    ---


Image

The first thing to notice is that Sacred Duty and WotL are head and shoulders above our other talents. Those four points alone are responsible for over 1000 DPS.

The next big talent is Reckoning. Yes, I said it. Reckoning. Oh Reckoning, how we have pined for you to some day grow up and become a real, viable DPS talent. Well, the devs must have listened, because that day is now here.

Reckoning clocks in at almost 100 DPS because of the heavy reforging into mastery. This will drop down to around 40-50 DPS per point at very low mastery, but since we'll want to be nearly block-capped the larger value is more relevant.

Continuing down the line, we have Crusade clocking in at around 75 DPS per point. A far cry from the Crusade we knew and loved in Wrath, but still one of the more potent choices we have.

Then we reach a slight plateau of three talents: Grand Crusader, SotP, and Rule of Law. All three of these talents are pretty good, but Rule of Law isn't accessible to us at 80. Interestingly, GC is better than SotP by a tiny bit, and has the additional benefit of giving you an interrupt and a ranged ability that much earlier. So despite the fixed rotation that 939 has shackled us with, Grand Crusader didn't turn out to be as terrible as it could have been.

Judgements of the Pure sits somewhere in-between the Grand Crusader tier and the "Lolwut you specced that" tier. It's only worth 30 DPS per point, which for comparison is about what Reckoning was (per point, when points were "cheaper") in Wrath. JotP (and by extension AotL and HG) are probably beneath the threshold of efficiency for anything other than a pure "max DPS" spec.

Arbiter of the Light and Hallowed Ground bring up the rear. It's worth noting that Hallowed Ground is a minor DPS increase on paper, but the mana efficiency that the talent gives you could translate into a slightly better value (because you might not be able to cast consecration without it!). It's also helpful for AoE tanking, which will likely become a concern in the next few weeks.

TLDR Summary:
  • Sacred Duty and Wrath of the Lightbringer are mandatory threat talents.
  • Reckoning now kicks ass. It's Reckommended (see what I did there?)
  • Crusade is also quite potent, and worth the 3 points if you have them.
  • Grand Crusader and Seals of the Pure are about equal and "decent" choices.
  • JotP, AotL, and Hallowed Ground are all "optional" from a single-target perspective.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby tlitp » Mon Oct 11, 2010 11:39 pm

What's the rush ? Why are the ephemeral level 80 values important ? When we still have a lot of implementations/tweaks/cleanup ahead, spending time on level 80 computations is, in fact, wasting time. We've managed to port a good chunk of the 3.0 code in about 100 commits, what's the reason to divert the "war effort" ?
User avatar
tlitp
 
Posts: 487
Joined: Mon Jul 27, 2009 3:25 pm

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby seigert » Mon Oct 11, 2010 11:44 pm

theckhd wrote:No time to make this pretty, as I need to get to bed. However, here's the talent sim output:

Code: Select all
Talent            DPS per point
JotP                      30.6
RoL                       40.5
Grand Crusader            53.9



Theckhd, could you please later simulate impact of 1/2 point GrCr and 2/3 points JotP & RoL? I'm pretty sure it's a linear function, but...

P.S.: Well, seems like i didn't saw 'DPS per point' column name...
seigert
 
Posts: 8
Joined: Sun Jul 18, 2010 3:42 am

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby daiceman » Tue Oct 12, 2010 2:32 am

I'm not sure if this belongs in here, but at level 80 at least on the ptr, you currently gain (x-66)*.25 parry rating per strength ROUNDED to the nearest integer. I find this really weird that its rounded, maybe I made some error, but equipping multiple sets of gear shows me that it is correct.
daiceman
 
Posts: 43
Joined: Tue Apr 22, 2008 1:53 pm

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby knaughty » Tue Oct 12, 2010 3:24 am

tlitp wrote:What's the rush ? Why are the ephemeral level 80 values important ?

Because people (including me) want some sort of basis for working out how to spec tomorrow.

The numbers Theck's provided are driving my 4.0 Basic FAQ.
Last edited by knaughty on Tue Oct 12, 2010 5:24 am, edited 1 time in total.
This isn't the "Offtankadin" forum. My MoP FAQ: http://tinyurl.com/FAQ-5-0
- Knaughty.
User avatar
knaughty
Maintankadonor
 
Posts: 1846
Joined: Mon Dec 17, 2007 10:06 pm
Location: Sydney, plotting my next diatribe against the forces of ignorance!

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby theckhd » Tue Oct 12, 2010 4:47 am

tlitp wrote:What's the rush ? Why are the ephemeral level 80 values important ? When we still have a lot of implementations/tweaks/cleanup ahead, spending time on level 80 computations is, in fact, wasting time. We've managed to port a good chunk of the 3.0 code in about 100 commits, what's the reason to divert the "war effort" ?


As Knaughty said, 4.0 comes out today. The deluge of PM's, whispers, and e-mails asking "What's the best X?" have already started.

That's part of the reason I was so concerned that the code was functional at 80. In some senses, it's more important than the 85 code right now, because we still have two months before anyone will actually be 85.

At this point, I'm mostly working on calc files anyway, which would be done exactly the same way for the 85 code.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby theckhd » Tue Oct 12, 2010 4:49 am

daiceman wrote:I'm not sure if this belongs in here, but at level 80 at least on the ptr, you currently gain (x-66)*.25 parry rating per strength ROUNDED to the nearest integer. I find this really weird that its rounded, maybe I made some error, but equipping multiple sets of gear shows me that it is correct.

I believe it's actually FLOOR()'ed rather than rounded. That's pretty standard though, blizzard does that a lot for things like stats, ratings, etc.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby Klaudandus » Tue Oct 12, 2010 5:00 am

The logs you were requesting have been posted. I'll try to get some on live but I don't think I'll have time before the raid, maybe till tomorrow.
The Element of Forum Hyperbole
Image
---
Flüttershy - Draenei Protection Paladin, Aerie Peak
Klaudandus - BE Protection Paladin, Feathermoon (Semi-retired)
User avatar
Klaudandus
 
Posts: 9468
Joined: Thu Apr 02, 2009 7:08 am
Location: Texas' Armpit

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby tlitp » Tue Oct 12, 2010 5:17 am

theckhd wrote:
tlitp wrote:What's the rush ? Why are the ephemeral level 80 values important ? When we still have a lot of implementations/tweaks/cleanup ahead, spending time on level 80 computations is, in fact, wasting time. We've managed to port a good chunk of the 3.0 code in about 100 commits, what's the reason to divert the "war effort" ?

As Knaughty said, 4.0 comes out today. The deluge of PM's, whispers, and e-mails asking "What's the best X?" have already started.

Ignore them.
Look, if we'd only have "aesthetic" changes at this point, it would be OK. Things like :
  • comments/wiki
  • improving layout/readability
  • cleanup

But we don't. We still have a lot of functional tasks. Few examples :
  • damage taken
  • vengeance
  • dynamic effects
  • new calcs (mind you, I'm emphasizing the implementation here, not the results)
  • checking and double-checking the input args (functions)

Finally, do remember that moving to a public repository was a decision also driven by the need to minimize the spoonfeeding. Conveniently enough, it is something that should free your schedule (as a developer). Knaughty says : "people (including me) want some sort of basis for working out how to spec tomorrow. The numbers Theck's provided are driving my 4.0 Basic FAQ". Fine. Then again, the repository is public.
People that desperately need level 80 values should simply download the source and work with it directly. Incessantly bugging Theck (one of the grand total total of 3 devs) is not helpful in any fucking way.
User avatar
tlitp
 
Posts: 487
Joined: Mon Jul 27, 2009 3:25 pm

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby Eredor » Tue Oct 12, 2010 5:19 am

tlitp wrote:What's the rush ? Why are the ephemeral level 80 values important ? When we still have a lot of implementations/tweaks/cleanup ahead, spending time on level 80 computations is, in fact, wasting time. We've managed to port a good chunk of the 3.0 code in about 100 commits, what's the reason to divert the "war effort" ?


I'm playing 3 classes and 6 specs on a regular basis for my guild and I am rapidly panicking as I thought changes would come nearer to cataclysm.
I really don't have time to study everything for tomorrow, I just need quick summaries, such as Theck's recommended rotations and when I have more time I will study more in-depth.

I am extremely grateful to Theck and the maintankadin community for helping a lot for this 4.01, as it always did for previous iterations.
Any decency in my paladin tanking is strictly thanks to your work guys.
User avatar
Eredor
Maintankadonor
 
Posts: 42
Joined: Thu Oct 01, 2009 4:45 am

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby knaughty » Tue Oct 12, 2010 5:34 am

tlitp wrote:Knaughty says : "people (including me) want some sort of basis for working out how to spec tomorrow. The numbers Theck's provided are driving my 4.0 Basic FAQ". Fine. Then again, the repository is public.
People that desperately need level 80 values should simply download the source and work with it directly. Incessantly bugging Theck (one of the grand total total of 3 devs) is not helpful in any fucking way.

Theck can point them at my FAQ - that's what it's for. Or ignore them, FFS.

But if you want the FAQ, I need the data. I'm not going to install MATLAB to get it. I used to run FLEXnet licence servers for compiler and 3D modelling tools back in the goddamn 90s, I'm not doing that again over a decade later. Also: Not buying MATLAB, and not installing the open source clone.

"RTFsource_code" is the reason I no longer use Linux - I got tired of compiling my own damn operating system. I can do it, I just have better things to do with my time.

To veer briefly on-topic for the off-topic sidetrack: If Theck wants to publish the numbers for level 80... guess what, he can - it's his side-hobby to his hobby.

@Eredor: Check the basic FAQ. It should cover what you need for playing tankadin this week.
This isn't the "Offtankadin" forum. My MoP FAQ: http://tinyurl.com/FAQ-5-0
- Knaughty.
User avatar
knaughty
Maintankadonor
 
Posts: 1846
Joined: Mon Dec 17, 2007 10:06 pm
Location: Sydney, plotting my next diatribe against the forces of ignorance!

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby alsache » Tue Oct 12, 2010 5:37 am

The downloader is currently pushing 4.0.1.13164... the PTR build was 13162. Not sure if that means anything has changed.
Image
alsache
 
Posts: 7
Joined: Mon Jul 27, 2009 10:15 am

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby knaughty » Tue Oct 12, 2010 5:38 am

Also: I really do appreciate all the work and effort in the Matlabadin project. That may not have come across in my previous post.
This isn't the "Offtankadin" forum. My MoP FAQ: http://tinyurl.com/FAQ-5-0
- Knaughty.
User avatar
knaughty
Maintankadonor
 
Posts: 1846
Joined: Mon Dec 17, 2007 10:06 pm
Location: Sydney, plotting my next diatribe against the forces of ignorance!

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby theckhd » Tue Oct 12, 2010 6:20 am

tlitp wrote:
theckhd wrote:
tlitp wrote:What's the rush ? Why are the ephemeral level 80 values important ? When we still have a lot of implementations/tweaks/cleanup ahead, spending time on level 80 computations is, in fact, wasting time. We've managed to port a good chunk of the 3.0 code in about 100 commits, what's the reason to divert the "war effort" ?

As Knaughty said, 4.0 comes out today. The deluge of PM's, whispers, and e-mails asking "What's the best X?" have already started.

Ignore them.
Look, if we'd only have "aesthetic" changes at this point, it would be OK. Things like :
  • comments/wiki
  • improving layout/readability
  • cleanup

But we don't. We still have a lot of functional tasks. Few examples :
  • damage taken
  • vengeance
  • dynamic effects
  • new calcs (mind you, I'm emphasizing the implementation here, not the results)
  • checking and double-checking the input args (functions)

Finally, do remember that moving to a public repository was a decision also driven by the need to minimize the spoonfeeding. Conveniently enough, it is something that should free your schedule (as a developer). Knaughty says : "people (including me) want some sort of basis for working out how to spec tomorrow. The numbers Theck's provided are driving my 4.0 Basic FAQ". Fine. Then again, the repository is public.
People that desperately need level 80 values should simply download the source and work with it directly. Incessantly bugging Theck (one of the grand total total of 3 devs) is not helpful in any fucking way.


In my mind, the whole point of the code is to help people optimize. My "job" here, as it were, is to take the results of that code and write intelligent commentary about them so that people can make informed decisions.

While they could download and run the code, I don't expect them to. Maybe a few will, and great for them. But realistically, it's damn near impossible to sit down for the first time with a code base as complex as this and make any sense of it in a reasonable time frame.

The real advantage of having the code in a public repository is that it makes it more convenient for multiple people to work on it and proofread it. So far that hasn't panned out that much, as it's mostly you and me making changes and commits. But it's still pretty convenient to know that no matter where I am, I can download the latest version and make edits in whatever spare time I can scrounge up.

Are there still lots of things to do for 85? Sure. But most of the ones you listed are the icing, not the cake, and we still have two months to do them. For a first approximation, vengeance AP can be static, dynamic events can be approximated or ignored, and damage intake is mostly irrelevant (at least as far as TPS calculations go). And most of the work I'm doing on the code right now will have to be done for level 85 anyway. Most of the "wasted" time simply comes from having to post and commentate the results, which I think is a fair price for getting this information out in time to be useful for 4.0.1.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby theckhd » Tue Oct 12, 2010 7:03 am

Just a quick note, I found an error in the simulation code. It was clearing Holy Power every time we cast ShoR, even if we missed. I've corrected the error and posted new numbers. The major two rammifications are:

1) DPS goes up (yay)
2) Sacred Duty prioritization now shows a more distinct effect, because we run into cases where J and ShoR actually do come off of cooldown at the same time. Unfortunately, the distinct effect is "it's still not worth it because it also causes empty GCDs."
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby theckhd » Tue Oct 12, 2010 7:25 am

Aside: Rotation Modeling

While the priority code is very nice, simming things out whenever you need it is pretty time intensive. As a shortcut, I've been saving a few useful outputs so that I can just load them up rather than re-run the sim.

However, the 939 rotation is very static, and easily dealt with analytically, which solves a lot of headaches. In this post, I'm going to work out the math I'm using to model the rotation so that others can double-check my work. The code can be found in the trunk if you want to take a look.


The Basics

939 can be modeled as a quasi-static rotation that looks like this:

CS-J-CS-X-CS-ShoR-

This is a 9-second rotation, but it's actually a little longer thanks to the possibility of ShoR misses. We'll deal with that later, first we want to document how many casts we get of each spell in those 9 seconds:

3 CS
1 J
? ShoR*
? AS
? HW
? Cons

CS/J are easy. ShoR is complicated by SD procs and the fact that we'll recast it immediately if it misses. AS/HW/Cons are complicated by Grand Crusader procs. We'll address both of these issues in turn.

ShoR handling
There are two components to getting an accurate value for the effective number of ShoR casts. First is dealing with Sacred Duty crits, second is figuring out the average number of GCDs it takes to cast ShoR.

Using the following notation, it's fairly simple to derive both of these:

p = chance of melee success (1-%miss-%dodge-%parry)
q = 1-p (%miss+%dodge+%parry)
s = chance of sacred duty proc
R = raw damage of ShoR before crits
C = ShoR crit multiplier (i.e. 2)
c = ShoR crit chance factor (i.e. 1+%crit)

At three holy power, we cast ShoR. It could hit or miss, so we start with the form:

dmg = p*(average damage of a hit on the first cast)+q*(other stuff)

On the first cast, there's an s chance of a crit for CR damage, and a (1-s) chance of a regular ShoR, which could be a crit or a hit, with average damage cR:

dmg = p*( sCR + (1-s)*cR) + q*(other stuff)

If the first ShoR misses, we lose Sacred Duty, so we no longer have to worry about that. In that case, we cast another ShoR, which has the usual chance p of hitting for cR or q for missing:

dmg = p*( s*CR + (1-s)*cR) + q*( p*cR + q*(other stuff))

You can already see where this is going - recursion. "other stuff" is always p*cR+q*(other stuff). If we start multiplying out that term, we get:

dmg = p*( s*CR + (1-s)*cR) + p*cR*(q + q^2 + q^3 + ....)

The terms of the form q^n form a geometric series that converges to q/(1-q):

dmg = p*( s*CR + (1-s)*cR) + p*cR*q/(1-q)

We can pull out c*R and do some algebra to get

dmg = p*cR*(1 + s*(C/c-1) + q/(1-q)) = p*cR*(s(C/c-1)+1/(1-q)) = p*cR*(s(C/c-1)+1/p) = cR*(p*s*(C/c-1)+1)

or, written another way,

dmg = R*(c + p*s*(C-c))

In other words, we get (c + p*s*(C-c)) "casts" of ShoR out, multiplied by the raw damage (or 1+p*s*(C/c-1) casts multiplied by the "net" damage c*R).

The GCD cost of re-casting ShoR is much easier to calculate. There is a probability p that we succeed on the first cast and only require 1 GCD, a probability of q*p that we succeed on the second cast, q^2*p on the third, and so forth. Multiplying each of those probabilities by the number of GCDs looks like this:

G= 1*p + 2*qp + 3*pq^2 + 4*pq^3 + 5*pq^4 + ...

This is a form of arithmetic power series, and while I could get an analytical solution to it, it's much faster for me to just let MATLAB calculate the first 15 terms or so, by which it converges enough that we'll never notice a difference (It actually converges to within .0001 of the final value in about 7 terms).

Avenger's Shield, Holy Wrath, and Consecration
Grand Crusader makes dealing with the "X" in the rotation a bit complicated. It's not as simple as just saying "we cast AS every other cycle, and Holy Wrath in the alternate ones if we don't get a GC proc." This is because if you do get a GC proc, you've put AS on cooldown and the next cycle becomes the "HW if no GC" portion.

Instead, you have to ask the question, "for any given cycle, what's the chance that AS will be off of cooldown when X occurs." It's fairly easy to figure this out, starting from an initial cycle where AS is not on cooldown.

Let p be the probability that GC procs at least once in three Crusader strikes (i.e. 1-0.8^3). q=1-p as before. We could then write a table like this:

Code: Select all
Iteration     p(AS)        q(AS)
1              1             0
2              p             q
3            q+p^2        1-q^2-p^2
4         1-q^2-qp^2       q^2+qp^2
5       q^3+q^2*p^2+p    q-q^2*p^2-q^3


While it may not be immediately obvious from the table because I've simplified expressions, there's actually a pattern here. The element in the p(AS) column of row N is always p times the p(AS) element in row N-1 plus the element in q(AS) of row N-1. In other words, it's

p(AS,N)=p*(probability that AS was cast on previous X) + (probability AS was not cast on previous X)

p(AS,N)=p*p(AS,N-1)+q(AS,N-1)

Again, this might converge, but it's ugly enough that I'd rather do it numerically. I just use this rule to generate the table down through 50 iterations and define P=p(AS,50) as the probability we cast AS in X. Actually, I'm defining mean(p(AS,49:50)) as the probability, because if you don't spec Grand Crusader, the method "screws up" a bit and alternates between 0 and 1. Taking the mean short-circuits this to give us the proper value of 0.5.

Consecration can only be cast every 36 seconds in this scheme, which means that it only gets cast once every 4 cycles regardless of glyph.

Holy Wrath is then 1-P if we ignore Consecration, or 1-P-0.25 if we use Consecration.

I've ignored seal casts up until now, but those are easy - 3 chances from CS, one from Judgement. If we use p for melee hit and r for ranged hit, that's 3p+r.

So our ability usage looks like this:

Code: Select all
Skill #casts               evaluated
CS:   3                      3
J:    1                      1
ShoR: c+p*s*(C-c)            1.4784*
AS:   P                      0.6614
HW:   1-P-(0 or 0.25)        0.3386
Cons: (0 or 0.25)            0
Seal  3*p+r                  3.6042


All of that occurs in just over 9 seconds due to ShoR misses. The exact length of the cycle should be:

9+1.5*(G-1)



Running the code we get the following output:
Code: Select all
    consflag: 0
     xtragcd: 0.1382
    numcasts: [11x1 double]
       coeff: [11x1 double]
       acdps: 5.8254e+003
       padps: 1.9626e+003
      totdps: 7.7880e+003


Or 7788 DPS. For comparison, prio_sim gave us values of 7758 and 7767, presumably because of discretization of ShoR misses. "acdps" is the DPS from the stuff we've modeled here, "padps" is the passive DPS from censure, melee, and SoT procs.

For most of the rest of the simulations, I'm going to be using the analytical model simply because it's a little faster to work with.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby Rhiannon » Tue Oct 12, 2010 7:38 am

"Our new queue is ShoR>CS>J>AS>HW. Feel free to slip Cons in above HW if the boss is stationary and mana isn't an issue."

Not that it's a huge concern, but where does Hammer of Wrath fit in? Glyphed judgement hits 30% harder with a 33% longer cd, but I imagine that's a way too simplistic approach given we're dealing with GCD sized chunks of time. Either way I'd imagine HoW is very comparable to both judgement and AS, further devaluing Grand Crusader?

Edit: and also, am I right in thinking that in a fight where you start in melee range you would probably prioritise AS over J for your first non-CS attack, due to not having 5 stack censure up yet?

Edit #2: not really sure where to put this, it's somewhat relevant to this I guess. I notice you're using 63k hp as your starting point, and so get roughly 6k AP from vengeance. Has it been established anywhere whether a) strength of wrynn/hellscream is still in existence post-4.0 and b) does vengeance work off 10% of total hp after all buffs, including the zone buff? If it does then we're somewhat double dipping from the zone buff, getting another ~2k AP in addition to +30% damage. And thirdly if we're getting 8k AP from vengeance rather than 6k, do any abilities scale differently enough for this to change anything? I know holy wrath scales poorly, but it was already lowest priority anyway, so that doesn't change much.
Rhiannon
 
Posts: 719
Joined: Mon Mar 03, 2008 8:17 am

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby theckhd » Tue Oct 12, 2010 8:35 am

Hammer of Wrath is weaker than anything except CS and Holy Wrath (see the ability comparison, now updated on the first page of the thread). You won't want to push back CS for obvious reasons. However, you could seamlessly slip HoW into the queue like this:

ShoR>CS>J>AS>(Cons if mana)>HoW>HW.

As far as a starting rotation, you could always pull with AS-J-CS and fill the gap that appears with Cons or Divine Plea. The early Judgement will help offset the cost of Cons (at least compared to delaying J until 5 stacks). If you actually start in melee range, then yes, I suspect it would be a slight improvement to use AS over J in the first cycle, as long as you're consistent about following J>AS to resolve future clashes.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby Rhiannon » Tue Oct 12, 2010 9:02 am

From the ability comparison AS hits considerably harder than Judgement, but we should prioritise judgement over it, if I'm following it correctly. ("Putting [AS] above Judgement inevitably causes empty GCDs and a drop in DPS, no matter what else you try and fill the rest of the queue with.")

In HoW range, with this 6 second CD ability opening up are you not able to prioritise AS over judgement again, with HoW there to fill any empty GCDs that would have occured? Not exactly what I initially asked, but does that follow? I know the last 20% of the boss' health isn't likely to be a place to have huge threat issues, but just wondering if that makes sense.

Edit - ugh, forgot about sacred duty meaning that judgement offers more than just its superficial damage value of 5899. Also, not sure if you saw my edit regarding Vengeance vs the ICC buff, as I made it around the same time you replied.
Rhiannon
 
Posts: 719
Joined: Mon Mar 03, 2008 8:17 am

Re: Theck's MATLAB thread - Cataclysm/4.x

Postby theckhd » Tue Oct 12, 2010 10:17 am

I haven't tried running the priority module with Hammer of Wrath included yet. It's on the list of things to try, but first I want to finish the glyph and stat comparisons and re-write my Talent Spec guide.

HoW will definitely help mitigate those empty GCDs, and it may be enough to change the queue below 20%. I just can't say for certain until I run the sim though. I may run it in the background while I edit my talent spec guide, so if we're lucky I'll have those numbers later today or tomorrow.

I've not seen anything confirming or denying the presence of Strength of Wrynn. For the moment I'm assuming it's gone. If it isn't, I can re-run the calculations easily enough.

Increasing to 8k AP will certainly change the values, but for the most part everything scales with AP anyway. With our old abilities, everything was pretty close in damage and 2k AP could make a real difference. But our abilities are so disparate now that even 2k AP is probably not enough to change the damage orders. Holy Wrath will just continue to fall behind, but it was the low man on the single-target totem pole anyhow.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 6.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 6211
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

PreviousNext

Return to Advanced Theorycraft and Calculations

Who is online

Users browsing this forum: No registered users and 1 guest

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