Loadout Optimizer: tune exotics without requiring a pinned exotic#11862
Open
delphiactual wants to merge 2 commits into
Open
Loadout Optimizer: tune exotics without requiring a pinned exotic#11862delphiactual wants to merge 2 commits into
delphiactual wants to merge 2 commits into
Conversation
Exotic tuning variants were only generated when the user pinned an exotic, because expanding each tier 5 exotic into 5-6 bucket items grew the search 13.8x. Instead of expanding exotics at all, attach their tuning variants to a single base item and resolve the choice in the per-set tail: a valid set has at most one exotic, so this costs at most 6 tail evaluations per candidate set instead of multiplying the enumeration. A per-set pre-gate keeps the tail cheap in the steady state: stat-range minimums are updated exactly using per-stat minimum deltas across variants, and the variant loop only runs when some variant could improve the displayed ranges or beat the heap boundary (bounded by the best net gain any variant offers). Pinned and any-exotic searches get faster since their buckets are no longer multiplied by variant count. Equivalence tests pin tail resolution against the old bucket expansion, both below tracker capacity (identical output) and with boundary pruning active (identical retained totals, ranges, and candidate counts). Changelog: The Loadout Optimizer now applies tuning mods to Tier 5 exotics even when no exotic is pinned.
The note told users to pin an exotic (or Any Exotic) to get tuning mods considered. Tuning now applies without a pinned exotic, so the note is obsolete.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
11860:


11862:
Exotic tuning variants were only generated when the user pinned an exotic, because expanding each tier 5 exotic into 5-6 bucket items grew the search 13.8x. Instead of expanding exotics at all, attach their tuning variants to a single base item and resolve the choice in the per-set tail: a valid set has at most one exotic, so this costs at most 6 tail evaluations per candidate set instead of multiplying the enumeration.
A per-set pre-gate keeps the tail cheap in the steady state: stat-range minimums are updated exactly using per-stat minimum deltas across variants, and the variant loop only runs when some variant could improve the displayed ranges or beat the heap boundary (bounded by the best net gain any variant offers). Pinned and any-exotic searches get faster since their buckets are no longer multiplied by variant count.
Equivalence tests pin tail resolution against the old bucket expansion, both below tracker capacity (identical output) and with boundary pruning active (identical retained totals, ranges, and candidate counts).
Changelog: The Loadout Optimizer now applies tuning mods to Tier 5 exotics even when no exotic is pinned.
Depends on: #11860