Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            List <Action> actions = new List <Action>();

            void DisplayAction(string s) => Console.WriteLine(s);

            IcaConfig  icaConfig  = GetIcaConfig();
            PsoConfig  psoConfig  = GetPsoConfig();
            DpsoConfig dpsoConfig = GetDpsoConfig();

            IRequestGenerator requestGenerator = new QwsRequestGenerator();

            Ica ica = new Ica();
            CompositionRequest icaRequest = requestGenerator.Generate(icaConfig);

            actions.Add(() => ica.Execute(icaRequest, DisplayAction));

            // Pso pso = new Pso();
            // CompositionRequest psoRequest = requestGenerator.Generate(psoConfig);
            // actions.Add(() => pso.Execute(psoRequest, DisplayAction));

            Dpso dpso = new Dpso();
            CompositionRequest dpsoRequest = requestGenerator.Generate(dpsoConfig);

//            actions.Add(() => dpso.Execute(dpsoRequest, DisplayAction));

            for (var i = 0; i < actions.Count; i++)
            {
                Console.ForegroundColor = i % 2 == 0 ? ConsoleColor.Cyan : ConsoleColor.DarkYellow;

                var a = actions[i];
                a.Invoke();
            }
        }
Ejemplo n.º 2
0
        private static CompositionPlan UpdatePBest(this CompositionPlan compositionPlan,
                                                   PsoConfig psoConfig)
        {
            compositionPlan.Cost = compositionPlan.CalculateCost(psoConfig.QualityAttributeWeights);

            if (compositionPlan.Cost < compositionPlan.PBest.Cost)
            {
                compositionPlan.PBest = compositionPlan;
            }

            return(compositionPlan);
        }
Ejemplo n.º 3
0
        public static CompositionPlan Move(this CompositionPlan compositionPlan,
                                           CompositionPlan gBest, PsoConfig psoConfig, List <TaskCandidateService> taskCandidateServices)
        {
            int columnsToBeMaskedLocally  = (int)(compositionPlan.TaskServices.Count * psoConfig.C1);
            int columnsToBeMaskedGlobally = compositionPlan.TaskServices.Count - columnsToBeMaskedLocally;

            Random r            = new Random();
            int    mod          = DateTime.Now.Millisecond % 2;
            bool   directionLtr = mod == 1;

            compositionPlan.MoveTowardParticle(compositionPlan.PBest, columnsToBeMaskedLocally, directionLtr);

            compositionPlan.MoveTowardParticle(gBest, columnsToBeMaskedGlobally, !directionLtr);

            compositionPlan.UpdatePBest(psoConfig);

            return(compositionPlan);
        }
Ejemplo n.º 4
0
        private static PsoConfig GetPsoConfig()
        {
            PsoConfig psoConfig = new PsoConfig()
            {
                C1         = Convert.ToDouble(AppSettings("PSO").GetSection("C1").Value),
                C2         = Convert.ToDouble(AppSettings("PSO").GetSection("C2").Value),
                Omega      = Convert.ToDouble(AppSettings("PSO").GetSection("Omega").Value),
                OutputFile = AppSettings("PSO").GetSection("OutputFile").Value,

                Tasks                   = GetTasks(),
                DataSetFilePath         = AppSettings("DataSetFilePath").Value,
                QualityAttributeWeights = GetQualityAttributeWeights(),
                CandidatesPerTask       = Convert.ToInt32(AppSettings("CandidatesPerTask").Value),
                FileOffset              = Convert.ToInt32(AppSettings("FileOffset").Value),
                MaxIteration            = Convert.ToInt32(AppSettings("MaxIteration").Value)
            };

            return(psoConfig);
        }