@@ -541,6 +541,90 @@ def test_cut_generation(self):
541541 individual = mlc_repo .get_individual (4 )
542542 self .assertEqual (individual .get_value (), "4+4" )
543543
544+
545+ def test_cut_generations_more_than_once (self ):
546+ """
547+ Cut a generation using remove_population_from/remove_population_last
548+ :return:
549+ """
550+ mlc_repo = self .__get_new_repo ()
551+
552+ # add individuals
553+ mlc_repo .add_individual (Individual ("1+1" ))
554+ mlc_repo .add_individual (Individual ("2+2" ))
555+ mlc_repo .add_individual (Individual ("3+3" ))
556+ mlc_repo .add_individual (Individual ("4+4" ))
557+ mlc_repo .add_individual (Individual ("5+5" ))
558+ mlc_repo .add_individual (Individual ("6+6" ))
559+ mlc_repo .add_individual (Individual ("7+7" ))
560+ mlc_repo .add_individual (Individual ("8+8" ))
561+
562+ # add population
563+ p = Population (3 , 0 , Config .get_instance (), mlc_repo )
564+ p ._individuals = [1 , 1 , 1 ]
565+ mlc_repo .add_population (p )
566+
567+ # add population
568+ p = Population (3 , 0 , Config .get_instance (), mlc_repo )
569+ p ._individuals = [2 , 2 , 2 ]
570+ mlc_repo .add_population (p )
571+
572+ # add population
573+ p = Population (3 , 0 , Config .get_instance (), mlc_repo )
574+ p ._individuals = [3 , 3 , 3 ]
575+ mlc_repo .add_population (p )
576+
577+ # add population
578+ p = Population (3 , 0 , Config .get_instance (), mlc_repo )
579+ p ._individuals = [4 , 4 , 4 ]
580+ mlc_repo .add_population (p )
581+
582+ # add population
583+ p = Population (3 , 0 , Config .get_instance (), mlc_repo )
584+ p ._individuals = [5 , 5 , 5 ]
585+ mlc_repo .add_population (p )
586+
587+ self .assertEqual (mlc_repo .count_population (), 5 )
588+
589+ # Cut population 4
590+ mlc_repo .remove_population_from (4 + 1 )
591+ mlc_repo .remove_population_to (4 - 1 )
592+
593+ p = Population (3 , 0 , Config .get_instance (), mlc_repo )
594+ p ._individuals = [5 , 5 , 5 ]
595+ mlc_repo .add_population (p )
596+
597+ p = Population (3 , 0 , Config .get_instance (), mlc_repo )
598+ p ._individuals = [6 , 6 , 6 ]
599+ mlc_repo .add_population (p )
600+
601+ p = Population (3 , 0 , Config .get_instance (), mlc_repo )
602+ p ._individuals = [7 , 7 , 7 ]
603+ mlc_repo .add_population (p )
604+
605+ p = Population (3 , 0 , Config .get_instance (), mlc_repo )
606+ p ._individuals = [8 , 8 , 8 ]
607+ mlc_repo .add_population (p )
608+
609+ self .assertEqual (mlc_repo .count_population (), 5 )
610+
611+ # Cut population 4
612+ mlc_repo .remove_population_from (4 + 1 )
613+ mlc_repo .remove_population_to (4 - 1 )
614+
615+ # remove unused individuals
616+ mlc_repo .remove_unused_individuals ()
617+
618+ self .assertEqual (mlc_repo .count_population (), 1 )
619+ self .assertEqual (mlc_repo .count_individual (), 1 )
620+
621+ p = mlc_repo .get_population (1 )
622+ self .assertEqual (p ._individuals , [7 , 7 , 7 ])
623+
624+ individual = mlc_repo .get_individual (7 )
625+ self .assertEqual (individual .get_value (), "7+7" )
626+
627+
544628 def test_remove_population_to_from_bad_values (self ):
545629 mlc_repo = self .__get_new_repo ()
546630
0 commit comments