コード例 #1
0
        public void Start()
        {
            InitialState.Graph.Edges.OfType <MaybeBlockedEdge>().ToList().ForEach(e => e.ActuallyBlocked = Random.NextDouble() <= e.BlockageProbability);
            var currentState = InitialState;

            while (!currentState.Goal)
            {
                Print($"Current State: {StateToString(currentState)}");
                Print("Possible transitions:");
                var possibleMoves = string.Join("\n", currentState.ValidMoves.Select(vm => $"\t{vm} -> \t{string.Join("\n\t\t\t", vm.NewStates.Select(StateToString))}"));

                Print(possibleMoves);
                var move = currentState.BestMove;
                Print($"Selected Action: {move} U{move.ExpectedValue()}\n");
                currentState = move.NewStates.First(s => InitialState.Match(s));
            }

            FinalState = currentState;
            Print($"Final State: {StateToString(FinalState)}\n");
            Print("Simulation is over.");
        }