def __str__(self):
     return 'Competitive' + Coevolution.__str__(self)
 def _oneGeneration(self):
     Coevolution._oneGeneration(self)
     # change roles between parasites and hosts
     tmp = self.pop
     self.pop = self.parasitePop
     self.parasitePop = tmp
 def _oneGeneration(self):
     Coevolution._oneGeneration(self)
     # change the main pop
     self.pops[self.mainpop] = self.pop
     self.mainpop = self.generation % self.numPops
     self.pop = self.pops[self.mainpop]
 def _stepsPerGeneration(self):    
     if self.tournamentSize == None:
         return 2 * self.populationSize** 2
     else:
         return Coevolution._stepsPerGeneration(self)
Exemple #5
0
 def _oneGeneration(self):
     Coevolution._oneGeneration(self)
     # change roles between parasites and hosts
     tmp = self.pop
     self.pop = self.parasitePop
     self.parasitePop = tmp
 def __str__(self):
     return 'MultiPop'+str(self.numPops)+Coevolution.__str__(self)
Exemple #7
0
 def __str__(self):
     return 'Competitive' + Coevolution.__str__(self)
 def _stepsPerGeneration(self):
     if self.tournamentSize == None:
         return 2 * self.populationSize**2
     else:
         return Coevolution._stepsPerGeneration(self)
 def _oneGeneration(self):
     Coevolution._oneGeneration(self)
     # change the main pop
     self.pops[self.mainpop] = self.pop
     self.mainpop = self.generation % self.numPops
     self.pop = self.pops[self.mainpop]
 def __str__(self):
     return 'MultiPop' + str(self.numPops) + Coevolution.__str__(self)
Exemple #11
0
def run():
    plotter = Plotter(show_avgs=True, plot_elites=False)
    fig_1 = 1
    fig_2 = 1
    fig_3 = 1
    fig_4 = 1
    fig_5 = 1
    extension = 1

    use_fixed_seed = 1
    enable_hof = 0
    enable_virulence = 0
    generations = 600

    export_folder = "../report/plots/"
    generator_a = Generator(100, 1)
    generator_b = Generator(10, 10)
    generator_c = Generator(50, 2)
    mutator = Mutator(mutation_rate=0.005, bit_flip=False)
    selector = FitnessProportionateSelection()
    n = 25

    if enable_hof:
        hof = HOF(scorer=Scorer(sample_size=10), size=50)
    else:
        hof = None

    # Wrap selector with virulence handling
    if enable_virulence:
        selector = VirulenceSelector(selector, 0.75, normalise=True)

    if fig_1:
        seed = seed_random(0, use_fixed_seed)
        description = "Figure 1 : [Seed {}]".format(seed)
        print(description)
        pop_a = generator_a.population(n, 0)
        pop_b = generator_a.population(n, 100)
        executor = Coevolution(scorer=F0Scorer(), selector=selector)
        executor.run(pop_a, pop_b, generations)
        plotter.make_plot(
            executor,
            fig_name=description,
            export_path=os.path.join(export_folder, "fig1.png"),
        )

    if fig_2:
        seed = seed_random(1, use_fixed_seed)
        description = "Figure 2 : [Seed {}]".format(seed)
        print(description)
        pop_a = generator_a.population(n, 0)
        pop_b = generator_a.population(n, 0)
        executor = Coevolution(mutator=mutator, hof=hof, selector=selector)
        executor.run(pop_a, pop_b, generations)
        plotter.make_plot(
            executor,
            fig_name=description,
            export_path=os.path.join(export_folder, "fig2.png"),
        )

    if fig_3:
        seed = seed_random(8486058433753192762, use_fixed_seed)
        description = "Figure 3 : [Seed {}]".format(seed)
        print(description)
        pop_a = generator_a.population(n, 0)
        pop_b = generator_a.population(n, 0)
        executor = Coevolution(
            mutator=mutator, scorer=Scorer(sample_size=1), hof=hof, selector=selector
        )
        executor.run(pop_a, pop_b, generations)
        plotter.make_plot(
            executor,
            fig_name=description,
            export_path=os.path.join(export_folder, "fig3.png"),
        )

    if fig_4:
        seed = seed_random(59759543964706904, use_fixed_seed)
        description = "Figure 4 : [Seed {}]".format(seed)
        print(description)
        pop_a = generator_b.population(n, 0)
        pop_b = generator_b.population(n, 0)
        executor = Coevolution(mutator=mutator, hof=hof, selector=selector)
        executor.run(pop_a, pop_b, generations)
        plotter.make_plot(
            executor,
            fig_name=description,
            export_path=os.path.join(export_folder, "fig4.png"),
        )

    if fig_5:
        seed = seed_random(5706501168717675099, use_fixed_seed)
        description = "Figure 5 : [Seed {}]".format(seed)
        print(description)
        pop_a = generator_c.population(n, 0)
        pop_b = generator_c.population(n, 0)
        executor = Coevolution(
            mutator=mutator,
            scorer=Scorer(intransitive=True),
            hof=hof,
            selector=selector,
        )
        executor.run(pop_a, pop_b, generations)
        plotter.make_plot(
            executor,
            fig_name=description,
            export_path=os.path.join(export_folder, "fig5.png"),
        )

    if extension:
        hof = HOF(scorer=Scorer(sample_size=10), size=50)
        generations = 1200
        fp_selector = FitnessProportionateSelection()
        sus_selector = StochasticUniversalSampling()
        t_selector = TournamentSelection(3)
        ext_cfgs = []
        ext_cfgs += [
            (
                "Virulence [0.5]",
                "fig_5_v0.5.png",
                VirulenceSelector(fp_selector, 0.5),
                False,
            )
        ]
        ext_cfgs += [
            (
                "Virulence [0.75]",
                "fig_5_v0.75.png",
                VirulenceSelector(fp_selector, 0.75),
                False,
            )
        ]
        ext_cfgs += [
            (
                "Virulence [0.75] + SUS",
                "fig_5_v0.75_sus.png",
                VirulenceSelector(sus_selector, 0.75),
                False,
            )
        ]
        ext_cfgs += [
            (
                "Virulence [0.75] + TS",
                "fig_5_v0.75_ts.png",
                VirulenceSelector(t_selector, 0.75),
                False,
            )
        ]
        ext_cfgs += [
            (
                "Virulence [0.75] + SUS + HOF",
                "fig_5_v0.75_sus_hof.png",
                VirulenceSelector(sus_selector, 0.75),
                True,
            )
        ]
        ext_cfgs += [
            (
                "Virulence [0.75] + HOF",
                "fig_5_v0.75_hof.png",
                VirulenceSelector(fp_selector, 0.75),
                True,
            )
        ]
        ext_cfgs += [("HOF", "fig_5_hof.png", fp_selector, True)]
        for (cfg_txt, export_name, selector, use_hof) in ext_cfgs:
            seed = seed_random(8985012493578745191, use_fixed_seed)
            description = "Figure 5 - {} : [Seed {}]".format(cfg_txt, seed)
            print(description)
            pop_a = generator_c.population(n, 0)
            pop_b = generator_c.population(n, 0)
            executor = Coevolution(
                mutator=mutator,
                scorer=Scorer(intransitive=True),
                selector=selector,
                hof=hof if use_hof else None,
            )
            executor.run(pop_a, pop_b, generations)
            plotter.make_plot(
                executor,
                fig_name=description,
                export_path=os.path.join(export_folder, export_name),
            )