From b9c871f2b2c441706ec5a2b5272392119844face Mon Sep 17 00:00:00 2001 From: Asriel Camora Date: Mon, 13 Nov 2023 22:58:10 -0800 Subject: [PATCH] Remove redundant initial state in sims --- Benchmark/Program.cs | 2 +- Craftimizer/Windows/MacroEditor.cs | 18 +++++++++--------- Craftimizer/Windows/MacroList.cs | 2 +- Craftimizer/Windows/RecipeNote.cs | 2 +- Simulator/Simulator.cs | 10 ---------- Simulator/SimulatorNoRandom.cs | 4 ---- Solver/MCTS.cs | 4 ++-- Solver/Simulator.cs | 2 +- Solver/Solver.cs | 6 +++--- Test/Simulator/Simulator.cs | 4 ++-- 10 files changed, 20 insertions(+), 34 deletions(-) diff --git a/Benchmark/Program.cs b/Benchmark/Program.cs index 4ba614e..eb87a15 100644 --- a/Benchmark/Program.cs +++ b/Benchmark/Program.cs @@ -106,7 +106,7 @@ internal static class Program MaxStepCount = 30, }; - var sim = new SimulatorNoRandom(new(input)); + var sim = new SimulatorNoRandom(); (_, var state) = sim.Execute(new(input), ActionType.MuscleMemory); (_, state) = sim.Execute(state, ActionType.PrudentTouch); //(_, state) = sim.Execute(state, ActionType.Manipulation); diff --git a/Craftimizer/Windows/MacroEditor.cs b/Craftimizer/Windows/MacroEditor.cs index 99ecc99..0685427 100644 --- a/Craftimizer/Windows/MacroEditor.cs +++ b/Craftimizer/Windows/MacroEditor.cs @@ -143,7 +143,7 @@ public sealed class MacroEditor : Window, IDisposable for (var i = 0; i < iterCount; ++i) { - var sim = new Sim(startState); + var sim = new Sim(); var (_, state, _) = sim.ExecuteMultiple(startState, actions); Progress.Add(state.Progress); Quality.Add(state.Quality); @@ -1018,7 +1018,7 @@ public sealed class MacroEditor : Window, IDisposable private void DrawActionHotbars() { - var sim = CreateSim(State); + var sim = CreateSim(); var imageSize = ImGui.GetFrameHeight() * 2; var spacing = ImGui.GetStyle().ItemSpacing.Y; @@ -1283,7 +1283,7 @@ public sealed class MacroEditor : Window, IDisposable } if (ImGui.IsItemHovered(ImGuiHoveredFlags.AllowWhenDisabled)) { - var sim = CreateSim(lastState); + var sim = CreateSim(); ImGui.SetTooltip($"{action.GetName(RecipeData!.ClassJob)}\n{actionBase.GetTooltip(sim, true)}"); } lastState = state; @@ -1644,14 +1644,14 @@ public sealed class MacroEditor : Window, IDisposable private void RecalculateState() { InitialState = new SimulationState(new(CharacterStats, RecipeData.RecipeInfo, StartingQuality)); - var sim = CreateSim(InitialState); + var sim = CreateSim(); var lastState = InitialState; for (var i = 0; i < Macro.Count; i++) lastState = Macro[i].Recalculate(sim, lastState); } - private static Sim CreateSim(in SimulationState state) => - Service.Configuration.ConditionRandomness ? new Sim(state) : new SimNoRandom(state); + private static Sim CreateSim() => + Service.Configuration.ConditionRandomness ? new Sim() : new SimNoRandom(); private void AddStep(ActionType action, int index = -1, bool isSolver = false) { @@ -1664,13 +1664,13 @@ public sealed class MacroEditor : Window, IDisposable if (index == -1) { - var sim = CreateSim(State); + var sim = CreateSim(); Macro.Add(new(action, sim, State, out _)); } else { var state = index == 0 ? InitialState : Macro[index - 1].State; - var sim = CreateSim(state); + var sim = CreateSim(); Macro.Insert(index, new(action, sim, state, out state)); for (var i = index + 1; i < Macro.Count; i++) @@ -1689,7 +1689,7 @@ public sealed class MacroEditor : Window, IDisposable Macro.RemoveAt(index); var state = index == 0 ? InitialState : Macro[index - 1].State; - var sim = CreateSim(state); + var sim = CreateSim(); for (var i = index; i < Macro.Count; i++) state = Macro[i].Recalculate(sim, state); } diff --git a/Craftimizer/Windows/MacroList.cs b/Craftimizer/Windows/MacroList.cs index aee068d..dbceea8 100644 --- a/Craftimizer/Windows/MacroList.cs +++ b/Craftimizer/Windows/MacroList.cs @@ -329,7 +329,7 @@ public sealed class MacroList : Window, IDisposable return state; state = new SimulationState(new(CharacterStats, RecipeData.RecipeInfo)); - var sim = new Sim(state); + var sim = new Sim(); (_, state, _) = sim.ExecuteMultiple(state, macro.Actions); return MacroStateCache[macro] = state; } diff --git a/Craftimizer/Windows/RecipeNote.cs b/Craftimizer/Windows/RecipeNote.cs index f33b912..fcc4895 100644 --- a/Craftimizer/Windows/RecipeNote.cs +++ b/Craftimizer/Windows/RecipeNote.cs @@ -824,7 +824,7 @@ public sealed unsafe class RecipeNote : Window, IDisposable var state = new SimulationState(input); var config = Service.Configuration.SimulatorSolverConfig; var mctsConfig = new MCTSConfig(config); - var simulator = new SimulatorNoRandom(state); + var simulator = new SimulatorNoRandom(); List macros = new(Service.Configuration.Macros); token.ThrowIfCancellationRequested(); diff --git a/Simulator/Simulator.cs b/Simulator/Simulator.cs index 03dbb12..4ac07a2 100644 --- a/Simulator/Simulator.cs +++ b/Simulator/Simulator.cs @@ -35,16 +35,6 @@ public class Simulator public IEnumerable AvailableActions => ActionUtils.AvailableActions(this); - public Simulator(in SimulationState state) - { - State = state; - } - - public void SetState(in SimulationState state) - { - State = state; - } - public (ActionResponse Response, SimulationState NewState) Execute(in SimulationState state, ActionType action) { State = state; diff --git a/Simulator/SimulatorNoRandom.cs b/Simulator/SimulatorNoRandom.cs index e6c4738..9c39996 100644 --- a/Simulator/SimulatorNoRandom.cs +++ b/Simulator/SimulatorNoRandom.cs @@ -2,10 +2,6 @@ namespace Craftimizer.Simulator; public class SimulatorNoRandom : Simulator { - public SimulatorNoRandom(in SimulationState state) : base(state) - { - } - public sealed override bool RollSuccessRaw(float successRate) => successRate == 1; public sealed override Condition GetNextRandomCondition() => Condition.Normal; } diff --git a/Solver/MCTS.cs b/Solver/MCTS.cs index 76251db..25c0ea6 100644 --- a/Solver/MCTS.cs +++ b/Solver/MCTS.cs @@ -20,7 +20,7 @@ public sealed class MCTS public MCTS(in MCTSConfig config, in SimulationState state) { this.config = config; - var sim = new Simulator(state, config.MaxStepCount); + var sim = new Simulator(config.MaxStepCount); rootNode = new(new( state, null, @@ -280,7 +280,7 @@ public sealed class MCTS [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Search(int iterations, CancellationToken token) { - Simulator simulator = new(rootNode.State.State, config.MaxStepCount); + Simulator simulator = new(config.MaxStepCount); var random = rootNode.State.State.Input.Random; var n = 0; for (var i = 0; i < iterations || MaxScore == 0; i++) diff --git a/Solver/Simulator.cs b/Solver/Simulator.cs index a3a29fa..a458d53 100644 --- a/Solver/Simulator.cs +++ b/Solver/Simulator.cs @@ -20,7 +20,7 @@ internal sealed class Simulator : SimulatorNoRandom } } - public Simulator(in SimulationState state, int maxStepCount) : base(state) + public Simulator(int maxStepCount) { this.maxStepCount = maxStepCount; } diff --git a/Solver/Solver.cs b/Solver/Solver.cs index 7c9efcf..f0b17d0 100644 --- a/Solver/Solver.cs +++ b/Solver/Solver.cs @@ -116,7 +116,7 @@ public sealed class Solver : IDisposable var bestSims = new List<(float Score, SolverSolution Result)>(); var state = State; - var sim = new Simulator(state, Config.MaxStepCount); + var sim = new Simulator(Config.MaxStepCount); var activeStates = new List() { new(Array.Empty(), state) }; @@ -240,7 +240,7 @@ public sealed class Solver : IDisposable { var actions = new List(); var state = State; - var sim = new Simulator(state, Config.MaxStepCount); + var sim = new Simulator(Config.MaxStepCount); while (true) { Token.ThrowIfCancellationRequested(); @@ -303,7 +303,7 @@ public sealed class Solver : IDisposable { var actions = new List(); var state = State; - var sim = new Simulator(state, Config.MaxStepCount); + var sim = new Simulator(Config.MaxStepCount); while (true) { Token.ThrowIfCancellationRequested(); diff --git a/Test/Simulator/Simulator.cs b/Test/Simulator/Simulator.cs index 20756fc..dbf0be7 100644 --- a/Test/Simulator/Simulator.cs +++ b/Test/Simulator/Simulator.cs @@ -68,7 +68,7 @@ public class SimulatorTests int progress, int quality, int durability, int cp) { - var simulator = new SimulatorNoRandom(new(input)); + var simulator = new SimulatorNoRandom(); var (_, state, _) = simulator.ExecuteMultiple(new(input), actions); Assert.AreEqual(progress, state.Progress); Assert.AreEqual(quality, state.Quality); @@ -170,7 +170,7 @@ public class SimulatorTests }, 0, 4064, 15, 332); Assert.AreEqual(10, state.ActiveEffects.InnerQuiet); - Assert.IsTrue(ActionType.TrainedFinesse.Base().CanUse(new SimulatorNoRandom(state))); + Assert.IsTrue(ActionType.TrainedFinesse.Base().CanUse(new SimulatorNoRandom())); } [TestMethod]