示例#1
0
        async Task ExecuteRunHeuristic()
        {
            try
            {
                List <Problem> problems = null;
                IHeuristicConfigurationSetting settings = null;
                if (Context.Instance.Settings.GeneralSettings.MultiplesExecutions)
                {
                    problems = Context.Instance.Problems;
                }
                else
                {
                    problems = new List <Problem> {
                        Context.Instance.Problems.Where(t => t.ID_Problem.Equals(DARPSelected)).ToList().First()
                    }
                };

                switch (Context.Instance.Settings.GeneralSettings.DefaultHeuristic)
                {
                case "ILS":
                    settings = Context.Instance.Settings.ILSConfigurationSettings;
                    break;

                default:
                    settings = Context.Instance.Settings.ILSConfigurationSettings;
                    break;
                }

                //Mostrar Splash
                splashController.ShowSplash(new SplashInfo());
                RunMetaheuristicInput input = new RunMetaheuristicInput {
                    Problems = problems, HeuristicSettings = settings, Random = new Random(1)
                };
                RunMetaheuristicOutput output = await processController.Specific.RunMetaheuristic.ExecuteProcess(input);

                if (output != null)
                {
                    Context.Instance.Solutions = output.Solutions;
                    DARPResults       = new ResultsViewModel(output.Solutions.First());
                    ILSEvolution      = new ILSEvolutionViewModel(output.Solutions.First());
                    VNSOperators      = new VNSOperatorsViewModel(output.Solutions.First());
                    AlgorithmSummary  = new SummaryResultsViewModel(output.Solutions.First());
                    ChartsViewModel   = new ChartsViewModel(output.Solutions.First());
                    HeuristicExecuted = true;
                    TabSelected       = 1;
                    SetStatus(Constants.StatusType.Ok, String.Format(Properties.Resources.HEURISTIC_EXECUTED_SUCCESFULLY));
                }
                else
                {
                    SetStatus(Constants.StatusType.Ok, String.Format(Properties.Resources.HEURISTIC_EXECUTED_FAIL));
                }
            }
            finally
            {
                splashController.HideSplash();
            }
        }
示例#2
0
        static double _coef_Updater_Splash;  //Coeficiente de actualizaciónd e Splash

        public ILSMetaheuristic(IHeuristicConfigurationSetting setting, Problem problem, Random random)
        {
            _ilsSettings         = ((ILSConfigurationSettings)setting);
            _random              = random;
            _problem             = problem;
            _diversify           = _DIVERSIFY_MAX;
            _vns                 = new VNSMetaheuristic(this._ilsSettings, _problem, _random);
            _perturbations       = new Perturbations(_random, problem);
            _coef_Updater_Splash = 100 / (double)_ilsSettings.MaxILSIterations;
        }
示例#3
0
        public static IMetaheuristic CreateMetaheuristic(Constants.TypeMetaheuristics type, IHeuristicConfigurationSetting settings, Problem problem, Random random)
        {
            switch (type)
            {
            case Constants.TypeMetaheuristics.ILS:
                return(new ILSMetaheuristic(settings, problem, random));

            default:
                return(new ILSMetaheuristic(settings, problem, random));
            }
        }
示例#4
0
 public VNSMetaheuristic(IHeuristicConfigurationSetting setting, Problem problem, Random random)
 {
     HeuristicSettings = setting as ILSConfigurationSettings;
     _random           = random;
     _problem          = problem;
 }