Commit Graph

27 Commits

Author SHA1 Message Date
Sachin Grover
b7adb2aa42 Add SPDX license identifier if not present already in source file
Fixes: #9220
2020-07-17 20:24:12 +05:30
Kamil Śliwak
8c86a4983d [yul-phaser] Population: Add combine() 2020-04-06 19:06:08 +02:00
Kamil Śliwak
ef8d0888af [yul-phaser] Population: Add symmetricCrossoverWithRemainder() 2020-04-06 19:06:08 +02:00
Kamil Śliwak
7381068dcc [yul-phaser] Make the Population constructor that takes individuals public and use it to speed up some operations 2020-04-06 19:06:08 +02:00
Jason Cobb
c184844932
Remove forward declaration of class Population 2020-03-26 18:57:43 -04:00
Jason Cobb
e16c0c4133
Convert operator+(Population, Population) into a hidden friend 2020-03-25 23:54:30 -04:00
Kamil Śliwak
7edbbe4edd [yul-phaser] Make FitnessMetric::evaluate() non-const 2020-03-18 16:28:15 +01:00
cameel
7e80ac861f [yul-phaser] Population: Add mutate() and crossover() methods 2020-03-09 13:21:48 +01:00
Kamil Śliwak
e1b8b64f05 [yul-phaser] Population: Remove no longer used methods for running algorithm steps
- They have been superseded by objects from GeneticAlgorithms.h
2020-02-25 16:06:16 +01:00
cameel
4665b7a7e4 [yul-phaser] Population: Add select() method 2020-02-25 15:25:16 +01:00
cameel
2291cf78ac [yul-phaser] Population: Add constructors to Individual to simplify initialization 2020-02-19 17:26:34 +01:00
cameel
cef01c961a [yul-phaser] Population: Keep the individuals always sorted 2020-02-19 17:26:34 +01:00
cameel
76842ac3fd [yul-phaser] Population: Evaluate fitness immediately when an individual is added or modified
- This removes the explicit evaluation phase.
- Fitness is no longer optional in Individual
2020-02-19 17:26:34 +01:00
cameel
66fdc1c374 [yul-phaser] Population: Store fitness metric rather than program directly
- In the console app use ProgramSize metric when creating the population.
2020-02-19 17:03:35 +01:00
cameel
85074e7a8a [yul-phaser] Population: Extract sorting from doSelection() into sortIndividuals() in Population class 2020-02-19 17:03:35 +01:00
cameel
41f36f421d [yul-phaser] Population: Extract conversion from chromosomes to individuals into a separate function 2020-02-19 17:03:35 +01:00
Kamil Śliwak
31d8d5930a [yul-phaser] Population: Equality operators for populations and individuals 2020-02-18 19:40:37 +01:00
cameel
d9c5e2dc9f [yul-phaser] Population: Add operator+() 2020-02-18 19:40:37 +01:00
Kamil Śliwak
ecb30c670f [yul-phaser] Population: Make ordering of individuals with same fitness deterministic and prioritise shorter chromosomes
- Before this change the order of chromosomes with the same fitness in a population depended on the initial order set when the population was first created. Now it only depends on the individual.
- The length comparison is not strictly necessary (lexicographical order covers that) but it makes the intention clear and the comparison slightly faster when chromosomes have different lengths.
2020-02-18 19:40:37 +01:00
Kamil Śliwak
40a6669538 [yul-phaser] Population: Extract a function for comparing fitness of individuals
- Mostly for readability and convenience. This significantly shortens calls to sort().
- I could define it as Individual::operator< instead but it would be inconsistent with operator== because it does not compare the chromosomes, only fitness. It could result in an unintuitive situation where (a <= b <= a) does not necessarily imply (a == b).
2020-02-18 19:40:37 +01:00
Kamil Śliwak
806891f494 [yul-phaser] Population: Customizable chromosome length in makeRandom() 2020-02-18 19:40:37 +01:00
cameel
71dcbf9df5 [yul-phaser] Population: Remove ambiguous default from one of the constructors 2020-02-18 19:38:55 +01:00
Kamil Śliwak
342a4e5dee [yul-phaser] Rename Random to SimulationRNG (fix references) 2020-02-16 02:18:21 +01:00
Kamil Śliwak
b01766c4db [yul-phaser] Gather functions from Random into SimulationRNG class 2020-02-16 02:18:21 +01:00
cameel
e4c7b73897 [yul-phaser] Store already loaded program in Population and make copies when computing fitness
- Until now the source code was being parsed during every fitness computation. Now the parsed program is reused and only the optimisation steps are applied each time.
2020-02-06 09:01:10 +01:00
cameel
785f65d0f5 [yul-phaser] Make Program and Population classes accept source code rather than file path
- I need some sample .yul files for testing but I see that existing tests generally have source code hard-coded in them rather than in standalone .yul files. There are lots of .yul files but they seem to be automatically processed by a special test case rather loaded ad-hoc by manually created tests.
- Program and Population required a file name until now. I'm making them accept loaded source code to be able to give them data hard-coded in a test.
2020-02-05 18:13:30 +01:00
cameel
7b7c88ae95 [yul-phaser] Add Population class 2020-02-05 18:13:30 +01:00