public Simulator(string path) { graph = new FileParser().ParseFile(path); network = new BayesianNetwork(graph); evidences = new List <Evidence>(); commandsMapper = new[] { UserAction.Of("Reset", Reset), UserAction.Of("Add Evidence", AddEvidence), UserAction.Of("Probabilistic Reasoning", ProbabilisticReasoning), UserAction.Of("Quit", Quit) }; probabilisticReasoning = new[] { UserFunction.Of("What is the probability that each of the vertices contains evacuees?", () => QueryNodes(network.EvacueeNodes)), UserFunction.Of("What is the probability that each of the vertices is flooded?", () => QueryNodes(network.FloodingNodes)), UserFunction.Of("What is the probability that each of the edges is blocked?", () => QueryNodes(network.BlockageNodes)), UserFunction.Of("What is the probability that a certain path is free from blockages?", IsPathFree), UserFunction.Of( "What is the path from a given location to a goal that has the highest probability of being free from blockages?", BestPath), UserFunction.Of("All", () => probabilisticReasoning[0].Action() .Concat(probabilisticReasoning[1].Action()).ToList() .Concat(probabilisticReasoning[2].Action()).ToList()) }; Start(); }