[prev in list] [next in list] [prev in thread] [next in thread]
List: jakarta-commons-dev
Subject: [jira] [Updated] (MATH-1618) Change in Existing Design
From: "AVIJIT BASAK (Jira)" <jira () apache ! org>
Date: 2021-08-31 15:27:00
Message-ID: JIRA.13392905.1627796850000.953118.1630423620820 () Atlassian ! JIRA
[Download RAW message or body]
[ https://issues.apache.org/jira/browse/MATH-1618?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel \
]
AVIJIT BASAK updated MATH-1618:
-------------------------------
Description:
*1) Creation of abstraction for GeneticAlgorithm*: In order to have different types \
of implementation for Genetic Algorithm like adaptive GA along with the existing one, \
we need to introduce an abstraction and a hierarchy of algorithm. \
AbstracttGeneticAlgorithm class needs to be implemented which would be extended by \
all other Algorithm class. This would also ease any future extension.
Removed Components: None
New Components: AbstractGeneticAlgorithm
Affected Components: GeneticAlgorithm
*2) Delegation of fitness calculation*: As per the current design Fitness interface \
is implemented by chromosome class, which forces implementation of fitness() method \
for any concrete chromosome. However this restricts the use of same concrete \
chromosome implementation to be reused for different problem domain. This inheritance \
based implementation should be replaced by composition. A new interface \
FitnessCalculator would be introduced. An instance of FitnessCalculator will be \
provided during creation of every concrete chromosome. This will enable reuse of \
concrete chromosome classes in different problem domain and hence improve \
extensibility and re-usability. This will require addition of an argument for each \
factory method and constructors.
Removed Components: Fitness
New Components: FitnessCalculator
Affected Components: Chromosome, AbstractListChromosome, BinaryChromosome, \
RandomKey
*3) Enable finer control for mutation and crossover probability*: Current design uses \
the crossover and mutation probability at the chromosome level. For finer control of \
mutation and crossover process the probability would be managed within MutationPolicy \
and CrossoverPolicy implementations. Probability would be passed as an argument to \
the respective operations. This way the corresponding operations will be responsible \
for managing probability and apply in convenient way. I have seen the controlling the \
mutation probability at the allele(gene) level improves the exploring capability of \
the optimization process and hence improves robustness.
Removed Components: None
New Components: None
Affected Components: MutationPolicy, CrossoverPolicy and all other implementation \
classes
*4) Addition of new Simulation Stopping conditions*: New simulation stopping \
conditions would be added based on population statistical characteristics. The \
simulation can be stopped based on variations of population average fitness or best \
fitness. These parameters are much better to represent nature of convergence. This \
will improve robustness to a considerable extent.
Removed Components: None
New Components: UnchangedAvgFitness, UnchangedBestFitness, \
PopulationStatisticalSummary
Affected Components: SimulationStoppingCondition, GeneticAlgorithm, FixedElapsedTime, \
FixedGenerationCount
*5) Introduction of Convergence listeners*: New convergence listener interface and \
registry would be introduced to enable tracking of convergence.
Removed components: None
New Components: ConvergenceListener, ListenerRegistry
Affected Components: AbstractGeneticAlgorithm, GeneticAlgorithm
*6) Restructuring Elitism*: Elitism can be handled by the hierarchy of Algorithm \
classes. Use of a separate ElitisticListPopulation class may not be necessary. The \
method nextGeneration() in Population would accept the elitism rate as an argument. \
Any concrete instance of Population would provide the necessary implementation.
Removed components: ElitisticListPopulation
New Component: None
Affected Components: AbstractGeneticAlgorithm, GeneticAlgorithm, Population, \
ListPopulation
was:
*1) Creation of abstraction for GeneticAlgorithm*: In order to have different types \
of implementation for Genetic Algorithm like adaptive GA along with the existing one, \
we need to introduce an abstraction and a hierarchy of algorithm. \
AbstracttGeneticAlgorithm class needs to be implemented which would be extended by \
all other Algorithm class. This would also ease any future extension.
Removed Components: None
New Components: AbstractGeneticAlgorithm
Affected Components: GeneticAlgorithm
*2) Delegation of fitness calculation*: As per the current design Fitness interface \
is implemented by chromosome class, which forces implementation of fitness() method \
for any concrete chromosome. However this restricts the use of same concrete \
chromosome implementation to be reused for different problem domain. This inheritance \
based implementation should be replaced by composition. A new interface \
FitnessCalculator would be introduced. An instance of FitnessCalculator will be \
provided during creation of every concrete chromosome. This will enable reuse of \
concrete chromosome classes in different problem domain and hence improve \
extensibility and re-usability. This will require addition of an argument for each \
factory method and constructors.
Removed Components: Fitness
New Components: FitnessCalculator
Affected Components: Chromosome, AbstractListChromosome, BinaryChromosome, \
RandomKey
*3) Enable finer control for mutation and crossover probability*: Current design uses \
the crossover and mutation probability at the chromosome level. For finer control of \
mutation and crossover process the probability would be managed within MutationPolicy \
and CrossoverPolicy implementations. Probability would be passed as an argument to \
the respective operations. This way the corresponding operations will be responsible \
for managing probability and apply in convenient way. I have seen the controlling the \
mutation probability at the allele(gene) level improves the exploring capability of \
the optimization process and hence improves robustness.
Removed Components: None
New Components: None
Affected Components: MutationPolicy, CrossoverPolicy and all other implementation \
classes
*4) Addition of new Simulation Stopping conditions*: New simulation stopping \
conditions would be added based on population statistical characteristics. The \
simulation can be stopped based on variations of population average fitness or best \
fitness. These parameters are much better to represent nature of convergence. This \
will improve robustness to a considerable extent.
Removed Components: None
New Components: UnchangedAvgFitness, UnchangedBestFitness, \
PopulationStatisticalSummary
Affected Components: SimulationStoppingCondition, GeneticAlgorithm, FixedElapsedTime, \
FixedGenerationCount
*5) Introduction of Convergence listeners*: New convergence listener interface and \
registry would be introduced to enable tracking of convergence.
Removed components: None
New Components: ConvergenceListener, ListenerRegistry
Affected Components: AbstractGeneticAlgorithm, GeneticAlgorithm
> Change in Existing Design
> -------------------------
>
> Key: MATH-1618
> URL: https://issues.apache.org/jira/browse/MATH-1618
> Project: Commons Math
> Issue Type: Sub-task
> Affects Versions: 3.6.1
> Reporter: AVIJIT BASAK
> Priority: Major
>
> *1) Creation of abstraction for GeneticAlgorithm*: In order to have different types \
> of implementation for Genetic Algorithm like adaptive GA along with the existing \
> one, we need to introduce an abstraction and a hierarchy of algorithm. \
> AbstracttGeneticAlgorithm class needs to be implemented which would be extended by \
> all other Algorithm class. This would also ease any future extension. Removed \
> Components: None New Components: AbstractGeneticAlgorithm
> Affected Components: GeneticAlgorithm
> *2) Delegation of fitness calculation*: As per the current design Fitness interface \
> is implemented by chromosome class, which forces implementation of fitness() method \
> for any concrete chromosome. However this restricts the use of same concrete \
> chromosome implementation to be reused for different problem domain. This \
> inheritance based implementation should be replaced by composition. A new interface \
> FitnessCalculator would be introduced. An instance of FitnessCalculator will be \
> provided during creation of every concrete chromosome. This will enable reuse of \
> concrete chromosome classes in different problem domain and hence improve \
> extensibility and re-usability. This will require addition of an argument for each \
> factory method and constructors. Removed Components: Fitness
> New Components: FitnessCalculator
> Affected Components: Chromosome, AbstractListChromosome, BinaryChromosome, \
> RandomKey
> *3) Enable finer control for mutation and crossover probability*: Current design \
> uses the crossover and mutation probability at the chromosome level. For finer \
> control of mutation and crossover process the probability would be managed within \
> MutationPolicy and CrossoverPolicy implementations. Probability would be passed as \
> an argument to the respective operations. This way the corresponding operations \
> will be responsible for managing probability and apply in convenient way. I have \
> seen the controlling the mutation probability at the allele(gene) level improves \
> the exploring capability of the optimization process and hence improves robustness. \
> Removed Components: None New Components: None
> Affected Components: MutationPolicy, CrossoverPolicy and all other implementation \
> classes
> *4) Addition of new Simulation Stopping conditions*: New simulation stopping \
> conditions would be added based on population statistical characteristics. The \
> simulation can be stopped based on variations of population average fitness or best \
> fitness. These parameters are much better to represent nature of convergence. This \
> will improve robustness to a considerable extent. Removed Components: None
> New Components: UnchangedAvgFitness, UnchangedBestFitness, \
> PopulationStatisticalSummary Affected Components: SimulationStoppingCondition, \
> GeneticAlgorithm, FixedElapsedTime, FixedGenerationCount
> *5) Introduction of Convergence listeners*: New convergence listener interface and \
> registry would be introduced to enable tracking of convergence. Removed components: \
> None New Components: ConvergenceListener, ListenerRegistry
> Affected Components: AbstractGeneticAlgorithm, GeneticAlgorithm
> *6) Restructuring Elitism*: Elitism can be handled by the hierarchy of Algorithm \
> classes. Use of a separate ElitisticListPopulation class may not be necessary. The \
> method nextGeneration() in Population would accept the elitism rate as an argument. \
> Any concrete instance of Population would provide the necessary implementation. \
> Removed components: ElitisticListPopulation New Component: None
> Affected Components: AbstractGeneticAlgorithm, GeneticAlgorithm, Population, \
> ListPopulation
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic