mtg-genetic-deckbuilding

Generating and improving Magic: The Gathering decks using a genetic algorithm
git clone https://kevincorvisier.fr/git/mtg-genetic-deckbuilding.git
Log | Files | Refs | LICENSE

ModeNameSize
-rw-r--r--.gitignore92L
-rw-r--r--.mvn/local-settings.xml10L
-rw-r--r--.mvn/maven.config2L
-rw-r--r--LICENSE674L
-rw-r--r--launchers/Package_genetic-deckbuilding.launch21L
-rw-r--r--launchers/Run_genetic-deckbuilding.launch27L
-rw-r--r--lombok.config2L
-rw-r--r--pom.xml133L
-rw-r--r--src/assembly/assembly.xml44L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/ApplicationConfig.java80L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/GuiFake.java328L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/Main.java110L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/Reloadable.java8L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/ai/CardPoolService.java115L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/ai/GeneticAlgorithm.java146L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/Evaluation.java9L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/GameSimulationResult.java19L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/GameSimulator.java96L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/GoldfishEvaluation.java95L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/GoldfishEvaluationContext.java66L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/GoldfishEvaluationEnabledCondition.java14L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/WinRatioContinueCondition.java23L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/WinRatioEvaluation.java150L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/WinRatioEvaluationContext.java46L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/WinRatioEvaluationEnabledCondition.java14L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/stop/DayTime.java34L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/stop/DayTimeStopCondition.java65L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/stop/DayTimeStopConditionEnabled.java15L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/stop/EvaluationStopCondition.java11L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/stop/EvaluationStopConditionType.java7L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/stop/FixedCountStopCondition.java33L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/evaluation/stop/FixedCountStopConditionEnabled.java15L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/events/EvaluationDoneEvent.java17L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/io/PopulationStatsCsvWriter.java47L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/operators/crossover/Crossover.java10L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/operators/crossover/UniformCrossover.java55L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/operators/mutation/Mutation.java8L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/operators/mutation/RandomCardMutation.java74L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/operators/mutation/RandomCardMutationEnabledCondition.java14L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/operators/mutation/SwapSideboardMutation.java52L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/operators/mutation/SwapSideboardMutationEnabledCondition.java14L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/operators/selection/BiasedRandomSelection.java56L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/operators/selection/HybridSelection.java20L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/operators/selection/Selection.java28L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/operators/selection/TournamentSelection.java28L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/population/DefaultPopulation.java52L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/population/Individual.java87L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/population/IndividualNameGenerator.java21L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/population/NextGenerationService.java181L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/population/Population.java25L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/population/PopulationFactory.java87L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/spring/converters/StringToCardListFileConverter.java35L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/spring/converters/StringToFileConverter.java26L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/spring/converters/StringToWinRatioContinueConditionConverter.java20L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/utils/CardListFile.java99L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/utils/MagicOnlineDeckLoader.java113L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/utils/RandomDeckGenerator.java126L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/utils/TimeLimitedCodeBlock.java62L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/validation/CardValidator.java10L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/validation/ErrorProneCardsService.java50L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/validation/ValidationService.java63L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/validation/individual/CardPoolIndividualValidator.java27L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/validation/individual/ConditionsIndividualValidator.java86L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/validation/individual/FormatIndividualValidator.java32L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/validation/individual/IndividualValidator.java12L
-rw-r--r--src/main/java/fr/kevincorvisier/mtg/gdb/validation/individual/MaxUniqueCardsIndividualValidator.java29L
-rwxr-xr-xsrc/main/packaged-resources/bin/genetic-deckbuilding.sh29L
-rw-r--r--src/main/packaged-resources/cfg/application.properties29L
-rw-r--r--src/main/packaged-resources/cfg/error-prone-cards.txt8L
-rw-r--r--src/main/packaged-resources/cfg/evaluation.properties58L
-rw-r--r--src/main/packaged-resources/cfg/example1/card-pool.txt994L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2021-11-27_OnodaHirhoshi_Stompy.txt14L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2021-12-31_AkaiSatoshi_BGAggro.txt16L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2022-04-29_AkaiSatoshi_TurboCycling.txt18L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2022-12-30_WatanabeDaiki_BlueOrbMiddleSchool.txt18L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2023-03-25_SetoMasakazu_Burn.txt12L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2024-01-20_OkauchiRyota_SnakeTongueMiddleSchool.txt19L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2024-02-25_YaitaDaisuke_URcontrolMiddleSchool.txt24L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2024-06-15_SugiuraYuki_Survival.txt22L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2024-08-18_TsujiNaoto_CanadianThresholdMiddleSchool.txt19L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2024-09-14_SuzukiRyo_Goblins.txt15L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2024-09-23_TamaruDaisuke_DeadguyAle.txt16L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2024-10-05_WatanabeDaiki_Steroid.txt17L
-rw-r--r--src/main/packaged-resources/cfg/example1/ms-opponents/2024-10-19_UrataTakurou_Rogue.txt17L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2020-10-25_JosephMilia_UWBControl.txt16L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2021-01-31_PhilTaylor_MonoBlack.txt15L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2022-05-31_GabrielFarkas_PitRack.txt16L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2022-11-12_AndoniPerez_ThreeDeuce.txt20L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2023-02-28_KalleKallur_Terrageddon.txt21L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2023-07-31_JulianFriedrich_Landstill.txt4L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2023-11-26_Ruudmaarten_TheSolution.txt20L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2023-11-30_FernandoPortelada_DeadguyAle.txt15L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2024-01-07_KimKarlPfeiffer_Zoo.txt19L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2024-05-26_Arnievoncalum_Fluctuator.txt18L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2024-05-31_JohnJacobBjorgaard_Survival.txt31L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2024-05-31_SantiagoGongora_Goblins.txt18L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2024-09-01_Rain_Rogue.txt19L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2024-09-20_GaryRoth_WhiteWeenie.txt21L
-rw-r--r--src/main/packaged-resources/cfg/example1/pm-opponents/2024-11-24_AAUE_Burn.txt14L
-rw-r--r--src/main/packaged-resources/cfg/logback.xml38L
-rw-r--r--src/main/packaged-resources/cfg/population.properties14L
-rw-r--r--src/test/java/fr/kevincorvisier/mtg/gdb/evaluation/stop/DayTimeTest.java51L