Skip to content

Commit e6afbd0

Browse files
committed
Delete old enemy Fitness script and fix its references
1 parent 6277bff commit e6afbd0

File tree

5 files changed

+15
-204
lines changed

5 files changed

+15
-204
lines changed

Assets/Scripts/Game/EnemyGenerator/EnemyGenerator.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ public class EnemyGenerator
1313
private SearchSpaceConfig _searchSpace;
1414
private Population _solution;
1515
private GeneticAlgorithmData _data;
16+
private readonly IEnemyFitness _fitnessFunction;
1617
public Population Solution { get => _solution; }
1718
public GeneticAlgorithmData Data { get => _data; }
18-
private readonly IEnemyFitness _fitnessFunction;
1919

2020
public EnemyGenerator(EnemyGeneratorGeneticAlgorithmSettings parameters, SearchSpaceConfig searchSpace, IEnemyFitness fitnessFunction)
2121
{
@@ -43,14 +43,14 @@ private void Evolution()
4343

4444
Population pop = new Population(
4545
_parameters.numberOfMovements,
46-
_parameters.numberOfWeapons
46+
_parameters.numberOfWeapons,
47+
_fitnessFunction
4748
);
4849
while (pop.Count() < _parameters.initialPopulationSize)
4950
{
5051
Individual ind = Individual.GetRandom(_searchSpace);
5152
//Difficulty.Calculate(ref ind);
5253
_fitnessFunction.Calculate(ref ind, _parameters.difficulty);
53-
Fitness.Calculate(ref ind, _parameters.difficulty);
5454
pop.PlaceIndividual(ind);
5555
}
5656
_data.initialPopulation = new List<Individual>(pop.ToList());
@@ -61,7 +61,7 @@ private void Evolution()
6161
List<Individual> intermediate = new List<Individual>();
6262
while (intermediate.Count < _parameters.intermediatePopulationSize)
6363
{
64-
Individual[] parents = Selection.Select(CROSSOVER_PARENTS, _parameters.numberOfCompetitors, pop);
64+
Individual[] parents = Selection.Select(CROSSOVER_PARENTS, _parameters.numberOfCompetitors, pop, _fitnessFunction);
6565
Individual[] offspring = Crossover.Apply(parents[0], parents[1], _searchSpace);
6666

6767
if (_parameters.mutationRate > RandomSingleton.GetInstance().RandomPercent())
@@ -75,7 +75,7 @@ private void Evolution()
7575
for (int i = 0; i < offspring.Length; i++)
7676
{
7777
//Difficulty.Calculate(ref offspring[i]);
78-
Fitness.Calculate(ref offspring[i], _parameters.difficulty);
78+
_fitnessFunction.Calculate(ref offspring[i], _parameters.difficulty);
7979
intermediate.Add(offspring[i]);
8080
}
8181
}

Assets/Scripts/Game/EnemyGenerator/Fitness.cs

Lines changed: 0 additions & 179 deletions
This file was deleted.

Assets/Scripts/Game/EnemyGenerator/Fitness.cs.meta

Lines changed: 0 additions & 11 deletions
This file was deleted.

Assets/Scripts/Game/EnemyGenerator/Population.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ public struct Population
2424
/// The MAP-Elites map (a matrix of individuals).
2525
public Individual[,] map { get; }
2626

27+
private IEnemyFitness _fitnessFunction;
28+
2729
/// MAP-Elites Population constructor.
28-
public Population(
29-
int _movement,
30-
int _weapons
31-
)
30+
public Population(int _movement, int _weapons, IEnemyFitness fitnessFunction)
3231
{
3332
dimension = (_movement, _weapons);
3433
map = new Individual[dimension.movement, dimension.weapon];
34+
_fitnessFunction = fitnessFunction;
3535
}
3636

3737
/// Return the number of Elites of the population.
@@ -82,7 +82,7 @@ Individual _individual
8282
int m = Convert.ToInt32(_individual.Enemy.Movement);
8383
int w = Convert.ToInt32(_individual.Weapon.Weapon);
8484
// If the new individual deserves to survive
85-
if (Fitness.IsBest(_individual, map[m, w]))
85+
if (_fitnessFunction.IsBest(_individual, map[m, w]))
8686
{
8787
// Then, place the individual in the MAP-Elites population
8888
map[m, w] = _individual;

Assets/Scripts/Game/EnemyGenerator/Selection.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ public static class Selection
1414
public static readonly string NOT_ENOUGH_COMPETITORS =
1515
"There are not enough individuals in the entered population to " +
1616
"perform this operation.";
17-
1817
/// Select individuals from the MAP-Elites population.
1918
///
2019
/// This function ensures that the same individual will not be selected
@@ -23,7 +22,7 @@ public static class Selection
2322
/// population. Instead of selecting directly an individual, we select
2423
/// its coordinate from the auxiliary list and remove it then it is not
2524
/// available for the next selection.
26-
public static Individual[] Select(int _amount, int _competitors, Population _pop)
25+
public static Individual[] Select(int _amount, int _competitors, Population _pop, IEnemyFitness fitnessFunction)
2726
{
2827
// Get the list of Elites' coordinates (the available competitors)
2928
List<Coordinate> avco = _pop.GetElitesCoordinates();
@@ -40,7 +39,8 @@ public static Individual[] Select(int _amount, int _competitors, Population _pop
4039
(Coordinate coordinate, Individual individual) = Tournament(
4140
_competitors, // Number of competitors
4241
_pop, // Population
43-
avco // List of available competitors
42+
avco, // List of available competitors
43+
fitnessFunction
4444
);
4545
// Select an individual and remove it from available competitors
4646
individuals[i] = individual;
@@ -58,6 +58,7 @@ public static Individual[] Select(int _amount, int _competitors, Population _pop
5858
int _competitors,
5959
Population _pop,
6060
List<Coordinate> _avco
61+
, IEnemyFitness fitnessFunction
6162
)
6263
{
6364
// List of available competitors
@@ -79,7 +80,7 @@ List<Coordinate> _avco
7980
Coordinate coordinate = (Common.UNKNOWN, Common.UNKNOWN);
8081
for (int i = 0; i < _competitors; i++)
8182
{
82-
if (Fitness.IsBest(competitors[i], winner))
83+
if (fitnessFunction.IsBest(competitors[i], winner))
8384
{
8485
winner = competitors[i];
8586
coordinate = coordinates[i];

0 commit comments

Comments
 (0)