/// <summary> /// Default Constructor /// </summary> public SolverSection() { InitializeComponent(); OnComplete = SolverComplete; solverEvalStatus = EvalStatus.NotStarted; treeViewer.OnVisualisationClick += new EventHandler<VisEventArgs>(OnVisualisationClick_TreeViewer); visualisationContainerLocalNodes.OnVisualisationClick += new EventHandler<VisEventArgs>(OnVisualisationClick_LocalNode); this.Disposed += new EventHandler(SolverSection_Disposed); }
/// <summary> /// Start the solver (this will always to run with a non UI worker thread) /// </summary> private void Solve() { try { complete = false; solverEvalStatus = EvalStatus.InProgress; solver = new SolverController(map); solver.ExitConditions.StopOnSolution = exitConditions.cbStopOnSolution.Checked; solver.ExitConditions.MaxDepth = (int)exitConditions.upMaxDepth.Value; solver.ExitConditions.MaxNodes = (int)exitConditions.upMaxNodes.Value; solver.ExitConditions.MaxItterations = (int)exitConditions.upMaxItter.Value; solver.ExitConditions.MaxTimeSecs = (int)(exitConditions.upMaxTime.Value * 60); solverEvalStatus = solver.Solve(); complete = true; } catch (Exception ex) { lastException = ex; } Invoke(OnComplete); // Set to SolverComplete }