Archived

This topic is now archived and is closed to further replies.

necro_potence

Java-based Gear, Gem and Reforge Optimizer

64 posts in this topic

Version 1.5 is almost ready, meanwhile I could use your help.

If you have a link to the armory of a char using any of the following gems, I'd greatly apreciate it if you could share it here.

Accurate Demonseye

Bracing Shadowspirit Diamond

Deft Ember Topaz

Keen Ember Topaz

Share this post


Link to post
Share on other sites

Version 1.5 is up and will be automatically downloaded if you had a previous one. As soon as the EU armory gets back online I'll add a new video to show the new features.

Edit: here it is

Share this post


Link to post
Share on other sites

Nice work on the optimizer. It's always heartening to see someone tackling NP-Complete for the sake of DPS.

I'm having a bit of trouble though: it doesn't seem to be respecting my hit cap, though the expertise cap is working fine. My character profile can be found here, and the generated setup here.

As another test I removed the expertise cap entirely, and the optimizer not only shot past the hit cap again, it actually decreased the resultant amount of expertise (and xPS as well.) Results here.

Also, as an ill-informed aside (I haven't touched Java in years), have you looked into running the optimization in a multi-threaded fashion? The optimizer's capping out one of my cores and leaving the rest feeling rather under-appreciated.

Thanks again for the work on the tool, and I'm looking forward to further development on it!

Share this post


Link to post
Share on other sites

Thanks for helping me test out the melee part, I've only been able to test the caster part well because I don't have a melee myself.

One thing on the fly that I noticed though is that you have tanking boots that consequently don't get loaded in the optimizer, which could mess things around a bit...

I'll look into it more and let you know what I find.

About multithreading, I did make the parallel version of it, but it had 1 advantage, computing the results faster, but 2 disadvantages. Basically, fulling all cores to 100% meant that you had to wait till the optimization was over to use your pc again, while having just 1 core fully loaded you can still suft the web or even play wow. The second was a memory problem, what is currently a single resource would have to be cloned for various threads.

EDIT: I might have found the issue, I might pm you for some tests if you don't mind...

Share this post


Link to post
Share on other sites

Sure, I'd be happy to help out with additional testing.

Heh, didn't even realize the optimizer was ignoring my boots. Regarding them, due to their high strength and mastery they're actually among the best boots for my spec until I get a proper raid drop (check it out here, clicking ... next to feet. Melee dps wearing tanking items is uncommon, but it is sometimes a good decision.

As for multithreading, what about running n-1 threads, leaving 1 core untouched for general use? Obviously wouldn't help for a 2-core system, but would nearly triple the speed for a 4-core system. Regarding memory use, I'm sad that there's no copy-on-write memory use paradigm for windows like there is for a linux fork, but since your program isn't a memory hog to begin with, I don't think it would strictly be necessary. I'm seeing a memory footprint of 87 megs for javaw.exe while the optimizer's doing its thing, so tripling (or even increasing sevenfold) memory consumption shouldn't have much of an impact on the type of computers that would have 4 or 8 cores to begin with.

Of course, backseat development is far easier than implementing the change myself, and from my limited experience I know how much of a pain in the ass multithreaded programs can be at times. :)

Share this post


Link to post
Share on other sites

I was playing around with this tonight and learned a few things.

1. Tank gear won't show up maybe it's a block you have setup when looking up DPS gear. I'm sure it won't be like this forever but currently w/o heroic boots tank boots are pretty strong.

2. On the Armory looks up maybe because of the tank boots not sure but it can't pull my armory with preserver checked.

Share this post


Link to post
Share on other sites
1. Tank gear won't show up maybe it's a block you have setup when looking up DPS gear. I'm sure it won't be like this forever but currently w/o heroic boots tank boots are pretty strong.

Not including tank gear or even cells to put weights for tank stats was a deliberate choise. I might be wrong, but I've never seen a reliable tool (like simulationcraft) to compute tank stat weights. Do they exist?

Share this post


Link to post
Share on other sites

Is there some option for Moonkins/Shadowpriests that spirit gets converted to hit rating? Because if I try to optimize my Moonkin I should reforge everything to spirit/hit, although I would be >300 rating above hit cap.

Share this post


Link to post
Share on other sites
Not including tank gear or even cells to put weights for tank stats was a deliberate choise. I might be wrong, but I've never seen a reliable tool (like simulationcraft) to compute tank stat weights. Do they exist?

I can definitely understand where you are coming from and I'll wait to use it until I have some boots that load properly. As far as I know Tank stat weights are much harder to compute properly but for DPS a tank item we just reforge the tank stat off as much as possible and the item is still a solid choice.

Share this post


Link to post
Share on other sites

Does the Optimizer take cogwheels for engineering helms into account? When I get the result screen it will only show the meta in the helm, but neither of the cogwheels or the socket bonus.

Share this post


Link to post
Share on other sites

The spirit -> hit conversion isn't there yet, and I'm actually pretty up for suggestions on the best way to implement it. Consider that besides the extra if then else in the code, bumping up the number of cappable stats reduces the number of items that can be pruned beforehand.

Cogwheels aren't there yet, but I promise that as soon as I'm done fixing the broken things I'll take over the more niche aspects like cogwheels and offhand enchantment.

Share this post


Link to post
Share on other sites
I'm having a bit of trouble though: it doesn't seem to be respecting my hit cap, though the expertise cap is working fine. My character profile can be found here, and the generated setup here.

As another test I removed the expertise cap entirely, and the optimizer not only shot past the hit cap again, it actually decreased the resultant amount of expertise (and xPS as well.) Results here.

Can you check again if you still have that issue? If you don't I'll push v1.6 up.

Share this post


Link to post
Share on other sites

Just ran it on the profile I uploaded earlier and it doesn't seem to /quite/ respect the hit cap, though it is closer than before. I ended up with 750 expertise with a cap of 780, and 800 hit rating with a cap of 600. This included some reforging into hit. It still doesn't like my tank boots either, though I wasn't sure if you were planning on changing that.

Share this post


Link to post
Share on other sites

Does the optimization also look at cogwheels? When I ran the optimization with hit/mastery cogwheels I would be just off the hit/exp caps, but when I ran it with crit/mastery I would get the hit/exp exactly and gain 1136.5 score.

Share this post


Link to post
Share on other sites
Does the optimization also look at cogwheels? When I ran the optimization with hit/mastery cogwheels I would be just off the hit/exp caps, but when I ran it with crit/mastery I would get the hit/exp exactly and gain 1136.5 score.

It doesn't, yet. For the time being, if you don't have to compare multiple head items, some with cogwheels, some without, and have just that one headpiece, you can remove the hit and expertise provided by them from the value that you input as your desired cap from gear (so, for example, if you use a 200 hit cogwheel and your cap is 1742, you can input 1542).

Share this post


Link to post
Share on other sites

New version is up, including many bug fixes, the offhand +40 intellect enchantment support, and the mulithreaded optimizer!

New video to show the changes is also up at

Share this post


Link to post
Share on other sites

this program doesnt seem to detect gear with dodge/parry

items such as sinertra neck which is technicallly BIS for dps but has tank stats arent detected

Share this post


Link to post
Share on other sites

I had no clue that tank items would be that good for dpsers. Since it takes a lot of time to insert new items, I'd avoid having to insert every single tank item for each class, ilvl and slot, but I'd be more than happy to add specific items behind request.

Share this post


Link to post
Share on other sites

Updated it to 1.7, which adds another multithreaded algorithm and a new os-independant look and feel.

I need your help adding more TotFW heroic items. Please post me your armory link if you have one that isn't currently available.

Share this post


Link to post
Share on other sites

Updated the first post with 1.7.5 changes, including pre-set scaling values for a lot of classes and specs, more Throne of the Four Winds items etc.

If you have any spec that you'd like to include feel free to post it here and I'll add it.

Share this post


Link to post
Share on other sites

Can you add an option to put in a breakpoint for an additional stat (aka softcap)?

Required input would be value before softcap, after softcap and softcap rating.

Share this post


Link to post
Share on other sites
Can you add an option to put in a breakpoint for an additional stat (aka softcap)?

Required input would be value before softcap, after softcap and softcap rating.

Sadly I'm afraid that it isn't. Ignoring for a second how cumbersome it would be to have at least 1.5 times more stat input boxes and cap boxes for the average user, it just isn't feasible from a computational point of view.

The reason is this. Assume a very basic scenario in which, for each slot, you have five valid pieces of gear (consider that the same item, with the same gems, but different reforges, is in fact two items, etc).

Let's assume that none of those items is discarded before firing out the computation that would test each obtainable gear combination, evaluate it (even applying soft caps if you wish), and return the best mix.

That would turn out as 762.939.453.125 gear combinations that must be tested (5^17).

It's pretty obvious then that unnecessary items must be pruned before firing the computation itself.

How? By assigning an actual dps value to each of those items, and then proceed to apply some smart reduction mechanisms.

Hit and expertise are considered "cappable stats", therefore the dps value of an item that has at least one of those is considered an upper bound value, not a fixed one.

Some simple considerations would be, if two items, A and B, dont have cappable stats, remove the one with the lowest dps value.

Another example would be, if item A is worth X dps, and item B is worth Y dps, and X>Y, then B is useless iff B has more of the cappable stat than A does.

Having many more stats go from the semantic of fixed value to floating value would remove even more chances of item pruning and make the optimization unfeasable.

Share this post


Link to post
Share on other sites
Can you add an option to put in a breakpoint for an additional stat (aka softcap)?

Required input would be value before softcap, after softcap and softcap rating.

Like necro_potence points out - you need to settle for an approximate algorithm in order to do this type of optimization.

Mr. Robot (Mr. Robot - World of Warcraft) can do such optimizations. It uses an approximate optimization algorithm that has been continuously refined over the last couple of months. The results are almost instant, but surprisingly accurate. I have compared our results extensively to tools that iterate through all possibilities, and we are now within an extremely low margin of error of THE optimal result. Usually 0.25% or less. For many classes and specs, you will see identical results to a tool like this Java-based optimizer.

For classes with relevant soft caps... It is actually necessary to take into account soft caps to find the optimal solution. Without support for these types of mechanics, this java-based tool is effectively using an exact method to find an approximate solution. For example, you cannot optimize a frost mage unless you can take into account the 33.5% crit soft cap. You cannot optimize a tank class unless you can calculate diminishing returns and dynamically modify the stat weights. You cannot optimize a shadow priest unless the tool knows that hit=spirit.

An "exact" tool like this is useful for a number of classes, but it is limited in what it can do. It is really only "definitive" for a very specific set of situations (the simpler classes to gear). It still works impressively fast for what it is, though. I would personally like you to list out the specs that this tool actually works correctly for, so that users understand when they can and cannot use it to achieve optimal results.

Share this post


Link to post
Share on other sites

Solutions will always be "approximate" if you wish. If I compute my stat weights with a tool as good as simcraft when loading my armory while being -10 haste rating points away from adding another tick of immolate, I'll get a huge haste coeff. If I simcraft my profile after having hit that extra tick, I'll get a really low one.

It's not even correct to "override" my haste by either removing or adding some, in case my profile is right before or right after an haste softcap and I wish to compute the other side of the peak, because having more or less haste in a real situation would mean a change to the amounts of the other stats too.

You'd not even be done with a pre and post value. For example, a stat might have multiple peaks. Lets assume that haste till rating X-1 is worth 2, at X (and X only), it is worth 4 because it is adding another whole tick of a dot, at X+1 its value starts to diminish again till Y-1, at Y (and Y only) it is worth 5 (because it adds another extra tick, which is worth more than the previous extra tick because other spells scale with these ticks). What I'm saying is, if you want to be truly truly accurate with weights, a pre and post value is just a bad solution, because it isn't really more accurate in many cases, just slower. To be truly accurate, you'd need as much as 4-5 stat weight boxes and corresponding caps (in some cases at least).

Besides, this whole thing is based on an approximation of scaling values. Ignore for a second the whole caps issue. What you do is compute your weights for the mix of stats that you start from, and use those to test a lot of different mixes. This is approximating to the very core of it, because ideally, every time you swap something you should recompute the weights. And yes, one small pure gem vs non pure gem plus set bonus might not unbalance the proportion between the stat weights, but different mixes of items with totally different reforges will.

Lets just say that, given that there can never be an approximation free solution to the issue in the total sense of the word, I'm happy to know that for the given input data (flawled to its very core, but there is not much we can do about it) the output is the optimal solution.

Share this post


Link to post
Share on other sites

Well, the best way would be to optimize your gear using the obtained stat weights from SimC and your current armory, then sim with the optimized set, optimize again using the new stat weights and so on. If you are lucky, that might eventually converge, if not, the oscillation amplitude is hopefully reasonably small.

As pointed out, some stats for some classes have multiple peaks/breakpoints. However, given the gear you have it is highly unlikely that you are able to encounter two of them just by swapping/reforging/regemming. Most breakpoints are at least two digit-% apart, meaning you need to get more than 1500 haste just by gear optimization, which I find very unlikely to be possible given the hit constraint.

Apart from that, I tried Mr. Robot and it seems to do a decent job with the default stat weights. I will definitely try with more depth later.

Just for background info: I wanted to optimize my frost mage, which I normally did with Rawr. However, currently Rawr has a problem with IL dps contribution and therefore undervalues mastery quite a lot.

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.