Theck's MATLAB thread  Cataclysm/4.x
Moderators: Fridmarr, Worldie, Aergis, theckhd
Re: Theck's MATLAB thread  Cataclysm/4.x
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 ontopic for the offtopic sidetrack: If Theck wants to publish the numbers for level 80... guess what, he can  it's his sidehobby to his hobby.
@Eredor: Check the basic FAQ. It should cover what you need for playing tankadin this week.

knaughty  Maintankadonor
 Posts: 3558
 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
The downloader is currently pushing 4.0.1.13164... the PTR build was 13162. Not sure if that means anything has changed.
 alsache
 Posts: 31
 Joined: Mon Jul 27, 2009 10:15 am
Re: Theck's MATLAB thread  Cataclysm/4.x
Also: I really do appreciate all the work and effort in the Matlabadin project. That may not have come across in my previous post.

knaughty  Maintankadonor
 Posts: 3558
 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
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 emails 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 doublechecking 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 GrehnSkipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7793
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
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."
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 GrehnSkipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7793
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
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 rerun 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 doublecheck 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 quasistatic rotation that looks like this:
CSJCSXCSShoR
This is a 9second 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 = 1p (%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 (1s) chance of a regular ShoR, which could be a crit or a hit, with average damage cR:
dmg = p*( sCR + (1s)*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 + (1s)*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 + (1s)*cR) + p*cR*(q + q^2 + q^3 + ....)
The terms of the form q^n form a geometric series that converges to q/(1q):
dmg = p*( s*CR + (1s)*cR) + p*cR*q/(1q)
We can pull out c*R and do some algebra to get
dmg = p*cR*(1 + s*(C/c1) + q/(1q)) = p*cR*(s(C/c1)+1/(1q)) = p*cR*(s(C/c1)+1/p) = cR*(p*s*(C/c1)+1)
or, written another way,
dmg = R*(c + p*s*(Cc))
In other words, we get (c + p*s*(Cc)) "casts" of ShoR out, multiplied by the raw damage (or 1+p*s*(C/c1) casts multiplied by the "net" damage c*R).
The GCD cost of recasting 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. 10.8^3). q=1p as before. We could then write a table like this:
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 N1 plus the element in q(AS) of row N1. 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,N1)+q(AS,N1)
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 shortcircuits 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 1P if we ignore Consecration, or 1P0.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:
All of that occurs in just over 9 seconds due to ShoR misses. The exact length of the cycle should be:
9+1.5*(G1)
Running the code we get the following output:
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.
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 rerun 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 doublecheck 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 quasistatic rotation that looks like this:
CSJCSXCSShoR
This is a 9second 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 = 1p (%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 (1s) chance of a regular ShoR, which could be a crit or a hit, with average damage cR:
dmg = p*( sCR + (1s)*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 + (1s)*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 + (1s)*cR) + p*cR*(q + q^2 + q^3 + ....)
The terms of the form q^n form a geometric series that converges to q/(1q):
dmg = p*( s*CR + (1s)*cR) + p*cR*q/(1q)
We can pull out c*R and do some algebra to get
dmg = p*cR*(1 + s*(C/c1) + q/(1q)) = p*cR*(s(C/c1)+1/(1q)) = p*cR*(s(C/c1)+1/p) = cR*(p*s*(C/c1)+1)
or, written another way,
dmg = R*(c + p*s*(Cc))
In other words, we get (c + p*s*(Cc)) "casts" of ShoR out, multiplied by the raw damage (or 1+p*s*(C/c1) casts multiplied by the "net" damage c*R).
The GCD cost of recasting 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. 10.8^3). q=1p 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 1q^2p^2
4 1q^2qp^2 q^2+qp^2
5 q^3+q^2*p^2+p qq^2*p^2q^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 N1 plus the element in q(AS) of row N1. 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,N1)+q(AS,N1)
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 shortcircuits 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 1P if we ignore Consecration, or 1P0.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*(Cc) 1.4784*
AS: P 0.6614
HW: 1P(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*(G1)
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 GrehnSkipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7793
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
"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 nonCS 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 post4.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.
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 nonCS 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 post4.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: 1061
 Joined: Mon Mar 03, 2008 8:17 am
Re: Theck's MATLAB thread  Cataclysm/4.x
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 ASJCS 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.
ShoR>CS>J>AS>(Cons if mana)>HoW>HW.
As far as a starting rotation, you could always pull with ASJCS 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 GrehnSkipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7793
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
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.
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: 1061
 Joined: Mon Mar 03, 2008 8:17 am
Re: Theck's MATLAB thread  Cataclysm/4.x
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 rewrite 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 rerun 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 singletarget totem pole anyhow.
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 rerun 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 singletarget totem pole anyhow.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7793
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re:
theckhd wrote:Talent rundown.
 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 
Just to give a better idea of what to expect @85, I'll list alternative values.
A few hacks :
 base.swing 1.8>2.8
 base.dps 250.6>409.6
 total physical hit 4%, total spell hit 4.25%, total expertise skill 13
 Code: Select all
DPS per point
Talent originalSim hackSim
SotP 43.4 50.4
Hallowed Ground 0.0 0.0
WotL 284.4 319.6
Reckoning 97.8 149.6
Arbiter of the Light 23.2 22.2
JotP 30.6 36.5
Crusade 76.5 92.8
Rule of Law 40.5 48.9
Grand Crusader 53.9 49.0
Sacred Duty 287.3 260.0
Some highlights :
 as expected, the values of GC/SD will drop in the hit/expstarved lvl 85 environment
 Reck gets significantly better, as weapon damage will skyrocket (mind you, this analysis is for ST only)
 Crusade dominates the <100 dps/point world

tlitp  Posts: 556
 Joined: Mon Jul 27, 2009 3:25 pm
Glyph Comparison
Setup:
Talents: 0/31/5 with all prot damage talents + Crusade
Glyphs: All in various configurations, see description
Seal: SoT
Gear: T10 sample set
This is very similar to the talent comparison, but with glyphs. In fact, truth be told, I wrote this calculation by copy/pasting the talent calc code and editing it from there.
We start with all glyphs active  again, an unpossible situation  and take a baseline measurement. We then disable each glyph one by one and take new measurements. The difference is the DPS contribution of the glyph, which is displayed below.
For HotR I've used a "fake" AoE rotation that simply replaces CS with HotR in the analytical model. This should work fine for the glyph, since HotR every 3 seconds will probably still be a staple of our AoE rotation. However, it's worth noting that I have not as of yet done any serious calculation of optimal AoE rotations, so it's possible that when I get to that point we'll find that a 939 isn't the ideal choice for AoE.
I've also artificially set the expertise contribution from gear to 99 in this analysis, to ensure that SoT gets its full benefit. That puts us at exactly 25.87 expertise with the glyph, which is high enough to ensure that the other glyphs are accurately represented. The value of the SoT glyph will change if your expertise is higher than 16 without SoT active. At 16 expertise, it will have its full value, and it will linearly decrease to half of it's value between 16 and 26. Above 26 it will be at full value until you reach 46 expertise, at which point it will again linearly decrease to 0 at 56 expertise. If you want a piecewise function for that, it's:
where "exp" is your expertise without SoT active.
Now, on with the values:
SoT still reigns supreme as our highestdamage glyph for single targets. There's been a lot of talk about tanking with Seal of Insight, but it's worth noting that in these sims, Censure alone is responsible for around 725 DPS, and SoT procs are worth around 450470. So by tanking with Seal of Insight, you're trading around 1200 DPS (and presumably a threat loss) for more healing.
That said, the lead has narrowed appreciably. SotR is nipping at its heels, and AS isn't that far behind. Here are the crossover points (in expertise without the seal active) for each of the other glyphs:
In most practical scenarios, you won't have 53+ expertise without the glyph active, so it's safe to say that SoT will be one of our single target glyphs. If you're swapping in the HotR glyph for an AoE fight, SoT might end up being the odd man out just based on expertise considerations, though ShoR is a possibility as well given that you'll be using Inquisition.
ShoR (or SotR, I'll never get used to that new acronym) is our biggest "guaranteed" damage source for single targets, and will be a staple in our glyph lineup.
Avenger's Shield is a Major glyph (not Prime), but it's incredibly potent. The drawback is that you lose the bounce, which frankly, sucks. Also note that this is only a damage increase on singletargets, on multiple targets it's actually a loss provided your Shield regularly hits 2+ mobs. In all likelihood, we'll be swapping between AS for single target fights and an AoEfriendly glyph for multitarget fights. Note that this glyph will get about 20% weaker (give or take) if you don't spec Grand Crusader.
HotR is another incredibly potent glyph, and will likely be the goto Prime for aoe fights given that SotR and SoT are less attractive. It's a shame our CS glyph isn't this impressive.
Judgement and CS are both very weak glyphs, sadly. They're what you fill your primes with if you've got nothing else to pick up, but you won't miss them if you don't have them, much like the Judgement glyph in 3.3.
Consecration's glyph is a slight DPS increase when using Cons>HW priority. It's obviously a bigger boost in AoE, but as a Major glyph it's also not an option for swapping in for one of the Primes that become useless in AoE.
It's kind of a shame, really. From the plot, you'd hope that your Primes are SoT/ShoR/AS/HotR/Cons and your majors are J/CS just based on potency. But that's not how they've been allocated at all. I wouldn't be surprised if some of these numbers were tweaked once it becomes apparent how anemic two of our majors are (expecially CS).
On the other hand, we know have a quick and easy way to spot paladins that haven't done their homework  just check for a CS glyph.
TLDR Summary:
Setup:
Talents: 0/31/5 with all prot damage talents + Crusade
Glyphs: All in various configurations, see description
Seal: SoT
Gear: T10 sample set
This is very similar to the talent comparison, but with glyphs. In fact, truth be told, I wrote this calculation by copy/pasting the talent calc code and editing it from there.
We start with all glyphs active  again, an unpossible situation  and take a baseline measurement. We then disable each glyph one by one and take new measurements. The difference is the DPS contribution of the glyph, which is displayed below.
For HotR I've used a "fake" AoE rotation that simply replaces CS with HotR in the analytical model. This should work fine for the glyph, since HotR every 3 seconds will probably still be a staple of our AoE rotation. However, it's worth noting that I have not as of yet done any serious calculation of optimal AoE rotations, so it's possible that when I get to that point we'll find that a 939 isn't the ideal choice for AoE.
I've also artificially set the expertise contribution from gear to 99 in this analysis, to ensure that SoT gets its full benefit. That puts us at exactly 25.87 expertise with the glyph, which is high enough to ensure that the other glyphs are accurately represented. The value of the SoT glyph will change if your expertise is higher than 16 without SoT active. At 16 expertise, it will have its full value, and it will linearly decrease to half of it's value between 16 and 26. Above 26 it will be at full value until you reach 46 expertise, at which point it will again linearly decrease to 0 at 56 expertise. If you want a piecewise function for that, it's:
 Code: Select all
Expertise SoT Value (relative)
016 1
1626 1(exp16)/10
2646 1/2
4656 1/2(exp46)/10
where "exp" is your expertise without SoT active.
Now, on with the values:
 Code: Select all
Glyph DPS
CS 30.2
HotR 116.4
J 38.5
SoT 176.7
SotR 170.1
Cons 18.1
AS 140.8
SoT still reigns supreme as our highestdamage glyph for single targets. There's been a lot of talk about tanking with Seal of Insight, but it's worth noting that in these sims, Censure alone is responsible for around 725 DPS, and SoT procs are worth around 450470. So by tanking with Seal of Insight, you're trading around 1200 DPS (and presumably a threat loss) for more healing.
That said, the lead has narrowed appreciably. SotR is nipping at its heels, and AS isn't that far behind. Here are the crossover points (in expertise without the seal active) for each of the other glyphs:
 Code: Select all
ShoR 16.4
AS 18.0
HotR 19.4
J 53.8
CS 54.3
Cons 55.0
In most practical scenarios, you won't have 53+ expertise without the glyph active, so it's safe to say that SoT will be one of our single target glyphs. If you're swapping in the HotR glyph for an AoE fight, SoT might end up being the odd man out just based on expertise considerations, though ShoR is a possibility as well given that you'll be using Inquisition.
ShoR (or SotR, I'll never get used to that new acronym) is our biggest "guaranteed" damage source for single targets, and will be a staple in our glyph lineup.
Avenger's Shield is a Major glyph (not Prime), but it's incredibly potent. The drawback is that you lose the bounce, which frankly, sucks. Also note that this is only a damage increase on singletargets, on multiple targets it's actually a loss provided your Shield regularly hits 2+ mobs. In all likelihood, we'll be swapping between AS for single target fights and an AoEfriendly glyph for multitarget fights. Note that this glyph will get about 20% weaker (give or take) if you don't spec Grand Crusader.
HotR is another incredibly potent glyph, and will likely be the goto Prime for aoe fights given that SotR and SoT are less attractive. It's a shame our CS glyph isn't this impressive.
Judgement and CS are both very weak glyphs, sadly. They're what you fill your primes with if you've got nothing else to pick up, but you won't miss them if you don't have them, much like the Judgement glyph in 3.3.
Consecration's glyph is a slight DPS increase when using Cons>HW priority. It's obviously a bigger boost in AoE, but as a Major glyph it's also not an option for swapping in for one of the Primes that become useless in AoE.
It's kind of a shame, really. From the plot, you'd hope that your Primes are SoT/ShoR/AS/HotR/Cons and your majors are J/CS just based on potency. But that's not how they've been allocated at all. I wouldn't be surprised if some of these numbers were tweaked once it becomes apparent how anemic two of our majors are (expecially CS).
On the other hand, we know have a quick and easy way to spot paladins that haven't done their homework  just check for a CS glyph.
TLDR Summary:
 SoT, SotR, and AS are our highestDPS singletarget glyphs. SoT doesn't fall behind Judgement until almost 53 expertise
 Judgement and CS are both incredibly weak glyphs, as is Consecration for single targets.
 HotR is a very strong AoE glyph, and Consecration is a "reasonable" AoE glyph.
 For max singletarget DPS:
 Your Prime glyphs should be SoT>SotR>>J>CS
 Your Major glyphs should be AS>>Cons.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7793
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
As a side note, I really have to get in the lab and get some measurements done this afternon yet. The stat module is essentially unwritten right now, though with the analytical model it should be relatively easy. However, arrays always end up causing problems in the code, so it might take an hour or so of coding to get it done.
I will likely not get a chance to start it until after dinner, but I will try my best to get it up tonight yet. It's probably not a huge issue, but I know that some of the parsehunters would like this code available for tweaking.
I will likely not get a chance to start it until after dinner, but I will try my best to get it up tonight yet. It's probably not a huge issue, but I know that some of the parsehunters would like this code available for tweaking.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7793
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Re: Theck's MATLAB thread  Cataclysm/4.x
Theck, as always, thanks for your great work! Bring on the headaches!
 Sapria
 Posts: 25
 Joined: Wed Mar 18, 2009 7:35 am
Re: Theck's MATLAB thread  Cataclysm/4.x
Edit: I realized that its actually Floor((Str64)*.25) As that would be the same as Round((Str66)*.25+.5)
No, that's the weirdest thing. Its actually rounded, I tested with multiple strength values, and it works only if you round to the nearest int, some examples:
theckhd wrote: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.
No, that's the weirdest thing. Its actually rounded, I tested with multiple strength values, and it works only if you round to the nearest int, some examples:
 Code: Select all
Strength (X66)*.25 Parry Given
1590 381 381
1807 435.25 435
1668 400.5 401
1383 329.25 329
1522 364 364
1729 415.75 416
2060 498.5 499
1897 457.75 458
1815 437.25 437
1669 400.75 401
1523 364.25 364
1452 346.5 347
1598 383 383
1744 419.5 420
 daiceman
 Posts: 43
 Joined: Tue Apr 22, 2008 1:53 pm
Return to Advanced Theorycraft and Calculations
Who is online
Users browsing this forum: No registered users and 1 guest