diff --git a/Benchmark/Craftimizer.Benchmark.csproj b/Benchmark/Craftimizer.Benchmark.csproj
index 09dc5e0..5d72384 100644
--- a/Benchmark/Craftimizer.Benchmark.csproj
+++ b/Benchmark/Craftimizer.Benchmark.csproj
@@ -7,7 +7,7 @@
enable
true
x64
- Debug;Release
+ Debug;Release;Deterministic
@@ -32,7 +32,7 @@
-
+
$(DefineConstants);IS_DETERMINISTIC
diff --git a/Benchmark/Program.cs b/Benchmark/Program.cs
index eb87a15..b8738f4 100644
--- a/Benchmark/Program.cs
+++ b/Benchmark/Program.cs
@@ -2,15 +2,37 @@ using Craftimizer.Simulator;
using Craftimizer.Simulator.Actions;
using Craftimizer.Solver;
using ObjectLayoutInspector;
+using System.Diagnostics;
namespace Craftimizer.Benchmark;
internal static class Program
{
- private static Task Main(string[] args)
+ private static void Main(string[] args)
{
+#if IS_DETERMINISTIC
+ var b = new Bench();
+
+ var initConfig = Bench.Configs.First();
+ var initState = Bench.States.First();
+
+ var config = new MCTSConfig(initConfig.Data);
+
+ var s = Stopwatch.StartNew();
+ for (var i = 0; i < 100; ++i)
+ {
+ var solver = new MCTS(config, initState);
+ var progress = 0;
+ solver.Search(initConfig.Data.Iterations, ref progress, CancellationToken.None);
+ var solution = solver.Solution();
+ Console.WriteLine($"{i+1}");
+ }
+ s.Stop();
+ Console.WriteLine($"{s.Elapsed.TotalMilliseconds:0.00}ms");
+#else
RunBench(args);
- return Task.CompletedTask;
+#endif
+
// return RunOther();
}
diff --git a/Craftimizer.sln b/Craftimizer.sln
index 3c77500..b20584e 100644
--- a/Craftimizer.sln
+++ b/Craftimizer.sln
@@ -22,27 +22,36 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
+ Deterministic|x64 = Deterministic|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.ActiveCfg = Debug|x64
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.Build.0 = Debug|x64
+ {13C812E9-0D42-4B95-8646-40EEBF30636F}.Deterministic|x64.ActiveCfg = Release|x64
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.ActiveCfg = Release|x64
{13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.Build.0 = Release|x64
{057C4B64-4D99-4847-9BCF-966571CAE57C}.Debug|x64.ActiveCfg = Debug|x64
{057C4B64-4D99-4847-9BCF-966571CAE57C}.Debug|x64.Build.0 = Debug|x64
+ {057C4B64-4D99-4847-9BCF-966571CAE57C}.Deterministic|x64.ActiveCfg = Deterministic|x64
+ {057C4B64-4D99-4847-9BCF-966571CAE57C}.Deterministic|x64.Build.0 = Deterministic|x64
{057C4B64-4D99-4847-9BCF-966571CAE57C}.Release|x64.ActiveCfg = Release|x64
{057C4B64-4D99-4847-9BCF-966571CAE57C}.Release|x64.Build.0 = Release|x64
{172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Debug|x64.ActiveCfg = Debug|x64
{172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Debug|x64.Build.0 = Debug|x64
+ {172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Deterministic|x64.ActiveCfg = Deterministic|x64
+ {172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Deterministic|x64.Build.0 = Deterministic|x64
{172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Release|x64.ActiveCfg = Release|x64
{172EE849-AC7E-4F2A-ACAB-EF9D065523B3}.Release|x64.Build.0 = Release|x64
{2B0EA452-6DFC-48DB-9049-EA782E600C21}.Debug|x64.ActiveCfg = Debug|x64
{2B0EA452-6DFC-48DB-9049-EA782E600C21}.Debug|x64.Build.0 = Debug|x64
+ {2B0EA452-6DFC-48DB-9049-EA782E600C21}.Deterministic|x64.ActiveCfg = Deterministic|x64
+ {2B0EA452-6DFC-48DB-9049-EA782E600C21}.Deterministic|x64.Build.0 = Deterministic|x64
{2B0EA452-6DFC-48DB-9049-EA782E600C21}.Release|x64.ActiveCfg = Release|x64
{2B0EA452-6DFC-48DB-9049-EA782E600C21}.Release|x64.Build.0 = Release|x64
{C3AEA981-9DA8-405C-995B-86528493891B}.Debug|x64.ActiveCfg = Debug|x64
{C3AEA981-9DA8-405C-995B-86528493891B}.Debug|x64.Build.0 = Debug|x64
+ {C3AEA981-9DA8-405C-995B-86528493891B}.Deterministic|x64.ActiveCfg = Deterministic|x64
{C3AEA981-9DA8-405C-995B-86528493891B}.Release|x64.ActiveCfg = Release|x64
{C3AEA981-9DA8-405C-995B-86528493891B}.Release|x64.Build.0 = Release|x64
EndGlobalSection
diff --git a/Simulator/Craftimizer.Simulator.csproj b/Simulator/Craftimizer.Simulator.csproj
index 05da899..aa8f2a8 100644
--- a/Simulator/Craftimizer.Simulator.csproj
+++ b/Simulator/Craftimizer.Simulator.csproj
@@ -3,10 +3,9 @@
net8.0
enable
- 12.0
enable
x64
- Debug;Release
+ Debug;Release;Deterministic
@@ -16,7 +15,7 @@
-
+
$(DefineConstants);IS_DETERMINISTIC
diff --git a/Solver/Craftimizer.Solver.csproj b/Solver/Craftimizer.Solver.csproj
index d57c49a..cb09a3a 100644
--- a/Solver/Craftimizer.Solver.csproj
+++ b/Solver/Craftimizer.Solver.csproj
@@ -6,7 +6,7 @@
enable
True
x64
- Debug;Release
+ Debug;Release;Deterministic
@@ -26,7 +26,7 @@
-
+
$(DefineConstants);IS_DETERMINISTIC
diff --git a/Test/Craftimizer.Test.csproj b/Test/Craftimizer.Test.csproj
index e9d833d..173b0a7 100644
--- a/Test/Craftimizer.Test.csproj
+++ b/Test/Craftimizer.Test.csproj
@@ -7,7 +7,7 @@
false
true
x64
- Debug;Release
+ Debug;Release;Deterministic
@@ -25,7 +25,7 @@
-
+
$(DefineConstants);IS_DETERMINISTIC