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 » Fri Aug 20, 2010 7:53 am

Checking up on a few of tlitp's revisions - the base damages on the abilities seem awfully low. For example, here's the edit for AS:

Code: Select all
raw.AvengersShield= ((440+536)./2 + 0.00.*player.hsp + 0.00.*player.ap).*mdf.spdmg;

down from 5605-6850 base damage and 7% scaling with each stat.

Just to test this, I hopped on beta and checked the tooltip damage at 80 for several gear configurations:

Code: Select all
asmin=[2768 3355 3941 4349];asmax=[3327 3914 4500 4908];asap=[522 1740 2956 3800];assp=[178 544 908 1166];
model=2768+0.37.*(asap-min(asap)+assp-min(assp));plot(asap,asmin,asap,model)
2768-0.37.*(min(asap)+min(assp))


37% was empyrically what I found to be the best integer scaling percentage by trial and error. The last line then spits out a base damage of 2509, well above the base threshold in the code, which seems to be gotten from the tooltip on MMO-champion.

Interestingly, both mmo-champion and wowhead have the higher base damage in the formula, but the spell scaling is still set at 7%.

Did I miss something here? Do the ap/sp coefficients change with level? Or has this change just not been reflected on the database sites?
"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: 7950
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

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

Postby theckhd » Fri Aug 20, 2010 8:12 am

Interesting observation:
CS tooltip on beta says 130% weapon damage, which is consistent with 100% base and 30% from Crusade (100*1.3)
CS as ret says 132% weapon damage. The only other source I could find for this is Communion, which increases your damage by 2%. It's consistent with 100*(1+0.3+0.2) or floor(100*1.3*1.02).

HotR tooltip says 45% weapon damage with Crusade (30%) and 2pT10 (20%). That's consistent with 30*(1+.3+.2), but not with floor(30*1.3*1.2). Provided the base damage is still 30%, this means that Crusade, 2T10, Communion, and other such effects are all calculated additively rather than multiplicatively.

<edit> Just as a sanity check, unequipping 2T10 drops the tooltip to 39%, as expected.
"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: 7950
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

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

Postby theckhd » Fri Aug 20, 2010 8:37 am

Did similar testing of HammerNova, here's the data:

Code: Select all
mnd=[743 778 801 820 855 999 1028 1054 1204];mxd=[1082 1117 1140 1159 1194 1390 1419 1445 1595];sp=[178 275 337 391 488 598 679 751 1116];ap=[522 846 1050 1230 1554 1920 2192 2432 3800];

tier=[1 1 1 1 1 1 .45/.39 .45/.39 .45/.39 .45/.39];
hmod=(684.*tier+0.085.*(ap+sp));plot(ap,mnd,ap,hmod);

Unfortunately, I was dumb and accidentally equipped 2T10 when I was taking the data (I took this earlier, before I noticed the effect in the previous post - that's actually what led me to notice it). The tier variable offsets this for the most part. Interestingly, it seems like the 2-piece only affects the base damage of HammerNova, because the scaling doesn't change after equipping it.

But in any event, it looks like the scaling is somewhere around 8.5% ap and sp, assuming the coefficients are the same.
"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: 7950
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

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

Postby Chicken » Fri Aug 20, 2010 8:51 am

theckhd wrote:Or has this change just not been reflected on the database sites?
It could very well be that, apparently the new streaming client Blizzard uses has changed how the data the database websites use works. They're also not perfect yet at getting the numbers from the new automatic scaling with level that abilities do. They also extract a lot of data from the tooltips, so if those haven't been updated yet they might show some wrong formulas.
Image
User avatar
Chicken
 
Posts: 1597
Joined: Fri Jun 26, 2009 2:19 pm

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

Postby Marblehead » Fri Aug 20, 2010 9:20 am

Chicken wrote:
theckhd wrote:Or has this change just not been reflected on the database sites?
It could very well be that, apparently the new streaming client Blizzard uses has changed how the data the database websites use works. They're also not perfect yet at getting the numbers from the new automatic scaling with level that abilities do. They also extract a lot of data from the tooltips, so if those haven't been updated yet they might show some wrong formulas.

Indeed, that seems to be the case.

Code: Select all
% Level 80

asmin=[2769 2776 4084 4315 4612 4719];asmax=[3328 3335 4643 4874 5171 5278];asap=[524 538 3252 3726 4407 4627];assp=[179 187 1001 1153 1209 1275];
model=2769+0.37.*(asap-min(asap)+assp-min(assp));plot(asap,asmin,asap,model)

% Level 83

asmin=[2957 4265 4752 4850 4931];asmax=[3554 4862 5349 5447 5528];asap=[557 3271 4279 4481 4707];assp=[189 1003 1311 1376 1311];
model=2957+0.37.*(asap-min(asap)+assp-min(assp));figure(2);plot(asap,asmin,asap,model)

At both levels, the 37% coefficient looks pretty accurate. However, even if I don't believe that the coefficients change through levels, I'm interested in checking the numbers on a 10lvl paladin, just to be sure.

On a side note, in the last 2 sets of numbers at lvl 80 I used some gear with AP enchants and in the last one at lvl 83 I used BoM. That made the model values to be a bit off. I wonder why that happened.
Image
Life is not difficult, people are.
User avatar
Marblehead
 
Posts: 202
Joined: Sun Aug 02, 2009 9:28 pm
Location: Bloodhoof (EU)

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

Postby Chicken » Fri Aug 20, 2010 10:40 am

Marblehead wrote:At both levels, the 37% coefficient looks pretty accurate. However, even if I don't believe that the coefficients change through levels, I'm interested in checking the numbers on a 10lvl paladin, just to be sure.
You might want to check that up to level 20 if you get around to it, assuming the level 10 coefficient turns out to be lower at any rate. On live spell ranks learned before level 20 have lower coefficients than spell ranks learned at or above level 20. If they turn out to still be lower at level 20 we'll know that the scaling of coefficients at least continues for a longer amount of time in Cataclysm.
Image
User avatar
Chicken
 
Posts: 1597
Joined: Fri Jun 26, 2009 2:19 pm

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

Postby theckhd » Fri Aug 20, 2010 10:48 am

Marblehead wrote:On a side note, in the last 2 sets of numbers at lvl 80 I used some gear with AP enchants and in the last one at lvl 83 I used BoM. That made the model values to be a bit off. I wonder why that happened.


It means that the spell isn't actually scaling equally with SP and AP. In all of the other data points (including mine), both your SP and AP were coming from Strength, and thus weren't independent.

Example: you get c1 AP from each point of STR, and c2 SP from each point of STR. Thus, the formula would look like:

dmg = base + sa*AP + ss*SP = sa*c1*STR + ss*c2*STR = (sa*c1 + ss*c2)*STR

where sa and ss are the scaling coefficients for AP and SP respectively. We know SP and AP, but can't determine sa and ss independently if all you check is the scaling with STR, because they aren't independent. The only way to do that is to add just AP or just SP from a different source (SP or AP from gear, for example).

I didn't think to equip AP gear earlier to check the scaling independently. From your plots, it looks like the model lags the data when you only add AP, which means that it scales slightly faster with AP than with SP. If you try modeling it as

base+sa*AP+ss*SP

and use the empirical constraint equation

sa*c1+ss*c2=0.37*(c1+c2)

it should be pretty easy to nail both down by only varying one. I think that c1=2 and c2=0.6 should be the right values.
"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: 7950
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

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

Postby theckhd » Fri Aug 20, 2010 10:52 am

By the way, I uploaded some rough "priority simulation" modules.

prio_model defines a priority model to evaluate. It's fairly robust, and should allow for any sort of conditional statement we'd want to evaluate ('player.hopo>=3 || HS.up==0' for example).

prio_sim takes that priority model and evaluates it over N timesteps of dt. I have it set up for N=300 and dt=0.1, but those are obviously changeable.

prio_sim also constructs the rotation structure "rs" which gets passed to rotation_drawer to make pretty pictures. If you want to see what I mean, update to the latest revision and type:

sample_calculation
prio_model
prio_sim
"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: 7950
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

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

Postby bentglasstube » Fri Aug 20, 2010 10:57 am

I want to have pretty pictures, but the sim doesn't seem to run with Octave.

Code: Select all
octave:1> sample_calculation                                                   
warning: division by zero                                                       
error: `rotation_model' undefined near line 33 column 1                         
error: called from:                                                             
error:   c:\Users\Alan\Projects\matlabadin\sample_calculation.m at line 33, column 1


Unfortunately I don't really know MATLAB or Octave well enough to debug this.
User avatar
bentglasstube
 
Posts: 40
Joined: Mon Jul 13, 2009 11:46 am
Location: Phoenix, AZ

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

Postby Marblehead » Fri Aug 20, 2010 11:01 am

Code: Select all
% Level 16

asmin=[184 195];asmax=[211 222];asap=[114 136];assp=[52 59];
model=184+0.37.*(asap-min(asap)+assp-min(assp));plot(asap,asmin,asap,model)


I think that we can safely assume that coefficients (at least for AS) remain unchanged throughout leveling.
Image
Life is not difficult, people are.
User avatar
Marblehead
 
Posts: 202
Joined: Sun Aug 02, 2009 9:28 pm
Location: Bloodhoof (EU)

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

Postby theckhd » Fri Aug 20, 2010 11:03 am

Not 100% sure why it's giving you a "divide by zero" error, but if you go into sample_calculation and comment out the line that calls rotation_model, it should skip that entirely.

Alternatively, you could add a junk line of code to the end of rotation_model ("temp=1"). I'm guessing that octave has a problem with the fact that rotation_model has no executable code. tlitp commented it all out in one of the recent revisions.
"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: 7950
Joined: Thu Jul 31, 2008 3:06 pm
Location: Harrisburg, PA

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

Postby bentglasstube » Fri Aug 20, 2010 11:38 am

The divide by zero error is on line 94 of avoid_dr.m
Code: Select all
missdr = 1./(1./c_miss + k./total_miss);        %miss after DR


total_miss is 0 at this point because defense is gone.

I commented that out and added a 1 to the end of rotation model.
I get the following output and a boring graph:

Code: Select all
octave:1> sample_calculation                                                   
warning: Success!                                                               
octave:2> prio_model                                                           
octave:3> prio_sim                                                             
warning: Order not defined or too short, defaulting to text order               
error: set: unknown property "YTickLabels"                                     
error: called from:                                                             
error:   c:\Users\Alan\Projects\matlabadin\rotation_drawer.m at line 54, column
1                                                                               
error:   c:\Users\Alan\Projects\matlabadin\prio_sim.m at line 110, column 1     


notpretty.png
You promised me pretty graphs theck </3
notpretty.png (6.05 KiB) Viewed 756 times


Edit: I dug a little deeper and fixed the YTickLabels issue but I guess Octave doesn't have the "rectangle" function so I don't get pretty graphs.
User avatar
bentglasstube
 
Posts: 40
Joined: Mon Jul 13, 2009 11:46 am
Location: Phoenix, AZ

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

Postby Gaffer » Fri Aug 20, 2010 12:25 pm

Gaffer wrote:I'll try to get the Vengeance details you're looking for tomorrow. I made the mistake of going to Hyjal and the three times I attempted to log in, I zone in on top of ~5 horde that corpse camp me.


Still an issue. I'll transfer a character to the PvE server this weekend if no one else gets you the Vengeance information you need before I get some time.
Gaffer
 
Posts: 139
Joined: Tue Oct 14, 2008 2:39 am

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

Postby bentglasstube » Fri Aug 20, 2010 12:30 pm

I played around a little more with Octave and got as far as this
prettier.png
prettier.png (7.46 KiB) Viewed 746 times

I guess I will have to leave the plotting up to those of you who have real matlab.
User avatar
bentglasstube
 
Posts: 40
Joined: Mon Jul 13, 2009 11:46 am
Location: Phoenix, AZ

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

Postby tlitp » Sat Aug 21, 2010 12:33 pm

Do Octave/FreeMat get along nicely with structures within structures ? You can load avoid_dr r55 directly, it's self-sufficient :
Code: Select all
clear;avoiddr=avoid_dr(0,0,0)

If that's the case, additional code cleanup is down the road.
User avatar
tlitp
 
Posts: 556
Joined: Mon Jul 27, 2009 3:25 pm

PreviousNext

Return to Advanced Theorycraft and Calculations

Who is online

Users browsing this forum: Alandra, Google [Bot] and 1 guest

Who is online

In total there are 3 users online :: 2 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: Alandra, Google [Bot] and 1 guest