Optimize trace build, add trace sim code
This commit is contained in:
@@ -9,6 +9,12 @@
|
|||||||
<Configurations>Debug;Release;Trace</Configurations>
|
<Configurations>Debug;Release;Trace</Configurations>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="BenchmarkDotNet.Artifacts\**" />
|
||||||
|
<EmbeddedResource Remove="BenchmarkDotNet.Artifacts\**" />
|
||||||
|
<None Remove="BenchmarkDotNet.Artifacts\**" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="BenchmarkDotNet" Version="0.13.8" />
|
<PackageReference Include="BenchmarkDotNet" Version="0.13.8" />
|
||||||
<PackageReference Include="Meziantou.Analyzer" Version="2.0.92">
|
<PackageReference Include="Meziantou.Analyzer" Version="2.0.92">
|
||||||
@@ -22,4 +28,14 @@
|
|||||||
<ProjectReference Include="..\Simulator\Craftimizer.Simulator.csproj" />
|
<ProjectReference Include="..\Simulator\Craftimizer.Simulator.csproj" />
|
||||||
<ProjectReference Include="..\Solver\Craftimizer.Solver.csproj" />
|
<ProjectReference Include="..\Solver\Craftimizer.Solver.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(IS_BENCH)'=='1'">
|
||||||
|
<DefineConstants>$(DefineConstants);IS_DETERMINISTIC</DefineConstants>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)'=='Trace'">
|
||||||
|
<Optimize>True</Optimize>
|
||||||
|
<DefineConstants>$(DefineConstants);IS_DETERMINISTIC;IS_TRACE</DefineConstants>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
+85
-46
@@ -1,4 +1,3 @@
|
|||||||
using BenchmarkDotNet.Running;
|
|
||||||
using Craftimizer.Simulator;
|
using Craftimizer.Simulator;
|
||||||
using Craftimizer.Simulator.Actions;
|
using Craftimizer.Simulator.Actions;
|
||||||
using Craftimizer.Solver;
|
using Craftimizer.Solver;
|
||||||
@@ -10,19 +9,16 @@ internal static class Program
|
|||||||
{
|
{
|
||||||
private static async Task Main(string[] args)
|
private static async Task Main(string[] args)
|
||||||
{
|
{
|
||||||
|
#if !IS_TRACE
|
||||||
Environment.SetEnvironmentVariable("IS_BENCH", "1");
|
Environment.SetEnvironmentVariable("IS_BENCH", "1");
|
||||||
BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);
|
BenchmarkDotNet.Running.BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);
|
||||||
return;
|
#else
|
||||||
|
|
||||||
//TypeLayout.PrintLayout<ArenaNode<SimulationNode>>(true);
|
|
||||||
//return;
|
|
||||||
|
|
||||||
var input = new SimulationInput(
|
var input = new SimulationInput(
|
||||||
new CharacterStats
|
new()
|
||||||
{
|
{
|
||||||
Craftsmanship = 4078,
|
Craftsmanship = 4041,
|
||||||
Control = 3897,
|
Control = 3905,
|
||||||
CP = 704,
|
CP = 609,
|
||||||
Level = 90,
|
Level = 90,
|
||||||
CanUseManipulation = true,
|
CanUseManipulation = true,
|
||||||
HasSplendorousBuff = false,
|
HasSplendorousBuff = false,
|
||||||
@@ -44,47 +40,90 @@ internal static class Program
|
|||||||
ProgressDivider = 130,
|
ProgressDivider = 130,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
var config = new SolverConfig()
|
var config = new SolverConfig()
|
||||||
{
|
{
|
||||||
Iterations = 100_000,
|
Algorithm = SolverAlgorithm.Stepwise,
|
||||||
ForkCount = 32,
|
Iterations = 30000
|
||||||
FurcatedActionCount = 16,
|
|
||||||
MaxStepCount = 30,
|
|
||||||
};
|
};
|
||||||
|
var solver = new Solver.Solver(config, new(input));
|
||||||
var sim = new SimulatorNoRandom(new(input));
|
solver.OnNewAction += s => Console.WriteLine($">{s}");
|
||||||
(_, var state) = sim.Execute(new(input), ActionType.MuscleMemory);
|
|
||||||
(_, state) = sim.Execute(state, ActionType.PrudentTouch);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.Manipulation);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.Veneration);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.WasteNot);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.Groundwork);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.Groundwork);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.Groundwork);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.Innovation);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.PrudentTouch);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.AdvancedTouchCombo);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.Manipulation);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.Innovation);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.PrudentTouch);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.AdvancedTouchCombo);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.GreatStrides);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.Innovation);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.FocusedTouchCombo);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.GreatStrides);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.ByregotsBlessing);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.CarefulSynthesis);
|
|
||||||
//(_, state) = sim.Execute(state, ActionType.CarefulSynthesis);
|
|
||||||
|
|
||||||
Console.WriteLine($"{state.Quality} {state.CP} {state.Progress} {state.Durability}");
|
|
||||||
//return;
|
|
||||||
var solver = new Solver.Solver(config, state);
|
|
||||||
solver.OnLog += Console.WriteLine;
|
|
||||||
solver.OnNewAction += s => Console.WriteLine(s);
|
|
||||||
solver.Start();
|
solver.Start();
|
||||||
var (_, s) = await solver.GetTask().ConfigureAwait(false);
|
var (_, s) = await solver.GetTask().ConfigureAwait(false);
|
||||||
Console.WriteLine($"Qual: {s.Quality}/{s.Input.Recipe.MaxQuality}");
|
Console.WriteLine($"Qual: {s.Quality}/{s.Input.Recipe.MaxQuality}");
|
||||||
|
#endif
|
||||||
|
return;
|
||||||
|
|
||||||
|
////TypeLayout.PrintLayout<ArenaNode<SimulationNode>>(true);
|
||||||
|
////return;
|
||||||
|
|
||||||
|
//var input = new SimulationInput(
|
||||||
|
// new CharacterStats
|
||||||
|
// {
|
||||||
|
// Craftsmanship = 4078,
|
||||||
|
// Control = 3897,
|
||||||
|
// CP = 704,
|
||||||
|
// Level = 90,
|
||||||
|
// CanUseManipulation = true,
|
||||||
|
// HasSplendorousBuff = false,
|
||||||
|
// IsSpecialist = false,
|
||||||
|
// CLvl = 560,
|
||||||
|
// },
|
||||||
|
// new RecipeInfo()
|
||||||
|
// {
|
||||||
|
// IsExpert = false,
|
||||||
|
// ClassJobLevel = 90,
|
||||||
|
// RLvl = 640,
|
||||||
|
// ConditionsFlag = 15,
|
||||||
|
// MaxDurability = 70,
|
||||||
|
// MaxQuality = 14040,
|
||||||
|
// MaxProgress = 6600,
|
||||||
|
// QualityModifier = 70,
|
||||||
|
// QualityDivider = 115,
|
||||||
|
// ProgressModifier = 80,
|
||||||
|
// ProgressDivider = 130,
|
||||||
|
// }
|
||||||
|
//);
|
||||||
|
|
||||||
|
//var config = new SolverConfig()
|
||||||
|
//{
|
||||||
|
// Iterations = 100_000,
|
||||||
|
// ForkCount = 32,
|
||||||
|
// FurcatedActionCount = 16,
|
||||||
|
// MaxStepCount = 30,
|
||||||
|
//};
|
||||||
|
|
||||||
|
//var sim = new SimulatorNoRandom(new(input));
|
||||||
|
//(_, var state) = sim.Execute(new(input), ActionType.MuscleMemory);
|
||||||
|
//(_, state) = sim.Execute(state, ActionType.PrudentTouch);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.Manipulation);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.Veneration);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.WasteNot);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.Groundwork);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.Groundwork);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.Groundwork);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.Innovation);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.PrudentTouch);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.AdvancedTouchCombo);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.Manipulation);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.Innovation);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.PrudentTouch);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.AdvancedTouchCombo);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.GreatStrides);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.Innovation);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.FocusedTouchCombo);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.GreatStrides);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.ByregotsBlessing);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.CarefulSynthesis);
|
||||||
|
////(_, state) = sim.Execute(state, ActionType.CarefulSynthesis);
|
||||||
|
|
||||||
|
//Console.WriteLine($"{state.Quality} {state.CP} {state.Progress} {state.Durability}");
|
||||||
|
////return;
|
||||||
|
//var solver = new Solver.Solver(config, state);
|
||||||
|
//solver.OnLog += Console.WriteLine;
|
||||||
|
//solver.OnNewAction += s => Console.WriteLine(s);
|
||||||
|
//solver.Start();
|
||||||
|
//var (_, s) = await solver.GetTask().ConfigureAwait(false);
|
||||||
|
//Console.WriteLine($"Qual: {s.Quality}/{s.Input.Recipe.MaxQuality}");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Benchmark(Func<SolverSolution> search)
|
private static void Benchmark(Func<SolverSolution> search)
|
||||||
|
|||||||
@@ -22,9 +22,9 @@
|
|||||||
<ProjectReference Include="..\Simulator\Craftimizer.Simulator.csproj" />
|
<ProjectReference Include="..\Simulator\Craftimizer.Simulator.csproj" />
|
||||||
<ProjectReference Include="..\Solver\Craftimizer.Solver.csproj" />
|
<ProjectReference Include="..\Solver\Craftimizer.Solver.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup Condition="'$(IS_BENCH)'=='1'">
|
||||||
<DefineConstants Condition="'$(IS_BENCH)'=='1'">$(DefineConstants);IS_DETERMINISTIC</DefineConstants>
|
<DefineConstants>$(DefineConstants);IS_DETERMINISTIC</DefineConstants>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -15,9 +15,13 @@
|
|||||||
</PackageReference>
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup Condition="'$(IS_BENCH)'=='1'">
|
||||||
<DefineConstants Condition="'$(IS_BENCH)'=='1'">$(DefineConstants);IS_DETERMINISTIC</DefineConstants>
|
<DefineConstants>$(DefineConstants);IS_DETERMINISTIC</DefineConstants>
|
||||||
<DefineConstants Condition="'$(Configuration)' == 'Trace'">$(DefineConstants);IS_DETERMINISTIC;IS_TRACE</DefineConstants>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)'=='Trace'">
|
||||||
|
<Optimize>True</Optimize>
|
||||||
|
<DefineConstants>$(DefineConstants);IS_DETERMINISTIC;IS_TRACE</DefineConstants>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -20,9 +20,13 @@
|
|||||||
<ProjectReference Include="..\Simulator\Craftimizer.Simulator.csproj" />
|
<ProjectReference Include="..\Simulator\Craftimizer.Simulator.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup Condition="'$(IS_BENCH)'=='1'">
|
||||||
<DefineConstants Condition="'$(IS_BENCH)'=='1'">$(DefineConstants);IS_DETERMINISTIC</DefineConstants>
|
<DefineConstants>$(DefineConstants);IS_DETERMINISTIC</DefineConstants>
|
||||||
<DefineConstants Condition="'$(Configuration)' == 'Trace'">$(DefineConstants);IS_DETERMINISTIC;IS_TRACE</DefineConstants>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="'$(Configuration)'=='Trace'">
|
||||||
|
<Optimize>True</Optimize>
|
||||||
|
<DefineConstants>$(DefineConstants);IS_DETERMINISTIC;IS_TRACE</DefineConstants>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
Reference in New Issue
Block a user