Optimizing the Optimizer

Topics: Rawr.Base.Optimizer
Editor
Oct 3, 2009 at 7:18 AM

The Optimizer portion of Rawr is fantastic, and absolutely core to the purpose of Rawr.  With that said - how can we improve it?  Hence the thread.

    >>>>Before we get started, this is about functionality/features, NOT for bug reports/general Optimizer FAQ.<<<<

I'll kick it off with some ideas (most of which have been mentioned elsewhere, but just kicking off the discussion):

 

Allow the input of decimal values for restriction percentages (eg., "% Chance to be Missed <= .2").

Check upon running an Optimize routine to ensure that all currently equipped gear / item enhancements are marked as available to the Optimizer.  Potentially give an option to auto-enable of all currently equipped items / gems / enchants.

Run a check upon or nearing completion of any Optimize routine that passes the "all objects marked available" test above against the initial setup, that ensures an Optimize routine will not recommend a less optimal setup than it starts with.

 

Oct 3, 2009 at 8:59 AM

I would love to be able to mark specific talents to be mandatory when optimizing talent trees.

 

Another feature could be to be able to browse the top 5 builds not only the absolute best.

 

/Drizz

 

Coordinator
Oct 3, 2009 at 9:44 AM

Aye, all of the things mentioned so far are things we absolutely want to do. Keep this going!

Oct 3, 2009 at 10:11 AM

Mark certain equipment as a requirement in the build (similar to the talent requirement above)

 

 

Editor
Oct 3, 2009 at 12:13 PM

While certain specific equipment might be a stretch, forcing certain set bonuses would be awesome.  While this might seem less worthwhile for DPS, this could be a huge deal for tanks/healers, depending on the relevancy/power of a certain bonus.

Something that seems somewhat related: reworking certain things back-end, where the possibility lends itself, to talent optimization.  Example: An Arms Warrior is using an Incite build, picking up all the mandatory Arms and Fury talents, and then putting the rest of the talents in Protection to pick up Incite.  However, there's a conundrum that presents itself: Should this player put points into Weapon Mastery at the expense of Incite / Anger Management?  My instinct tells me this (talent optimization support) is done on a module-by-module basis, but I really don't have enough information on Talent optimization to know for sure.  As-is, the optimizer, from what I've seen, either handles talents extremely poorly, or not at all (and usually tending towards the latter).  Getting talent optimization running smoothly and actually being usable would be a huge benefit.  The best solution on how to "properly implement" Talent Optimization may even be completely different from what is currently in place, and may even require a new window to input different variables.  I'd like Astry's / devs who are intimately familiar with the optimizer's handling of talents to pitch in before I keep rambling.

Developer
Oct 3, 2009 at 7:26 PM

One thing that I previously mentioned to Astry via PM was possibly instead of optimizing the Talents, which only a couple of models really support and the rest just FuBar when you try, instead optimize Talent Specs. Basically, take your character and make multiple Set Talent Builds the optimizer can choose from and let it try each one out.

For the Arms Warrior:

1. Arms-All-Exe-Comm  :  Arms build, includes 5 points in each spec (Mace, Axe, Sword) so that we aren't missing any one of them (the extra 10 talent points are just that, extra), it uses Improved Execute instead of Weapon Mastery, it has Glyph of Commanding vs Glyph of Battle
2. Arms-All-Exe-Battle  :  Arms build, includes 5 points in each spec (Mace, Axe, Sword) so that we aren't missing any one of them (the extra 10 talent points are just that, extra), it uses Improved Execute instead of Weapon Mastery, it has Glyph of Battle vs Glyph of Commanding
3. Arms-All-WM-Comm  :  Arms build, includes 5 points in each spec (Mace, Axe, Sword) so that we aren't missing any one of them (the extra 10 talent points are just that, extra), it uses Weapon Master instead of Improved Execute, it has Glyph of Commanding vs Glyph of Battle
4. Arms-All-WM-Battle  :  Arms build, includes 5 points in each spec (Mace, Axe, Sword) so that we aren't missing any one of them (the extra 10 talent points are just that, extra), it uses Weapon Master instead of Improved Execute, it has Glyph of Battle vs Glyph of Commanding

This way with my ability maintenance settings etc, the optimizer can really determine if I want to use a Weapon Mastery build, to save on Expertise so I can socket ArP or STR, or choose Improved Execute so I can use more rage for Executes in Spamming or in Sudden Death.

Cuz really, who wants to use custom builds when there are plenty of cookie cutters out there that are DESIGNED to maximize your dps but allow only a couple of floater points.

Developer
Oct 3, 2009 at 7:33 PM

Any other devs are welcome to correct me if I have it wrong, but when it comes to talents optimisation (and actually all optimisations), the optimiser does it blindly, i.e. it picks random combinations and sees what the final result is. (It uses a genetic algorithm to choose in a structured random way in order to cut down on the number of combinations to choose, but at the fundamental level that doesn't matter to the discussion here). 

Thus the optimiser can only evaluate talents based on how it affects the final numbers. The big reason why the optimiser seems to fail on talent optimisation is that many of them are not implemented at all and/or the talents don't affect the measurement numbers. For example, as far as I know, very few if any modules model pushback, since in most PVE raid scenarios only the tank is being hit constantly and modelling pushback for the odd occasion on other players wouldn't be worth the effort. The same goes for fear/stun/disarm resistance mechanisms. Some may argue that those aren't PVE talents but rather PVP talents. But what about talents that increase the range of your spells? It doesn't affect your DPS directly, but in a movement heavy fights or fights that call for staying spread it can make a big difference, by allowing alternative positioning etc. The optimiser would consider it useless and potentially take the questionable PVP talent, if it only affects your DPS in the slightest. 

The boss handler feature some of the devs are playing with, might help identifying the value in some talents, by better customising for specific fight scenarios, but even then a whole extra dimension of modelling would be needed before we can start measuring the value of range increase talents.

Thus in my opinion, the current talent optimisation is more dangerous than it is useful. If we allow certain talents to be marked as mandatory and others optional, it might be more useful, although I think there will still be too many optional talents that don't directly add measurable numbers.

 

Getting back to other optimiser improvements: As far as I know, when the optimiser suggests a regemming, it still doesn't look for the smallest change (i.e. lowest cost of gems to be swapped out), it just uses whatever random combination came out.  Counting this cost in terms of the number of swaps, instead of converting to gold numbers is probably the most practical way.  

Coordinator
Oct 3, 2009 at 8:29 PM

Regarding talents the optimizations is done on two levels. At top level the whole talent spec is treated as an item in your gear from genetic algorithm perspective. Imagine it's as if you marked all talent specs in the talent panel drop down as available. On the second level it can mutate those specs by taking one point out and placing it somewhere else, kind of analogous to changing a gem in an item.

The big thing as mentioned to really make it useful is by the models to provide means to add constraints that allow you to specify which talents are needed in order to force some talents that do not have computed value in the model but are useful nontheless. The way I handle this in mage model, but is not ideal, is that I have a form where you can specify a score for each talent and then you can specify an optimization constraint that requires a specific talent score be met. Among other things this allows you to set score to 1 for talents you definitely want and set the constraint to the number of those talents. I've heard other suggestions like marking specific talents as necessary. It usually boils down to constraints of type: if this talent is used then also use the following talents or if this ability is used in the optimal rotations then these talents should be used. I just went for a solution that was easy to implement. If would be nice to hear from someone more experienced with gui design how to easily edit such constraints for end users.

Editor
Oct 3, 2009 at 11:34 PM

Possibly the easiest "fix" would be to solely treat the specified talent specs as a single "item".  This would essentially only use the afore-mentioned "top layer" of talent consideration.  The user can create custom specs as necessary, moving their 'free' points around to create the diversity in talent specs required.

The pluses here:  The Optimizer is never attempting to handle anything other than the user is dictating.  Handling talent specs like they are similar to any other object within the program seems like it easy to do from a coding perspective, but feel free to correct me if I am wrong.

The breakdown here would be in any build where a large number of talents would mandate such a high number of permutations so as to render this method extremely difficult in application.  For most classes/specs, I don't think that this would present too much of an issue.  For example, my Arms Warrior employing an Incite build with permuts covering varying levels of Weapon Mastery would be working with about 3 talent specs, maybe one or two more if I would like to include Anger Management into the program's comparisons.

Developer
Oct 4, 2009 at 2:13 AM

Extending that statement further, you could add 20 specs for a class and then mark the most likely X number you want the optimizer to check (without any additional talent changes, just looking at the talent specs as a whole). We already have the Talent Spec Comparison chart, so you can see (with some amount of reasonableness) which ones you would want to choose.

Or maybe we could create a 'Skeleton Spec' assigning an entire 3 trees+glyphs then whatever amount of points are left-over and leaving float points for the optimizer to then select. Eg- leave the Skeleton without WM or Imp Exec and let the opt choose where it wants to put the points. However I think this would be less accurate for those models not set up like the Mage model.

Coordinator
Oct 4, 2009 at 2:39 AM

Well the easiest fix for those models that don't support talent constraints would be to add a check box to optimizer that allows you to disable talent spec mutations.

Developer
Oct 4, 2009 at 2:47 AM

To be clear: adding said checkbox would leave it at the top-level talent thing and *not* let it try to change the talent specs provided, which leaves it behaving in the manner I originally described further up the thread?

 

Coordinator
Oct 4, 2009 at 4:06 AM

Correct. That is already what the optimizer does, it's just a matter of disabling mutations.

Developer
Oct 4, 2009 at 4:17 AM

Sweet, who can throw that in there for 2.2.20? We can look at more advanced solutions later

Developer
Oct 4, 2009 at 5:02 AM

For the decimal places in optimizer requirements, this is a relatively simple add in Rawr2. File FormOptimize.cs View Code, line 419, insert 'numericUpDownRequirementValue.DecimalPlaces = 2;' i checked it and it works on mine. Rawr3 seems to have it already set for this, File OptimizeWindow.xaml line 31 '<Setter Property="DecimalPlaces" Value="2"/>'

Developer
Oct 5, 2009 at 2:10 PM

It would be really useful if when starting the optimiser if there was a one-handed weapon that isn't unique available then the optimiser asks if you have one or two of them. Its an FAQ and non-intuitive for casual users to edit the item and make it unique just to prevent the optimiser trying to suggest you use two of them.

 

Coordinator
Oct 5, 2009 at 10:16 PM

Regarding the uniqueness of items and such at some point we should redesign the system to allow specifying how many instances of an item you have in general and to specify availability conditions for each, i.e. gemming/enchant restrictions. There's some work to support this properly in the backend, but this is mostly a ui question.

Oct 5, 2009 at 11:18 PM
Levva wrote:

It would be really useful if when starting the optimiser if there was a one-handed weapon that isn't unique available then the optimiser asks if you have one or two of them. Its an FAQ and non-intuitive for casual users to edit the item and make it unique just to prevent the optimiser trying to suggest you use two of them.

 

And the warrior community cries out, "Nooo! Not just one-handed weapons!"

Editor
Oct 5, 2009 at 11:34 PM
ebs2002 wrote:
Levva wrote:

It would be really useful if when starting the optimiser if there was a one-handed weapon that isn't unique available then the optimiser asks if you have one or two of them. Its an FAQ and non-intuitive for casual users to edit the item and make it unique just to prevent the optimiser trying to suggest you use two of them.

 

And the Fury warrior community cries out, "Nooo! Not just one-handed weapons!"

 

Fixed it for ya.  ;)