Recent Releases of LGP
LGP - 5.3
View the full changelog here.
Additions:
- Add logging abstractions. Logging can now be configured using SLF4J to gain deeper introspection into the system.
Breaking Changes:
- Move to multi-module project structure. The main repository now includes the
coreandlibpackages. - The artifacts published to Maven have changed to reflect the new structure:
nz.co.jedsimson.lgp:LGPis nownz.co.jedsimson.lgp:corenz.co.jedsimson.lgp:LGP-libis nownz.co.jedsimson.lgp:lib
Fixes:
- Maven publication POM did not declare dependencies in the 5.2 release. This has been resolved.
Scientific Software - Peer-reviewed
- Kotlin
Published by github-actions[bot] over 4 years ago
LGP - 5.1
View the full changelog here.
Breaking changes:
- The
TournamentSelectionoperator now has an additional (non-optional) propertynumberOfOffspringwhich supersedes the oldnumOffspringConfigurationproperty. EventDispatcherno longer contains methods for registerEventListenerdefinitions. The registration methods have been moved toEventRegistry.
Changes:
- Any components which make use of the experimental co-routine APIs have been marked with the
@ExperimentalCoroutinesApiattribute. - A new
DiagnosticEventhas been exposed which allows introspection into the system. The majority of the built-in components have been updated to dispatchDiagnosticEvents for various actions. For example, to register a listener for trace events:
kotlin
EventRegistry.register(object : EventListener<DiagnosticEvent.Trace> {
override fun handle(event: DiagnosticEvent.Trace) {
// Do something with event
}
})
- Unit tests have been added for the following components (and there are more to come!):
- Tournament selection operator
- Recombination operator
Fixes:
- Address an incorrect typealias definition for
MultipleOutputFitnessFunction(08fa90d) - Refactor
LinearCrossoveroperator and address a bug that caused program length to fall below the configured minimum program length (e46b135)
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 over 6 years ago
LGP -
View the full changelog here.
Breaking changes:
Type definitions
- The majority of the core library has been modified to accept a generic target type parameter, to allow the target of the data set to be strongly-typed through the system. Previously, only the program data type and type of program output was generic. The main benefit of the introduced target type parameter, is to simplify the usage and implementation of fitness functions.
Modules
ModuleContainerhas been moved to thenz.co.jedsimson.lgp.core.modulespackage.- The module resolution functions
instanceandinstanceUnsafeare no longer the responsibility ofModuleContainerand have been relocated to theModuleFactoryclass. The intended usage is thatModuleContainerdefines a set ofModuleBuilders, and theModuleFactorycan be used to resolve instances from a givenModuleContainer.
Environment
- Direct dependency on
Environmenthas been removed from all core implementations and is recommended for any custom implementations. The public contract is now defined inEnvironmentFacadeand this should be the contract relied upon. Environmentcan no longer be directly used to resolve dependencies as theregisteredModuleandregisterModuleUnsafefunctions have been removed. Dependencies should be resolved usingEnvironmentFacade.moduleFactory.
Evolution operators
- The
nz.co.jedsimson.lgp.core.evolutionpackage was restructured significantly. It is now split up as below:
nz.co.jedsimson.lgp.core.evolution.operators
├── mutation
│ ├── macro
│ ├── micro
│ └── strategy
├── recombination
└── selection
- MacroMutationOperator now accepts an optional MutationStrategyFactory which can be used to customise the mutation behaviour.
- MicroMutationOperator now accepts an optional MutationStrategyFactory which can be used to customise the mutation behaviour.
- When no MutationStrategyFactory is given to either MacroMutationOperator or MicroMutationOperator, they will use the default
strategy factory which preserves the previous behaviour of these implementations. The main reason behind this change is internal,
but it can be used externally too.
Program
- The properties
instructions,registers, andoutputRegisterIndicesare now abstract properties ofProgram. - The properties
arityandfunc(now renamed tofunction) are now abstract properties ofOperation.
Registers
- RegisterSet is now an interface and the implementation has been moved to ArrayRegisterSet.
Miscellaneous
- The built-in Kotlin
Randomis now used instead ofjava.util.Random. - Moved
Randomextension functionschoice,randInt,sampleto thenz.co.jedsimson.lgp.core.environmentpackage. - Move
MutableListextension functionsliceinto thenz.co.jedsimson.lgp.core.evolution.operatorspackage. - Moved
ValidandInvalidConfigurationValidityimplementations into the parent class (i.e. no longer accessValid, instead useConfigurationValidity.Valid).
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 over 6 years ago
LGP - 4.2
Breaking changes:
- The
nz.co.jedsimson.lgp.libandnz.co.jedsimson.lgp.examplespackages have been removed and split into their own modules:
If you are relying on these then please reference LGP core as well as the modules you require and change the package names as required. This should be a relatively minor breaking change (as far as breaking changes go).
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 about 7 years ago
LGP -
Changes:
BaseProgramGeneratornow only generates random program instancesEffectiveProgramGeneratorcan be used to generate effective program instances
Fixes:
- The algorithm used for generating effective program instances would previously not always generate effective programs.
Additions:
- Added
RandomRegisterGenerator<T>.getRandomInputAndCalculationRegisters()helper method for getting a given number of input and calculation registers (with a random distribution).
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 about 7 years ago
LGP - 4.0
Breaking changes:
- Rename top-level package from
lgptonz.co.jedsimson.lgpto match Maven deployment.
Enhancements/Additions:
- Facilitate the deployment of the LGP artefact to Maven central.
- RegisterSet performance improvements (
ArrayvsMutableList)
The version has been bumped to 4.0 to reflect these breaking changes.
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 about 7 years ago
LGP - 3.1
Version 3.1 includes some minor changes:
Minor changes:
- Kotlin 1.3.11
- kotlinx-coroutines 1.0.1
- dokka 0.9.17
- Removes IntelliJ project files
Acknowledgements:
- @skalarproduktraum -- updated Kotlin, kotlinx-coroutines, dokka, and tidied up IntelliJ files.
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 about 7 years ago
LGP - 3.0
Version 3.0 has some significant changes, primarily towards the facilitation of handling programs that have different output targets (e.g. single-output, multiple-output, custom).
The full set of changes is as described below:
Breaking changes:
- Most of the core components in the system now require an extra type parameter:
TOutput. This is used to determine what type of output the programs have, enabling programs with single and multiple outputs - Addition of classes/helpers to aid in handling programs with different numbers of outputs
The version has been bumped to 3.0 to reflect these breaking changes.
Enhancements/Additions:
- New
ExclusiveOrbitwise operation - Allow operations to be serialised with a
toStringmethod for easier program translation - New example problem
FullAdderto demonstrate the use of multiple-output programs
Bug fixes:
- Fix an issue where the
Oroperation was incorrectly performing a logical and - Address a logic error in the Island Migration implementation that could cause problems with certain configurations
Acknowledgements:
- @HongyuJerryWang -- contributions to the implementation of multiple program outputs, full adder example, new operations, and bug fixes.
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 over 7 years ago
LGP - 2.0
Version 2.0 brings a few big changes. A summary from the changelog is below:
Breaking changes:
- The
Trainersobject no longer exists - Related to above, the
Trainerimplementations have moved fromlgp.core.evolutiontolgp.core.evolution.training - A new package
lgp.core.programhas been created and quite a few classes fromlgp.core.evolutionwere migrated
The version was bumped to 2.0 to reflect these potentially breaking changes.
Enhancements:
- Added the ability to train asynchronously using the built-in
Trainerimplementations - Update to the Kotlin 1.3 release candidate to make use of the soon to be stable co-routine APIs
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 over 7 years ago
LGP - https://github.com/JedS6391/LGP/releases/tag/1.2.1
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 almost 8 years ago
LGP - Version 1.2
Version 1.2 is here!
A summary of the changes added for version 1.2. is listed below, but for full details feel free to checkout the diff here.
Features:
- Added YAML ConfigLoader implementation
- Add built-in logic for collecting and exporting results (ResultAggregator and ResultOutputProvider).
Bug Fixes:
- Fix deadlock bug due to invalid configuration information.
- Fix issues that could occur when reading CSV data set files using CsvDatasetLoader.
Infrastructure: - Builds are now smarter; automated builds for feature, release and master branch are now performed. - Builds will now fail if there are any compiler warnings, in an attempt to ensure problems are caught early.
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 almost 8 years ago
LGP - Version 1.2 (beta)
This release contains functionality that will be in the next minor version (v1.2). The release will be updated as new features/bug-fixes are added until the 1.2 release is finalised. It is marked as beta as there may be instabilites that need to be fixed.
Features:
- Added YAML ConfigLoader implementation
- Add built-in logic for collecting and exporting results (ResultAggregator and ResultOutputProvider).
Bug Fixes:
- Fix deadlock bug due to invalid configuration information.
- Fix issues that could occur when reading CSV data set files using CsvDatasetLoader.
Infrastructure: - Builds are now smarter; automated builds for feature, release and master branch are now performed. - Builds will now fail if there are any compiler warnings, in an attempt to ensure problems are caught early.
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 almost 8 years ago
LGP - Version 1.1
This release is stable and introduces the changes as given below. The system is ready to be used in a production environment and the API is stable.
Please refer to the usage guide for instructions on using the system. All documentation is targeted for this release.
Change log:
- Update to Kotlin version 1.2.21
- Update to Dokka version 0.9.15
Scientific Software - Peer-reviewed
- Kotlin
Published by JedS6391 about 8 years ago