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(); } }
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); }
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); }
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); }