Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New substat opt #1890

Merged
merged 15 commits into from
Jan 12, 2024
Merged

New substat opt #1890

merged 15 commits into from
Jan 12, 2024

Conversation

Charlie-Zheng
Copy link
Contributor

Moved all the custom stat collectors to be contained within the substat optimizer package until a system level API/pattern for adding custom stat collectors is discussed and finalized. The substat optimizer has a heuristic to quickly determine the ER reqs of the units. To have the heuristic work properly, the user needs to be specific about how the config is written.

When using the follow block:

if .char.burst.ready { 
    char burst;
}

The ER calculation will attempt to give ER so that character can burst every time. If the desired behavior is to burst when there is energy but otherwise don't allocate ER subs, the user needs to add an actual energy check:

if .char.burst.ready && .char.energy == .char.energymax { 
    char burst;
}

If the desired behavior is enough ER to burst every other rotation, then actually write the config such that the character bursts every other rotation:

for let i = 0; i < 4; i += 1 {
    ...
    if i == 1 || i == 3 {
        char burst;
    }
   ...
}

@Charlie-Zheng Charlie-Zheng marked this pull request as draft January 10, 2024 16:31
…ed slice to utils to reflect util functions living. Added an option configuration to skip fine tuning.
@Charlie-Zheng
Copy link
Contributor Author

Charlie-Zheng commented Jan 11, 2024

I ran the current live substat optimizer and the new proposed substat optimizer on my Windows 10 system with AMD Ryzen 7 5800HS with 40 GB of 3200 MHz DDR4 and recorded the results and timings. Time for the Control is the time the sim takes to run 1000 iterations. The Time for the substat optimizer is the time it takes to run the optimizer (-substatOptim)

The LyneyFixed config takes the above recommendation and modifies the .lyney.burst.ready condition to .lyney.burst.ready && .lyney.energy == .lyney.energymax

Sim Control New (fine_tune=1) New (fine_tune=0) Live
Link DPS Time (s) DPS Time (s) DPS Time (s) DPS Time (s)
95k hyperbloom https://gcsim.app/db/GQHGLq9kGzRB 95041 1.811 95131 9.133 94038 6.240 94831 23.048
APLBurstEveryRot https://gcsim.app/db/t6fqtRGTdWnj 72102 5.857 71105 25.529 71297 20.683 70719 69.114
LyneyFixed https://gcsim.app/db/t9Ff8tm9fgdd 86970 1.168 86930 4.780 85774 2.839 86412 8.484
LyneyUnfixed https://gcsim.app/db/t9Ff8tm9fgdd 86970 1.185 73453 4.254 73617 3.060 86464 8.485
RandomDelays https://gcsim.app/db/rmLgkH77cgrj 79860 3.335 79915 9.350 79660 6.775 74952 19.912

The DPS results are approximate, I still need to tune for DPS vs stddev, but should show that the new substat opt is improved over the old one, except when the .char.burst.ready condition is not corrected by the user

…help fix when people don't modify .char.burst.ready according to the recommendations
@Charlie-Zheng Charlie-Zheng marked this pull request as ready for review January 11, 2024 21:34
@Charlie-Zheng
Copy link
Contributor Author

After updates overall the fine_tune=1 time increased around 10% for most sims, however, for sims that don't apply the recommendations to change .char.burst.ready, the change increased run time around 50%. However, the DPS is now much more optimized in those cases.

Sim Control New (fine_time=1) New (fine_time=0) Live
Link DPS Time (s) DPS Time (s) DPS Time (s) DPS Time (s)
95k hyperbloom https://gcsim.app/db/GQHGLq9kGzRB 95041 1.811 95107 10.045 93908 6.008 94831 23.048
APLBurstEveryRot https://gcsim.app/db/t6fqtRGTdWnj 72102 5.857 71874 29.146 71167 20.636 70719 69.114
LyneyFixed https://gcsim.app/db/t9Ff8tm9fgdd 86970 1.168 86819 4.029 86484 2.998 86412 8.484
LyneyUnfixed https://gcsim.app/db/t9Ff8tm9fgdd 86970 1.185 86304 6.210 73755 3.007 86464 8.485
RandomDelays https://gcsim.app/db/rmLgkH77cgrj 79860 3.335 79953 10.038 79867 6.539 74952 19.912

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants