Solver token handling fixes, formatting tweaks

This commit is contained in:
Asriel Camora
2023-07-21 15:51:52 +04:00
parent 807e0838a2
commit 8c73796b75
2 changed files with 14 additions and 10 deletions
+1 -1
View File
@@ -82,7 +82,7 @@ public sealed class Simulator : SimulatorNoRandom
if (strict)
{
// always used Trained Eye if it's available
// always use Trained Eye if it's available
if (action == ActionType.TrainedEye)
return baseAction.CanUse(this);
+11 -7
View File
@@ -350,23 +350,24 @@ public sealed class Solver
break;
var s = Stopwatch.StartNew();
var tasks = new List<Task<(float MaxScore, int FurcatedActionIdx, SolverSolution Solution)>>(config.ForkCount);
var tasks = new Task<(float MaxScore, int FurcatedActionIdx, SolverSolution Solution)>[config.ForkCount];
for (var i = 0; i < config.ForkCount; i++)
{
var stateIdx = (int)((float)i / config.ForkCount * activeStates.Count);
var st = activeStates[stateIdx];
tasks.Add(
Task.Run(() =>
tasks[i] = Task.Run(() =>
{
var solver = new Solver(config, activeStates[stateIdx].State);
solver.Search(config.Iterations / config.ForkCount, token);
return (solver.MaxScore, stateIdx, solver.Solution());
}, token)
);
}, token);
}
Task.WaitAll(tasks.ToArray(), CancellationToken.None);
Task.WaitAll(tasks, token);
s.Stop();
if (token.IsCancellationRequested)
break;
var bestActions = tasks.Select(t => t.Result).OrderByDescending(r => r.MaxScore).Take(config.FurcatedActionCount).ToArray();
var bestAction = bestActions[0];
@@ -469,9 +470,12 @@ public sealed class Solver
solver.Search(config.Iterations / config.ForkCount, token);
return (solver.MaxScore, solver.Solution());
}, token);
Task.WaitAll(tasks, CancellationToken.None);
Task.WaitAll(tasks, token);
s.Stop();
if (token.IsCancellationRequested)
break;
var (maxScore, solution) = tasks.Select(t => t.Result).MaxBy(r => r.MaxScore);
if (maxScore >= config.ScoreStorageThreshold)