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

Warning: Theorycraft inside.

Moderators: Fridmarr, Worldie, Aergis, theckhd

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

Postby theckhd » Fri Feb 20, 2009 12:01 pm

Old thread is old. Cata/4.x thread is here


In an effort to make this thread a little more manageable, I've deleted the post that was originally here (which is quoted in the first response anyway) and replaced it with this introductory post.

History: This thread actually spawned from the Hit so bad? thread, which was discussing the relative value of Hit Rating on tanking gear. I was curious about the scaling laws, so I took the formulae from Jonesy's Prot DPS/TPS spreadsheet and threw them into my favorite numerical analysis tool, MATLAB.

Since the MATLAB discussion quickly started heading off-topic, the mods decided to split that part off into a new thread, which is what you're currently reading. Unfortunately, that means that the first page or so of this thread is basically unintelligible, because a lot of it is referring to discussion from the other thread.

Since then, I've modified the code structure to be more versatile, so that it can be used to model a variety of different scenarios. This post will act as a table of contents for all of the results the MATLAB code has been used to generate, as well as a basic introduction to how to use the code.


List of pertinent calculation results
Subdivided by category, more important results are large and bold, while ancillary or niche discussions are regular size.


Calculations updated for 3.3


Archives
3.2.2


3.2

3.1

3.0.x


Glossary
This section will define acronyms that appear over and over again in calculations. I have tried to be good about defining these clearly in newer calculations as well, but this master list should contain everything you need just in case.

Current Terminology (See below for discontinued acronyms)
  • 1HWS - One-Handed Weapon Specialization talent. May also be seen written OHWS.
  • A - Usually used to represent Glyph of Avenger's Shield when referring to glyphs. Often seen in conjunction with other glyphs, i.e. "JA" for Judgement + Avenger's Shield glyphs, "EA" for Exorcism + Avenger's Shield, etc.
  • AS - Avenger's Shield.
  • BP - Broken Promise.
  • C - Depends on the context.
    • When referring to glyphs, C refers to the Glyph of Consecration, and will often be used in conjunction with other glyphs, i.e. "JC" for Judgement + Consecration glyphs, "CE" for Consecration + Exorcism etc. May also be referred to as "Cons" in cases where a single-letter acronym would be ambiguous.
    • When referring to talents, C stands for the Crusade talent. It is usually seen preceded by a number representing the # of talent points, such as "2C" for 2/3 Crusade. Combinations of talents are usually written like "5V+2C" for 5/5 Conviction + 2/3 Crusade. May also be seen as "Crus" in cases where a single-letter acronym would be ambiguous.
  • Cons - Consecration, see C.
  • Conv - Conviction, see V.
  • Crus - Crusade, see C.
  • DUH - Cutesy acronym that stands for Demon, Undead, or Humanoid. Uused to refer to mobs or bosses which give Crusade the extra 3% damage. Note that Elementals are also DUH mobs, but the acronym isn't as cute if you have to fit an E in somewhere. An NPC which only gets the base 3% from Crusade is often called a "generic" or "no-DUH" mob.
  • E - Glyph of Exoricsm. Often seen in conjunction with other glyphs, i.e. "JE" for Judgement + Exorcism glyphs, "VE" for Vengeance + Exorcism etc.
  • Exor - Exorcism.
  • HotR - Hammer of the Righteous.
  • HS - Holy Shield.
  • HSsA - Holy Shield substitution with Avenger's Shield. Refers to a 969 variation where every 4th Holy Shield is replaced with Avenger's Shield.
  • J - Usually used to represent Glyph of Judgement when referring to glyphs. Often seen in conjunction with other glyphs, i.e. "JV" for Judgement + Vengeance glyphs, "JE" for Judgement + Exorcism, etc.
  • JsA - Judgement substitution with Avenger's Shield. Refers to a 969-variation where every 4th Judgement is replaced with Avenger's Shield.
  • JsHoW - Judgement substitution with Hammer of Wrath. Refers to a 969 variant where Judgement is replaced with Hammer of Wrath.
  • Jud - Judgement
  • LL - Last Laugh
  • LoO - Libram of Obstruction
  • LotSS - Libram of the Sacred Shield
  • R - Reckoning. It is usually seen preceded by a number representing the # of talent points, such as "3R" for 3/5 Reckoning. Combinations of talents are usually written like "5V+2R" for 5/5 Conviction + 2/5 Reckoning.
  • S - Seals of the Pure talent. Usually seen preceded by a number representing the # of talent points, such as "5S" for 5/5 Seals of the Pure. Combinations of talents are usually written like "5S+2R" for 5/5 Seals of the Pure + 2/5 Reckoning. May also be written "SotP" in cases where the single-letter acronym would be ambiguous.
    Note: In some of the old graphs, S was used to indicate the Seal of Vengeance glyph. See V.
  • ShoR - Shield of Righteousness
  • SoB - Seal of Blood (Martyr for Alliance)
  • SoR - [http://www.wowhead.com/?spell=21084]Seal of Righteousness[/url]
  • SotP - Seals of the Pure, see S.
  • SoV - Seal of Vengeance (Corruption for Horde)
  • T or TbtL - Touched by the Light talent.
  • V - Depends on the context.
    • When referring to glyphs, V will stand for the Glyph of Seal of Vengeance, and will often be used in conjunction with other glyphs, i.e. "JV" for Judgement + Vengeance glyphs, "VE" for Vengeance + Exorcism etc. Note that in some of the older graphs, S was used for the SoV glyph, this usage has been discontinued.
    • When referring to talents, V stands for the [ur=http://www.wowhead.com/?spell=20121]Conviction[/url] talent. In this context, it is usually seen preceded by a number representing the # of talent points, such as "5V" for 5/5 Conviction. Combinations of talents are usually written like "5V+2C" for 5/5 Conviction + 2/3 Crusade. May also be written "Conv" in cases where the single-letter acronym would be ambiguous.

Discontinued Terminology - may be found in older calculations
  • 6s-sub - Discontinued - Refers to a 969 variation where Exorcism is used in place of one of our 6-second cooldowns whenever available. If I ever need to refer to it again, it will be 6sE.
  • EoC - Exorcism on Cooldown. Refers to a 969 variation where Exorcism is used in a 9's slot whenever available, pushing back the 9-second ability that would have been used in that slot by 3 seconds. Also seen as "E-o-C" or "Exor-on-cooldown."
  • HotR-sub - Discontinued - Refers to a 969 variation where Exorcism is used in place of HotR when available. If I ever need to consider this case again, it will be HotRsE.
  • HSsE - Holy Shield substitution with Exorcism. Refers to a 969 variation where every other Holy Shield is replaced with Exorcism. Older calculations may also write this as "HSsub" or "HS-sub," but this usage has been discontinued.
  • HSS - Discontinued - see HSsE.
  • HSsub or HS-sub - Discontinued - see HSsE.
  • JsE - Judgement substitution with Exorcism. Refers to a 969-variation where every other Judgement is replaced with Exorcism. Older calculations may also write this as "Jsub" or "Jud-sub," but this usage has been discontinued.
  • Jsub - Discontinued - see JsE.


Code
If you'd like to mess around with the code yourself, you'll either need MATLAB or a variant thereof. MATLAB is stupidly expensive itself, but there are free alternatives, including FreeMat, Octave, and Scilab. I haven't tested any of the code in these programs, but I haven't used any fancy functions or anything, so they should natively be able to run the m-files.

The files themselves are available here: http://sites.google.com/site/theckhd/mfiles. The files are subdivided into folders according to their purpose. There are archive files containing the full set as well for those who want to download everything at once.

I hope to add a "user's guide" of sorts when I find some time, but it may be a while.
Last edited by theckhd on Mon Jan 11, 2010 9:17 am, edited 50 times in total.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7984
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby Fridmarr » Fri Feb 20, 2009 12:16 pm

theckhd wrote:
Amaranthea wrote:Don't forget that holy shield misses aren't implemented in Jonesy's spreadsheet yet, which should increase the relative value of hit rating.


Aren't they?

Code: Select all
Shield_of_Righteousness = (block_value + 400).* ... %inherent
    (100+(melee_crit + HotC).*Crit_Meta-boss_miss-boss_mcrit_supp)./100 .*...
    (OHWS.*SotT.*Crusade.*SU).* ... %talents/glyphs
    (CoE.*SanctRet) ...   %buffs/debuffs
    .*boss_resist_reduce ...  %boss resist
    ./6; %cooldown

The factor in the second line (and third due to wrapping, sorry about the formatting) takes into account the chance you miss a boss and the boss's melee crit suppression, as per the latest version of his spreadsheet. Even the old version I started off of had boss_miss included. Maybe I'm misunderstanding something though.


That looks like ShoR and Amaranthea is talking about holy shield. I could be wrong though, since I have no idea what that really says :)
Fridmarr
Global Mod
 
Posts: 9667
Joined: Sun Apr 08, 2007 1:03 am

Postby majiben » Fri Feb 20, 2009 12:17 pm

Theck are you going by ilvl or raw stat?
Amirya wrote:some bizarre lovechild of Hawking, Einstein, and Theck
User avatar
majiben
Moderator
 
Posts: 6999
Joined: Fri Aug 22, 2008 4:37 pm
Location: Retired

Postby theckhd » Fri Feb 20, 2009 12:19 pm

Whoops. That'll teach me to read more carefully.

Holy Shield:

Code: Select all
Holy_Shield = (0.09.*SP + 0.056.*AP + 211).* ...  %inherent
    ((1-player_avoid)/swing_timer).* ... %player avoidance
    (OHWS.*SotT.*Crusade*SU).* ... %talents/glyphs
    (CoE.*SanctRet).* ...   %debuffs
    boss_resist_reduce;     %boss resist


Is the "boss_resist_reduce" term the one we're referring to? That's in the latest version of the spreadsheet and included in my analysis, but wasn't in the version of the spreadsheet earlier this week. It has the form:

Code: Select all
boss_partial_resist=5.2; %hardcoded
boss_resist_reduce=(100-boss_partial_resist)/100;
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7984
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby theckhd » Fri Feb 20, 2009 12:20 pm

Majiben wrote:Theck are you going by ilvl or raw stat?


ilvl, unless I'm mistaken and there's a more subtle difference between "ilvl" and "equal itemization points." From the first post that has graphs:

Theck wrote:The plots show the increase in DPS given by 10 itemization points worth of each of the stats shown as a function of STR. I.e. 10 combat rating, 10 of a primary stat, or 20 AP, 11.6 Spellpower (10/0.86), or 15.3 Block Value (10/0.65).
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7984
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby Amaranthea » Fri Feb 20, 2009 12:21 pm

theckhd wrote:Whoops. That'll teach me to read more carefully.

Holy Shield:

Code: Select all
Holy_Shield = (0.09.*SP + 0.056.*AP + 211).* ...  %inherent
    ((1-player_avoid)/swing_timer).* ... %player avoidance
    (OHWS.*SotT.*Crusade*SU).* ... %talents/glyphs
    (CoE.*SanctRet).* ...   %debuffs
    boss_resist_reduce;     %boss resist


Is the "boss_resist_reduce" term the one we're referring to? That's in the latest version of the spreadsheet and included in my analysis, but wasn't in the version of the spreadsheet earlier this week. It has the form:

Code: Select all
boss_partial_resist=5.2; %hardcoded
boss_resist_reduce=(100-boss_partial_resist)/100;


Boss_resist_reduce is covering partial resists which affect all spelldamage.
This is different from a spell "miss."
Amaranthea
 
Posts: 178
Joined: Tue Feb 10, 2009 12:10 pm

Postby majiben » Fri Feb 20, 2009 12:24 pm

did you take into account BV scaling from redoubt?
Amirya wrote:some bizarre lovechild of Hawking, Einstein, and Theck
User avatar
majiben
Moderator
 
Posts: 6999
Joined: Fri Aug 22, 2008 4:37 pm
Location: Retired

Postby theckhd » Fri Feb 20, 2009 12:24 pm

Amaranthea wrote:Boss_resist_reduce is covering partial resists which affect all spelldamage.
This is different from a spell "miss."

OK. What's the appropriate way to add that to the formula then?

I'd assume it's similar to the code for Consecrate:
Code: Select all
Consecrate = (904 + 0.32.*AP + 0.32.*SP).* ...    %inherent
    (100-boss_spell_resist)/100.* ...       %boss spell resistance
    (OHWS.*Crusade.*SU).* ...       %talents
    (CoE.*SanctRet) ...              %buffs/debuffs
    .*boss_resist_reduce ...  %boss resist
    ./9;                                %uptime


where boss_spell_resist is actually a spell hit modifier:
Code: Select all
boss_spell_resist=17-(spell_hit+imp_faerie_fire);


In other words, would adding a factor of (100-boss_spell_resist)/100 to the Holy Shield formula correct this, or is there a more complicated mechanic involved?
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7984
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby Amaranthea » Fri Feb 20, 2009 12:27 pm

theckhd wrote:In other words, would adding a factor of (100-boss_spell_resist)/100 to the Holy Shield formula correct this, or is there a more complicated mechanic involved?


No, that should be it (assuming it's based on spell hit rating - which I believe to be true but I can't find any proof of atm other than the fact that I got a larger amount of resists than expected while almost hitcapped).

Edit: Oh hmm, looks like the spreadsheet forgot to add Draenei aura to boss spell miss, so you need to take that into account too.
Last edited by Amaranthea on Fri Feb 20, 2009 12:29 pm, edited 1 time in total.
Amaranthea
 
Posts: 178
Joined: Tue Feb 10, 2009 12:10 pm

Postby theckhd » Fri Feb 20, 2009 12:29 pm

Majiben wrote:did you take into account BV scaling from redoubt?


Yes:
Code: Select all
block_value=(STR.*0.5 + Gear_BV + extra_BV).*Redoubt.*BV_Meta;


Where Redoubt is
Code: Select all
Redoubt=1+0.1*Redoubt_points;

and Redoubt_points is an integer representing talent points invested. It's set to 3 in my calculations, which is the default in the spreadsheet as well. As you can see from the ShoR code, block_value is the variable that gets used in the DPS calculations, so Redoubt is correctly accounted for.


Amaranthea wrote:No, that should be it (assuming it's based on spell hit rating - which I believe to be true but I can't find any proof of atm other than the fact that I got a larger amount of resists than expected while almost hitcapped).

I'll add that to the code then. Not sure if it will make a huge difference, but if it does I'll let everyone know.

<edit>I should never trust my judgment. Adding spell resists to Holy Shield changes the crossover point noticeably, such that at 1270 STR fully raid-buffed, Hit eclipses BV for DPS, and at around 1500 STR fully raid-buffed, Hit eclipses BV for threat.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7984
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby majiben » Fri Feb 20, 2009 12:33 pm

It should be (Rebout + BV meta) rather than reboubt * BV meta
Amirya wrote:some bizarre lovechild of Hawking, Einstein, and Theck
User avatar
majiben
Moderator
 
Posts: 6999
Joined: Fri Aug 22, 2008 4:37 pm
Location: Retired

Postby theckhd » Fri Feb 20, 2009 12:35 pm

Amaranthea wrote:Edit: Oh hmm, looks like the spreadsheet forgot to add Draenei aura to boss spell miss, so you need to take that into account too.

I don't think it did:

Code: Select all
spell_hit=Draenei_Aura + (Gear_Hit+extra_hit)./hit_rating_to_spell_hit;
boss_spell_resist=17-(spell_hit+imp_faerie_fire);


Ignore the "extra_hit" which is specific to my code (it's how I sub in the 10 hit rating). The Draenei Aura is baked into the "spell_hit" variable, so it's also in boss_spell_resist. Which I should apparently rename "boss_spell_miss" to keep it clearly different from partial resists.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7984
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby theckhd » Fri Feb 20, 2009 12:36 pm

Majiben wrote:It should be (Rebout + BV meta) rather than reboubt * BV meta


so
Code: Select all
block_value=(STR.*0.5 + Gear_BV + extra_BV).*(Redoubt + BV_Meta);
then?

I took that directly from the spreadsheet, so if that's the case the spreadsheet is incorrect as well. I wasn't sure if they were additive or multiplicative, so I just left it the way Jonesy had it.

<edit> that's not right either, actually. Redoubt = 1.3 and BV_Meta = 1.05, which is fine if they're multiplicative, but wrong if they're additive. Luckily, since it only shows up in block_value, I can change BV_Meta to be 0.05 to make the code above correct.
"Theck, Bringer of Numbers and Pounding Headaches," courtesy of Grehn|Skipjack.
MATLAB 5.x, Simcraft 6.x, Call to Arms 6.0, Talent Spec & Glyph Guide 5.x, Blog: Sacred Duty
User avatar
theckhd
Moderator
 
Posts: 7984
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

Postby majiben » Fri Feb 20, 2009 12:44 pm

Yeah sorry I usually write down additive multiplier as (1+ x% +y%)
Amirya wrote:some bizarre lovechild of Hawking, Einstein, and Theck
User avatar
majiben
Moderator
 
Posts: 6999
Joined: Fri Aug 22, 2008 4:37 pm
Location: Retired

Postby Fridmarr » Fri Feb 20, 2009 12:47 pm

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?
Fridmarr
Global Mod
 
Posts: 9667
Joined: Sun Apr 08, 2007 1:03 am

Next

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