Re enable random actions
This commit is contained in:
@@ -14,7 +14,7 @@ public class Solver
|
||||
public Simulator Simulator;
|
||||
public Node RootNode;
|
||||
|
||||
// public Random Random => Simulator.Input.Random;
|
||||
public Random Random => Simulator.Input.Random;
|
||||
|
||||
public Solver(SolverConfig config, SimulationState state, bool strict)
|
||||
{
|
||||
@@ -160,7 +160,7 @@ public class Solver
|
||||
if (initialState.IsComplete)
|
||||
return (initialNode, initialState.CompletionState, initialState.CalculateScore(Config.MaxStepCount) ?? 0);
|
||||
|
||||
var randomAction = initialState.AvailableActions.First();
|
||||
var randomAction = initialState.AvailableActions.SelectRandom(Random);
|
||||
initialState.AvailableActions.RemoveAction(randomAction);
|
||||
var expandedNode = initialNode.Add(Execute(initialState.State, randomAction, true));
|
||||
|
||||
@@ -175,7 +175,7 @@ public class Solver
|
||||
{
|
||||
if (SimulationNode.GetCompletionState(currentCompletionState, currentActions) != CompletionState.Incomplete)
|
||||
break;
|
||||
randomAction = currentActions.First();
|
||||
randomAction = currentActions.SelectRandom(Random);
|
||||
actions[actionCount++] = randomAction;
|
||||
(currentState, currentCompletionState, currentActions) = ExecuteSimple(currentState, randomAction, true);
|
||||
}
|
||||
|
||||
@@ -3,27 +3,20 @@ using System.Runtime.InteropServices;
|
||||
namespace Craftimizer.Solver.Crafty;
|
||||
|
||||
[StructLayout(LayoutKind.Auto)]
|
||||
public readonly struct SolverConfig
|
||||
public readonly record struct SolverConfig
|
||||
{
|
||||
public readonly int Iterations;
|
||||
public readonly float ScoreStorageThreshold;
|
||||
public readonly float MaxScoreWeightingConstant;
|
||||
public readonly float ExplorationConstant;
|
||||
public readonly int MaxStepCount;
|
||||
public int Iterations { get; init; }
|
||||
public float ScoreStorageThreshold { get; init; }
|
||||
public float MaxScoreWeightingConstant { get; init; }
|
||||
public float ExplorationConstant { get; init; }
|
||||
public int MaxStepCount { get; init; }
|
||||
|
||||
public SolverConfig() : this(30000, 1f, 0.1f, 4, 25) { }
|
||||
|
||||
public SolverConfig(
|
||||
int iterations = 30000,
|
||||
float scoreStorageThreshold = 1f,
|
||||
float maxScoreWeightingConstant = 0.1f,
|
||||
float explorationConstant = 4f,
|
||||
int maxStepCount = 25)
|
||||
public SolverConfig()
|
||||
{
|
||||
Iterations = iterations;
|
||||
ScoreStorageThreshold = scoreStorageThreshold;
|
||||
MaxScoreWeightingConstant = maxScoreWeightingConstant;
|
||||
ExplorationConstant = explorationConstant;
|
||||
MaxStepCount = maxStepCount;
|
||||
Iterations = 30000;
|
||||
ScoreStorageThreshold = 1f;
|
||||
MaxScoreWeightingConstant = 0.1f;
|
||||
ExplorationConstant = 4f;
|
||||
MaxStepCount = 25;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user