Theck's MATLAB TPS analysis  WotLK/3.x
Moderators: Fridmarr, Worldie, Aergis, theckhd
Fridmarr wrote:Majiben wrote:Yeah sorry I usually write down additive multiplier as (1+ x% +y%)
I thought the BV meta only considered block value on gear and that Redoubt was ignored?
This is consistent with them being additive isn't it?
(gear * meta) + (gear * redoubt)
 Amaranthea
 Posts: 178
 Joined: Tue Feb 10, 2009 12:10 pm
Well that's one way to say that they are additve rather than multiplicative. Though it is a bit inaccurate since you aren't taking str into account. The X and Y look like this in this case:
 Code: Select all
(1+.30+.05)
Last edited by majiben on Fri Feb 20, 2009 12:57 pm, edited 1 time in total.
Amirya wrote:some bizarre lovechild of Hawking, Einstein, and Theck

majiben  Moderator
 Posts: 6999
 Joined: Fri Aug 22, 2008 4:37 pm
 Location: Retired
Majiben wrote:Well that's one way to say that they are additve rather than multiplicative. Thpugh it is a bit inaccurate since you aren't taking str into account. The X and Y look like this in this case:
 Code: Select all
(1+.30+.05)
Yeah this is the easiest way to put it.
 Amaranthea
 Posts: 178
 Joined: Tue Feb 10, 2009 12:10 pm
I've changed my MATLAB code to be
Where Redoubt = 1.3 (or 1.x with x talent points) and BV_Meta is 0.05 (or 0 if you don't have it gemmed).
Also, I feel bad about the thread title  It's not my spreadsheet, it's Jonesy's. I've just taken the math from his spreadsheet and put it into MATLAB, which is (basically) a programming language, so that I can do analysis more easily.
"Theck's MATLAB TPS analysis" would be more accurate, but I still feel bad that Jonesy doesn't somehow get credit for doing 90% of the work.
 Code: Select all
block_value=(STR.*0.5 + Gear_BV + extra_BV).*(Redoubt + BV_Meta);
Where Redoubt = 1.3 (or 1.x with x talent points) and BV_Meta is 0.05 (or 0 if you don't have it gemmed).
Also, I feel bad about the thread title  It's not my spreadsheet, it's Jonesy's. I've just taken the math from his spreadsheet and put it into MATLAB, which is (basically) a programming language, so that I can do analysis more easily.
"Theck's MATLAB TPS analysis" would be more accurate, but I still feel bad that Jonesy doesn't somehow get credit for doing 90% of the work.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7655
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
OK, doing a little bit of reworking here. First of all, from now on all the new plots will use character sheet strength as the xaxis. Thus, the axis is:
which should correctly reflect what's seen on the character sheet. Also, I fixed the base STR and STA values, which were 173 and 163 respectively (which included talent contributions  thus, they were double dipping).
The new base stats are:
Please let me (and Jonesy) know if these are incorrect.
Since it's buried in the other thread, here are the mfiles again, in case anyone wants to check my code  you can open them in firefox and it treats them like a text file:
compare_ratings.m  performs the calculation that generates the plots in this post
PallyTPS.m does the base calculation, exactly like the spreadsheet
stats_recalc.m  required for the others to work, takes base stats and calculates net values used in ability_recalc
ability_recalc.m  required for the others to work, calculates DPS and TPS for our abilities
Plots to come shortly
 Code: Select all
x=(Base_STR+Gear_STR).*DS;
which should correctly reflect what's seen on the character sheet. Also, I fixed the base STR and STA values, which were 173 and 163 respectively (which included talent contributions  thus, they were double dipping).
The new base stats are:
 Code: Select all
%base stats
Base_STR=151;
Base_STA=143;
Base_AGI=90;
Base_INT=98;
Base_SPI=108;
Base_AP=220;
Base_exp=0; %for racial expertise  3 for humans with mace/sword,
% 5 for dwarves with mace
Please let me (and Jonesy) know if these are incorrect.
Since it's buried in the other thread, here are the mfiles again, in case anyone wants to check my code  you can open them in firefox and it treats them like a text file:
compare_ratings.m  performs the calculation that generates the plots in this post
PallyTPS.m does the base calculation, exactly like the spreadsheet
stats_recalc.m  required for the others to work, takes base stats and calculates net values used in ability_recalc
ability_recalc.m  required for the others to work, calculates DPS and TPS for our abilities
Plots to come shortly
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7655
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
<edit> Updated plots are available, see the table of contents.
DPS
Pretty much the same as the other plot, but the integration of spell miss to Holy Shield DPS significantly shifts the crossing point. By the time your charactersheet STR is higher than 865, Hit will grant you more DPS than BV per itemization point.
TPS
Same as DPS  the crossover happens far sooner now, around 1075.
Again, this is the charactersheet STR, so you can read it directly off of the Armory to determine where you are on this graph.
DPS
Pretty much the same as the other plot, but the integration of spell miss to Holy Shield DPS significantly shifts the crossing point. By the time your charactersheet STR is higher than 865, Hit will grant you more DPS than BV per itemization point.
TPS
Same as DPS  the crossover happens far sooner now, around 1075.
Again, this is the charactersheet STR, so you can read it directly off of the Armory to determine where you are on this graph.
Last edited by theckhd on Fri Mar 13, 2009 8:20 am, edited 1 time in total.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7655
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
theckhd wrote:Also, I feel bad about the thread title  It's not my spreadsheet, it's Jonesy's. I've just taken the math from his spreadsheet and put it into MATLAB, which is (basically) a programming language, so that I can do analysis more easily.
"Theck's MATLAB TPS analysis" would be more accurate, but I still feel bad that Jonesy doesn't somehow get credit for doing 90% of the work.
Just to put your mind at rest, I really don't care. I do think it's funny that I wrote it in Excel so as to be more accessible (my preference would have been a python script) but that it's received almost as much attention since you ported it to Matlab than it did as an Excel sheet.
 Jonesy
 Posts: 418
 Joined: Fri Jul 13, 2007 1:23 am
It's all about the pretty pictures
Another thing I noticed. As much as I hate to say it, we should probably model Judgments of the Just in here just to get some firm numbers of the tps cost of the ability (not that it'll be a DPS gain if you have any mage except a FFB mage with you).
Another thing I noticed. As much as I hate to say it, we should probably model Judgments of the Just in here just to get some firm numbers of the tps cost of the ability (not that it'll be a DPS gain if you have any mage except a FFB mage with you).
WHAT WOULD BEST DESCRIBE YOUR PERSONALITY?
Moonlight Sonata Techno Remix
Scriggle  85 Fire Mage
Fizzmore  81 Mut Rogue
Adorania  80 Disc Priest

Dorvan  Maintankadonor
 Posts: 8462
 Joined: Wed Apr 04, 2007 3:28 pm
That would be modeled by changing
which is the boss's swing_timer in seconds, I believe. JotJ would just increase that value by 20%, which would nerf the Holy Shield threat component.
Just to test, if I change that constant to 1.2*2.4, the crossover happens at 905 for DPS and 1131 for TPS.
If instead you were wondering what the DPS and TPS breakdown looks like for a boss with 2.4 swing_timer with and without JotJ, it is:
With JotJ: DPS=133.7, TPS=370.5
Without: DPS=160.4, TPS=444.7
None of the other abilities are affected. Their values are as follows, from the "with" case:
So for that boss, it's about a 74 TPS loss. HS depends on swing_timer as 1/swing_timer, so the difference in threat should always be (11/1.2)=1/6, or roughly 17% of the base value.
Using the above numbers, the other abilities generate 7,736 TPS, while Holy Shield is generating 371 (or 445), which is 4.5% (or 5.4%) of your total threat. So comparing 7736+445 to 7736+371, we see that your threat drops from 8181 to 8107, a drop of 0.9%.
More generally, threat production should follow something like:
A + B/swing_timer, where A is the threat caused by other abilities, and B is a coefficient that models HS's threat. In our case, B/swing_timer=445, so B should be roughly 1068, and A is 7736. The total reduction in threat should scale as
[(A+B/x)(A+B/(1.2*x))]/(A+B/x), which simplifies to
(1/6)*1/(1+A*x/B)
Quickly checking this in matlab: For a 1.0 speed boss, this is a 2% reduction in total threat output, and drops to around 0.7% for a 3.0 speed boss. I can post the plot later if anyone's interested.
 Code: Select all
swing_timer=2.4;
which is the boss's swing_timer in seconds, I believe. JotJ would just increase that value by 20%, which would nerf the Holy Shield threat component.
Just to test, if I change that constant to 1.2*2.4, the crossover happens at 905 for DPS and 1131 for TPS.
If instead you were wondering what the DPS and TPS breakdown looks like for a boss with 2.4 swing_timer with and without JotJ, it is:
With JotJ: DPS=133.7, TPS=370.5
Without: DPS=160.4, TPS=444.7
None of the other abilities are affected. Their values are as follows, from the "with" case:
 Code: Select all
DPS_breakdown =
'HS' [133.7074]
'ShoR' [911.3134]
'JoV' [294.0537]
'DoT' [418.9201]
'HotR' [568.4219]
'Cons' [365.3158]
'Melee' [443.5974]
TPS_breakdown =
'HS' [ 370.5487]
'ShoR' [2.5256e+003]
'JoV' [ 814.9229]
'DoT' [1.1610e+003]
'HotR' [1.5753e+003]
'Cons' [1.0124e+003]
'Melee' [ 647.0312]
So for that boss, it's about a 74 TPS loss. HS depends on swing_timer as 1/swing_timer, so the difference in threat should always be (11/1.2)=1/6, or roughly 17% of the base value.
Using the above numbers, the other abilities generate 7,736 TPS, while Holy Shield is generating 371 (or 445), which is 4.5% (or 5.4%) of your total threat. So comparing 7736+445 to 7736+371, we see that your threat drops from 8181 to 8107, a drop of 0.9%.
More generally, threat production should follow something like:
A + B/swing_timer, where A is the threat caused by other abilities, and B is a coefficient that models HS's threat. In our case, B/swing_timer=445, so B should be roughly 1068, and A is 7736. The total reduction in threat should scale as
[(A+B/x)(A+B/(1.2*x))]/(A+B/x), which simplifies to
(1/6)*1/(1+A*x/B)
Quickly checking this in matlab: For a 1.0 speed boss, this is a 2% reduction in total threat output, and drops to around 0.7% for a 3.0 speed boss. I can post the plot later if anyone's interested.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7655
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Looks good. I'm actually assuming that 2.4 was taken from the assumption of a boss swing timer of 2 seconds (quite common) with JotJ then added on, but that's not really all that important to the overall picture.
WHAT WOULD BEST DESCRIBE YOUR PERSONALITY?
Moonlight Sonata Techno Remix
Scriggle  85 Fire Mage
Fizzmore  81 Mut Rogue
Adorania  80 Disc Priest

Dorvan  Maintankadonor
 Posts: 8462
 Joined: Wed Apr 04, 2007 3:28 pm
Dorvan wrote:Looks good. I'm actually assuming that 2.4 was taken from the assumption of a boss swing timer of 2 seconds (quite common) with JotJ then added on, but that's not really all that important to the overall picture.
That's entirely possible, but Jonesy would have to answer that question.
For x=2.0, it evaluates to a 1.08% threat reduction.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of GrehnSkipjack.
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
MATLAB 5.x, Call to Arms 5.x, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty

theckhd  Moderator
 Posts: 7655
 Joined: Thu Jul 31, 2008 3:06 pm
 Location: Harrisburg, PA
Hmm, if you're going to use Matlab, do you think you could do a mesh plot of the interaction between AP and Hit? It's something I've been meaning to look at since forever, but I'm always busy doing something.
I've also considered a 3d plot of AP, Hit, and Crit interactions with color denoting TPS effect, but I haven't touched matlab in so long I forget what such a graph is called, even.
Btw, good work w/respect to all of this.
I've also considered a 3d plot of AP, Hit, and Crit interactions with color denoting TPS effect, but I haven't touched matlab in so long I forget what such a graph is called, even.
Btw, good work w/respect to all of this.
Cordelia, Council Member of Unleashed
TankadinPoints Theory & Breakdown
TankadinPoints Theory & Breakdown

cordelia  Posts: 630
 Joined: Tue Oct 09, 2007 3:33 am
First off love the name cordie. (Angel/Buffy were amazing).
Second you guys should like break this down for retards like me who are really really good at math but hate statistics/graphing stuff.
And what it all really means or hell make something like this for new SoR/SoB/SoC.
Second you guys should like break this down for retards like me who are really really good at math but hate statistics/graphing stuff.
And what it all really means or hell make something like this for new SoR/SoB/SoC.
 Lowgrus
 Posts: 249
 Joined: Mon Jun 04, 2007 11:21 pm
Return to Advanced Theorycraft and Calculations
Who is online
Users browsing this forum: No registered users and 1 guest