Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions source/EngineImpl/DescConverterService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -893,7 +893,7 @@ GenomeDesc DescConverterService::createGenomeDesc(TOs const& to, int genomeIndex
result._mutationRates._voidMutation._nodeProbability = genomeTO.mutationRates.voidMutation.nodeProbability;
result._mutationRates._appendNodeMutation._geneProbability = genomeTO.mutationRates.appendNodeMutation.geneProbability;
result._mutationRates._addNodeMutation._nodeProbability = genomeTO.mutationRates.addNodeMutation.nodeProbability;
result._mutationRates._trimNodeMutation._geneProbability = genomeTO.mutationRates.trimNodeMutation.geneProbability;
result._mutationRates._trimGeneMutation._geneProbability = genomeTO.mutationRates.trimGeneMutation.geneProbability;
result._mutationRates._deleteNodeMutation._nodeProbability = genomeTO.mutationRates.deleteNodeMutation.nodeProbability;
result._mutationRates._duplicateGeneMutation._geneProbability = genomeTO.mutationRates.duplicateGeneMutation.geneProbability;
result._mutationRates._deleteGeneMutation._geneProbability = genomeTO.mutationRates.deleteGeneMutation.geneProbability;
Expand Down Expand Up @@ -1003,7 +1003,7 @@ void DescConverterService::convertGenomeToTO(
genomeTO.mutationRates.voidMutation = {genome._mutationRates._voidMutation._nodeProbability};
genomeTO.mutationRates.appendNodeMutation = {genome._mutationRates._appendNodeMutation._geneProbability};
genomeTO.mutationRates.addNodeMutation = {genome._mutationRates._addNodeMutation._nodeProbability};
genomeTO.mutationRates.trimNodeMutation = {genome._mutationRates._trimNodeMutation._geneProbability};
genomeTO.mutationRates.trimGeneMutation = {genome._mutationRates._trimGeneMutation._geneProbability};
genomeTO.mutationRates.deleteNodeMutation = {genome._mutationRates._deleteNodeMutation._nodeProbability};
genomeTO.mutationRates.duplicateGeneMutation = {genome._mutationRates._duplicateGeneMutation._geneProbability};
genomeTO.mutationRates.deleteGeneMutation = {genome._mutationRates._deleteGeneMutation._geneProbability};
Expand Down
4 changes: 2 additions & 2 deletions source/EngineInterface/DescValidationService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ void DescValidationService::validateAndCorrect(GenomeDesc& genome)
std::clamp(genome._mutationRates._appendNodeMutation._geneProbability, 0.0f, 1.0f);
genome._mutationRates._addNodeMutation._nodeProbability =
std::clamp(genome._mutationRates._addNodeMutation._nodeProbability, 0.0f, 1.0f);
genome._mutationRates._trimNodeMutation._geneProbability =
std::clamp(genome._mutationRates._trimNodeMutation._geneProbability, 0.0f, 1.0f);
genome._mutationRates._trimGeneMutation._geneProbability =
std::clamp(genome._mutationRates._trimGeneMutation._geneProbability, 0.0f, 1.0f);
genome._mutationRates._deleteNodeMutation._nodeProbability =
std::clamp(genome._mutationRates._deleteNodeMutation._nodeProbability, 0.0f, 1.0f);
genome._mutationRates._duplicateGeneMutation._geneProbability =
Expand Down
8 changes: 4 additions & 4 deletions source/EngineInterface/GenomeDesc.h
Original file line number Diff line number Diff line change
Expand Up @@ -483,11 +483,11 @@ struct AddNodeMutationDesc
MEMBER(AddNodeMutationDesc, float, nodeProbability, 0.0f);
};

struct TrimNodeMutationDesc
struct TrimGeneMutationDesc
{
auto operator<=>(TrimNodeMutationDesc const&) const = default;
auto operator<=>(TrimGeneMutationDesc const&) const = default;

MEMBER(TrimNodeMutationDesc, float, geneProbability, 0.0f);
MEMBER(TrimGeneMutationDesc, float, geneProbability, 0.0f);
};

struct DeleteNodeMutationDesc
Expand Down Expand Up @@ -576,7 +576,7 @@ struct MutationRatesDesc
MEMBER(MutationRatesDesc, VoidMutationDesc, voidMutation, VoidMutationDesc());
MEMBER(MutationRatesDesc, AppendNodeMutationDesc, appendNodeMutation, AppendNodeMutationDesc());
MEMBER(MutationRatesDesc, AddNodeMutationDesc, addNodeMutation, AddNodeMutationDesc());
MEMBER(MutationRatesDesc, TrimNodeMutationDesc, trimNodeMutation, TrimNodeMutationDesc());
MEMBER(MutationRatesDesc, TrimGeneMutationDesc, trimGeneMutation, TrimGeneMutationDesc());
MEMBER(MutationRatesDesc, DeleteNodeMutationDesc, deleteNodeMutation, DeleteNodeMutationDesc());
MEMBER(MutationRatesDesc, CopyNodeSectionMutationDesc, copyNodeSectionMutation, CopyNodeSectionMutationDesc());
MEMBER(MutationRatesDesc, MoveNodeSectionMutationDesc, moveNodeSectionMutation, MoveNodeSectionMutationDesc());
Expand Down
2 changes: 1 addition & 1 deletion source/EngineInterface/GenomeDescHash.h
Original file line number Diff line number Diff line change
Expand Up @@ -565,7 +565,7 @@ struct std::hash<GenomeDesc>
hash_combine(seed, desc._mutationRates._voidMutation._nodeProbability);
hash_combine(seed, desc._mutationRates._appendNodeMutation._geneProbability);
hash_combine(seed, desc._mutationRates._addNodeMutation._nodeProbability);
hash_combine(seed, desc._mutationRates._trimNodeMutation._geneProbability);
hash_combine(seed, desc._mutationRates._trimGeneMutation._geneProbability);
hash_combine(seed, desc._mutationRates._deleteNodeMutation._nodeProbability);
hash_combine(seed, desc._mutationRates._duplicateGeneMutation._geneProbability);
hash_combine(seed, desc._mutationRates._deleteGeneMutation._geneProbability);
Expand Down
4 changes: 2 additions & 2 deletions source/EngineInterface/SimulationParameters.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -507,9 +507,9 @@ ParametersSpec const& SimulationParameters::getSpec()
.reference(
FloatSpec().member(&SimulationParameters::addNodeMetaMutationsSigma).min(0.0f).max(1.0f).logarithmic(true).format("%.5f")),
ParameterSpec()
.name("Trim node mutation sigma")
.name("Trim gene mutation sigma")
.reference(
FloatSpec().member(&SimulationParameters::trimNodeMetaMutationsSigma).min(0.0f).max(1.0f).logarithmic(true).format("%.5f")),
FloatSpec().member(&SimulationParameters::trimGeneMetaMutationsSigma).min(0.0f).max(1.0f).logarithmic(true).format("%.5f")),
ParameterSpec()
.name("Delete node mutation sigma")
.reference(
Expand Down
2 changes: 1 addition & 1 deletion source/EngineInterface/SimulationParameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ struct SimulationParameters
BaseParameter<float> voidMetaMutationsSigma = {0};
BaseParameter<float> appendNodeMetaMutationsSigma = {0};
BaseParameter<float> addNodeMetaMutationsSigma = {0};
BaseParameter<float> trimNodeMetaMutationsSigma = {0};
BaseParameter<float> trimGeneMetaMutationsSigma = {0};
BaseParameter<float> deleteNodeMetaMutationsSigma = {0};
BaseParameter<float> duplicateGeneMetaMutationsSigma = {0};
BaseParameter<float> deleteGeneMetaMutationsSigma = {0};
Expand Down
2 changes: 1 addition & 1 deletion source/EngineKernels/DataAccessKernels.cu
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ namespace
genomeTO.mutationRates.voidMutation = {genome->mutationRates.voidMutation.nodeProbability};
genomeTO.mutationRates.appendNodeMutation = {genome->mutationRates.appendNodeMutation.geneProbability};
genomeTO.mutationRates.addNodeMutation = {genome->mutationRates.addNodeMutation.nodeProbability};
genomeTO.mutationRates.trimNodeMutation = {genome->mutationRates.trimNodeMutation.geneProbability};
genomeTO.mutationRates.trimGeneMutation = {genome->mutationRates.trimGeneMutation.geneProbability};
genomeTO.mutationRates.deleteNodeMutation = {genome->mutationRates.deleteNodeMutation.nodeProbability};
genomeTO.mutationRates.duplicateGeneMutation = {genome->mutationRates.duplicateGeneMutation.geneProbability};
genomeTO.mutationRates.deleteGeneMutation = {genome->mutationRates.deleteGeneMutation.geneProbability};
Expand Down
2 changes: 1 addition & 1 deletion source/EngineKernels/EntityFactory.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ __inline__ __device__ Genome* EntityFactory::createGenomeFromTO(TOs const& to, i
genome->mutationRates.voidMutation = {genomeTO.mutationRates.voidMutation.nodeProbability};
genome->mutationRates.appendNodeMutation = {genomeTO.mutationRates.appendNodeMutation.geneProbability};
genome->mutationRates.addNodeMutation = {genomeTO.mutationRates.addNodeMutation.nodeProbability};
genome->mutationRates.trimNodeMutation = {genomeTO.mutationRates.trimNodeMutation.geneProbability};
genome->mutationRates.trimGeneMutation = {genomeTO.mutationRates.trimGeneMutation.geneProbability};
genome->mutationRates.deleteNodeMutation = {genomeTO.mutationRates.deleteNodeMutation.nodeProbability};
genome->mutationRates.duplicateGeneMutation = {genomeTO.mutationRates.duplicateGeneMutation.geneProbability};
genome->mutationRates.deleteGeneMutation = {genomeTO.mutationRates.deleteGeneMutation.geneProbability};
Expand Down
4 changes: 2 additions & 2 deletions source/EngineKernels/Genome.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ struct AddNodeMutation
float nodeProbability;
};

struct TrimNodeMutation
struct TrimGeneMutation
{
float geneProbability;
};
Expand Down Expand Up @@ -442,7 +442,7 @@ struct MutationRates
VoidMutation voidMutation;
AppendNodeMutation appendNodeMutation;
AddNodeMutation addNodeMutation;
TrimNodeMutation trimNodeMutation;
TrimGeneMutation trimGeneMutation;
DeleteNodeMutation deleteNodeMutation;
CopyNodeSectionMutation copyNodeSectionMutation;
MoveNodeSectionMutation moveNodeSectionMutation;
Expand Down
4 changes: 2 additions & 2 deletions source/EngineKernels/GenomeTO.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ struct AddNodeMutationTO
float nodeProbability;
};

struct TrimNodeMutationTO
struct TrimGeneMutationTO
{
float geneProbability;
};
Expand Down Expand Up @@ -447,7 +447,7 @@ struct MutationRatesTO
VoidMutationTO voidMutation;
AppendNodeMutationTO appendNodeMutation;
AddNodeMutationTO addNodeMutation;
TrimNodeMutationTO trimNodeMutation;
TrimGeneMutationTO trimGeneMutation;
DeleteNodeMutationTO deleteNodeMutation;
CopyNodeSectionMutationTO copyNodeSectionMutation;
MoveNodeSectionMutationTO moveNodeSectionMutation;
Expand Down
18 changes: 9 additions & 9 deletions source/EngineKernels/MutationProcessor.cuh
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ private:
__inline__ __device__ static void applyMutations_void(SimulationData& data, Genome* genome, float& accumulatedMutations);
__inline__ __device__ static void applyMutations_appendNode(SimulationData& data, Genome* genome, float& accumulatedMutations);
__inline__ __device__ static void applyMutations_addNode(SimulationData& data, Genome* genome, float& accumulatedMutations);
__inline__ __device__ static void applyMutations_trimNode(SimulationData& data, Genome* genome, float& accumulatedMutations);
__inline__ __device__ static void applyMutations_trimGene(SimulationData& data, Genome* genome, float& accumulatedMutations);
__inline__ __device__ static void applyMutations_deleteNode(SimulationData& data, Genome* genome, float& accumulatedMutations);
__inline__ __device__ static void applyMutations_duplicateGene(SimulationData& data, Genome* genome, float& accumulatedMutations);
__inline__ __device__ static void applyMutations_deleteGene(SimulationData& data, Genome* genome, float& accumulatedMutations);
Expand Down Expand Up @@ -92,11 +92,11 @@ __inline__ __device__ void MutationProcessor::applyMutations(SimulationData& dat
block.sync();
auto const& nodeRates = genome->mutationRates;
bool anyNodeMutation = nodeRates.appendNodeMutation.geneProbability > 0 || nodeRates.addNodeMutation.nodeProbability > 0
|| nodeRates.trimNodeMutation.geneProbability > 0 || nodeRates.deleteNodeMutation.nodeProbability > 0;
|| nodeRates.trimGeneMutation.geneProbability > 0 || nodeRates.deleteNodeMutation.nodeProbability > 0;
if (anyNodeMutation) {
applyMutations_appendNode(data, genome, accumulatedMutations);
applyMutations_addNode(data, genome, accumulatedMutations);
applyMutations_trimNode(data, genome, accumulatedMutations);
applyMutations_trimGene(data, genome, accumulatedMutations);
applyMutations_deleteNode(data, genome, accumulatedMutations);
block.sync();
correctGenome(data, genome);
Expand Down Expand Up @@ -996,10 +996,10 @@ __inline__ __device__ void MutationProcessor::applyMutations_addNode(SimulationD
}
}

__inline__ __device__ void MutationProcessor::applyMutations_trimNode(SimulationData& data, Genome* genome, float& accumulatedMutations)
__inline__ __device__ void MutationProcessor::applyMutations_trimGene(SimulationData& data, Genome* genome, float& accumulatedMutations)
{
auto laneId = cg_mutation::this_thread_block().thread_rank();
auto const& rate = genome->mutationRates.trimNodeMutation;
auto const& rate = genome->mutationRates.trimGeneMutation;
if (rate.geneProbability <= 0) {
return;
}
Expand Down Expand Up @@ -1699,10 +1699,10 @@ __inline__ __device__ void MutationProcessor::applyMutations_meta(SimulationData
mutateFloat(genome->mutationRates.addNodeMutation.nodeProbability);
}

float trimNodeSigma = cudaSimulationParameters.trimNodeMetaMutationsSigma.value;
if (trimNodeSigma > 0) {
auto mutateFloat = [&](float& val) { val = min(1.0f, max(0.0f, val + generateGaussian(data) * trimNodeSigma)); };
mutateFloat(genome->mutationRates.trimNodeMutation.geneProbability);
float trimGeneSigma = cudaSimulationParameters.trimGeneMetaMutationsSigma.value;
if (trimGeneSigma > 0) {
auto mutateFloat = [&](float& val) { val = min(1.0f, max(0.0f, val + generateGaussian(data) * trimGeneSigma)); };
mutateFloat(genome->mutationRates.trimGeneMutation.geneProbability);
}

float deleteNodeSigma = cudaSimulationParameters.deleteNodeMetaMutationsSigma.value;
Expand Down
2 changes: 1 addition & 1 deletion source/EngineTestData/DescTestDataFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ std::pair<CreatureDesc, GenomeDesc> DescTestDataFactory::createNonDefaultCreatur
.voidMutation(VoidMutationDesc().nodeProbability(0.11f))
.appendNodeMutation(AppendNodeMutationDesc().geneProbability(0.41f))
.addNodeMutation(AddNodeMutationDesc().nodeProbability(0.42f))
.trimNodeMutation(TrimNodeMutationDesc().geneProbability(0.43f))
.trimGeneMutation(TrimGeneMutationDesc().geneProbability(0.43f))
.deleteNodeMutation(DeleteNodeMutationDesc().nodeProbability(0.44f))
.duplicateGeneMutation(DuplicateGeneMutationDesc().geneProbability(0.45f))
.deleteGeneMutation(DeleteGeneMutationDesc().geneProbability(0.46f))
Expand Down
10 changes: 5 additions & 5 deletions source/EngineTests/AccumulatedMutationTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ enum class MutationType
Void,
AppendNode,
AddNode,
TrimNode,
TrimGene,
DeleteNode,
Constructor
};
Expand All @@ -44,7 +44,7 @@ INSTANTIATE_TEST_SUITE_P(
MutationType::Void,
MutationType::AppendNode,
MutationType::AddNode,
MutationType::TrimNode,
MutationType::TrimGene,
MutationType::DeleteNode,
MutationType::Constructor));

Expand Down Expand Up @@ -82,8 +82,8 @@ TEST_P(AccumulatedMutationTests_AllTypes, accumulatedMutations_increases)
// exhaust the genome heap over the 100 passes below. A small probability still accumulates mutations reliably.
genome._mutationRates._addNodeMutation = AddNodeMutationDesc().nodeProbability(0.02f);
break;
case MutationType::TrimNode:
genome._mutationRates._trimNodeMutation = TrimNodeMutationDesc().geneProbability(1.0f);
case MutationType::TrimGene:
genome._mutationRates._trimGeneMutation = TrimGeneMutationDesc().geneProbability(1.0f);
break;
case MutationType::DeleteNode:
genome._mutationRates._deleteNodeMutation = DeleteNodeMutationDesc().nodeProbability(1.0f);
Expand Down Expand Up @@ -124,7 +124,7 @@ TEST_F(AccumulatedMutationTests, accumulatedMutations_metaMutationDoesNotAccount
_parameters.voidMetaMutationsSigma.value = 1.0f;
_parameters.appendNodeMetaMutationsSigma.value = 1.0f;
_parameters.addNodeMetaMutationsSigma.value = 1.0f;
_parameters.trimNodeMetaMutationsSigma.value = 1.0f;
_parameters.trimGeneMetaMutationsSigma.value = 1.0f;
_parameters.deleteNodeMetaMutationsSigma.value = 1.0f;
_parameters.constructorMetaMutationsSigma.value = 1.0f;
_simulationFacade->setSimulationParameters(_parameters);
Expand Down
2 changes: 1 addition & 1 deletion source/EngineTests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ PUBLIC
SimulationControlTests.cpp
StatisticsTests.cpp
Testsuite.cpp
TrimNodeMutationTests.cpp
TrimGeneMutationTests.cpp
VoidMutationTests.cpp
VoidTests.cpp)

Expand Down
20 changes: 10 additions & 10 deletions source/EngineTests/MetaMutationTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -443,14 +443,14 @@ TEST_F(MetaMutationTests, metaMutation_addNodeRatesZeroSigmaNoChange)
EXPECT_EQ(actualGenome._mutationRates._addNodeMutation._nodeProbability, 0.5f);
}

TEST_F(MetaMutationTests, metaMutation_trimNodeRatesActuallyChange)
TEST_F(MetaMutationTests, metaMutation_trimGeneRatesActuallyChange)
{
auto genome = createTestGenome();
genome._mutationRates._trimNodeMutation = TrimNodeMutationDesc().geneProbability(0.5f);
genome._mutationRates._trimGeneMutation = TrimGeneMutationDesc().geneProbability(0.5f);

auto data = Desc().addCreature({ObjectDesc().id(1)}, CreatureDesc(), genome);

_parameters.trimNodeMetaMutationsSigma.value = 1.0f;
_parameters.trimGeneMetaMutationsSigma.value = 1.0f;
_simulationFacade->setSimulationParameters(_parameters);

_simulationFacade->setSimulationData(data);
Expand All @@ -459,19 +459,19 @@ TEST_F(MetaMutationTests, metaMutation_trimNodeRatesActuallyChange)
}

auto actualGenome = getMutatedGenome();
EXPECT_FALSE(approxCompare(actualGenome._mutationRates._trimNodeMutation._geneProbability, 0.5f));
EXPECT_GE(actualGenome._mutationRates._trimNodeMutation._geneProbability, 0.0f);
EXPECT_LE(actualGenome._mutationRates._trimNodeMutation._geneProbability, 1.0f);
EXPECT_FALSE(approxCompare(actualGenome._mutationRates._trimGeneMutation._geneProbability, 0.5f));
EXPECT_GE(actualGenome._mutationRates._trimGeneMutation._geneProbability, 0.0f);
EXPECT_LE(actualGenome._mutationRates._trimGeneMutation._geneProbability, 1.0f);
}

TEST_F(MetaMutationTests, metaMutation_trimNodeRatesZeroSigmaNoChange)
TEST_F(MetaMutationTests, metaMutation_trimGeneRatesZeroSigmaNoChange)
{
auto genome = createTestGenome();
genome._mutationRates._trimNodeMutation = TrimNodeMutationDesc().geneProbability(0.5f);
genome._mutationRates._trimGeneMutation = TrimGeneMutationDesc().geneProbability(0.5f);

auto data = Desc().addCreature({ObjectDesc().id(1)}, CreatureDesc(), genome);

_parameters.trimNodeMetaMutationsSigma.value = 0.0f;
_parameters.trimGeneMetaMutationsSigma.value = 0.0f;
_simulationFacade->setSimulationParameters(_parameters);

_simulationFacade->setSimulationData(data);
Expand All @@ -480,7 +480,7 @@ TEST_F(MetaMutationTests, metaMutation_trimNodeRatesZeroSigmaNoChange)
}

auto actualGenome = getMutatedGenome();
EXPECT_EQ(actualGenome._mutationRates._trimNodeMutation._geneProbability, 0.5f);
EXPECT_EQ(actualGenome._mutationRates._trimGeneMutation._geneProbability, 0.5f);
}

TEST_F(MetaMutationTests, metaMutation_deleteNodeRatesActuallyChange)
Expand Down
Loading
Loading