// results in "qap/results/testName" public void test(string testName) { QAPProblem problem = problemFromFile(testName); //configuration GlobalConfiguration globalConfig = new GlobalConfiguration(){maximize = false}; globalConfig.configurations = new List<IslandConfiguration>(); globalConfig.configurations.Add(new IslandConfiguration(algorithm.enums.EvolutionStrategy.Tournament, 0.01, 0.1, 20, 10, 1)); globalConfig.configurations.Add(new IslandConfiguration(algorithm.enums.EvolutionStrategy.Tournament, 0.02, 0.05, 30, 10, 1)); globalConfig.configurations.Add(new IslandConfiguration(algorithm.enums.EvolutionStrategy.Tournament, 0.05, 0.02, 20, 10, 1)); globalConfig.configurations.Add(new IslandConfiguration(algorithm.enums.EvolutionStrategy.Tournament, 0.1, 0.01, 30, 10, 1)); globalConfig.connections = new List<int>[globalConfig.configurations.Count]; for(int i=0;i<globalConfig.configurations.Count;i++) globalConfig.connections[i] = new List<int>(); //globalConfig.connections[0].Add(3); //globalConfig.connections[1].Add(3); //globalConfig.connections[2].Add(3); globalConfig.evolutionTimeInSeconds = 25; globalConfig.generator = new QAPGenerator(problem); IslandSupervisor supervisor = new IslandSupervisor(globalConfig); QAPIndividual result =(QAPIndividual) supervisor.getResult(); foreach(int i in result.permutation) Console.WriteLine(i.ToString() + " "); //int result = 5; saveResult(result.value(), testName); }
public IslandSupervisor(GlobalConfiguration configuration) { this.configuration=configuration; this.islands = new Island[configuration.configurations.Count]; int i=0; //create islands foreach(IslandConfiguration islandConfiguration in configuration.configurations) { IFactory factory=null; switch(islandConfiguration.evolutionStrategy) { case EvolutionStrategy.Roulette: factory=new RouletteFactory(configuration,islandConfiguration); break; case EvolutionStrategy.Stochastic: factory = new StochasticFactory(configuration, islandConfiguration); break; case EvolutionStrategy.Tournament: factory = new TournamentFactory(configuration, islandConfiguration); break; case EvolutionStrategy.LinearRanked: factory = new LinearRankedFactory(configuration, islandConfiguration); break; case EvolutionStrategy.Truncation: factory = new TruncationFactory(configuration, islandConfiguration); break; default: throw new MissingMemberException("Undefined factory for selected strategy!"); } this.islands[i++]=new Island(factory,islandConfiguration,this); } Console.WriteLine("All islands initialized"); //create connections this.connections = new IslandConnections(configuration.connections, this.islands); Console.WriteLine("Connections created"); Console.WriteLine("Supervisor created"); }
public AbstractFactory(GlobalConfiguration config, IslandConfiguration iconfig) { _config = config; _iconfig = iconfig; }
public LinearRankedFactory(GlobalConfiguration config, IslandConfiguration iconfig) : base(config, iconfig) { }
public TournamentFactory(GlobalConfiguration config, IslandConfiguration iconfig) : base(config, iconfig) { }
public RouletteFactory(GlobalConfiguration config, IslandConfiguration iconfig) : base(config, iconfig) { }
public TruncationFactory(GlobalConfiguration config, IslandConfiguration iconfig) : base(config, iconfig) { }
public StochasticFactory(GlobalConfiguration config, IslandConfiguration iconfig) : base(config, iconfig) { }