Releases: HyperCodec/neat
neat 1.0.1 (hotfix)
just removes some deadcode i forgot about. no migration needed.
What's Changed
- Remove unused
mutation_ratefield fromMutationSettingsby @Copilot in #113
Full Changelog: v1.0.0...v1.0.1
neat 1.0.0
This update involves several rewrites of the virtually the entire crate's internal logic. Here's a list of some (but not all) of the things changed:
NeuralNetworkTopologyandNeuralNetworkmerged into a single type- Lockless atomic cache system for prediction. This fixes a major bug with the old version and greatly increases performance.
- New
genetic-rsversion allows for custom context in reproduction traits, which is used for additional mutation settings and such. serdefeature overhaul, it is now much simpler and completely contained within theNeuralNetworkandActivationRegistryAPIs.- Added tons of unit tests, which helped me go step-by-step and avoid having to deal with all the extremely complicated and annoying bugs all at once.
crossoverandrayonfeatures are now part of the default crate.
Migration Guide
I'm not going to go over the stuff related to the new genetic-rs version, you can see that stuff here. All you really need to know for that migration is that the new NeuralNetwork requires MutationSettings as context for MutateRandomly and ReproductionSettings as context for Mitosis and Crossover.
With that out of the way, all that really changes within fitness testing is using NeuralNetwork directly instead of the topology type:
struct MyAgent {
- topology: NeuralNetworkTopology<A, B>,
+ brain: NeuralNetwork<A, B>,
}
// you can actually just use `NeuralNetwork` as the entire genome
// now, but we're defining it like this for migration's sake.
fn fitness(agent: &MyAgent) -> f32 {
- let mut net = NeuralNetwork::from(&agent.topology);
// ... later in the function
- let output = net.predict(some_input);
+ let output = agent.brain.predict(some_input);
// ... rest of the function
}Additionally, NeuralNetwork is also directly serializable with serde (if you have the feature enabled):
- let net: NeuralNetworkTopology<A, B> = ...;
+ let net: NeuralNetwork<A, B> = ...;
- let json = serde_json::to_string(&NNTSerde::from(&net)).unwrap();
+ let json = serde_json::to_string(&net).unwrap();You may need to make a small change to your Cargo.toml if you used the features:
- neat = { version = "0.5.1", features = ["crossover", "rayon", "serde"] }
+ neat = { version = "1.0.0", features = ["serde"] } And that's all you really need to change for this update.
What's Changed
- Docfixes by @HyperCodec in #47
- write more tests by @HyperCodec in #49
- plotters example by @HyperCodec in #50
- Fix references to renamed account. by @HyperCodec in #55
- Add indicatif progress bars for examples and increase generation count. by @HyperCodec in #57
- Prevent duplicated neuron inputs by @HyperCodec in #62
- create custom activations example by @HyperCodec in #54
- fix custom activation example by @HyperCodec in #66
- fix contributing guide links by @HyperCodec in #77
- temp branch for merging changes from #80 by @HyperCodec in #84
- Secondary Rewrite by @HyperCodec in #104
- Fix predict deadlock and document claim necessity in eval by @Copilot in #107
- Fix dfs falsely rejecting valid connections in diamond DAG topologies by @Copilot in #108
- Fix
random_activation_in_scopepanic and simplify implementation by @Copilot in #109 - Fix ActivationRegistry scope handling and ActivationFn deserialization panic by @Copilot in #110
- Fix remove_cycles_dfs missing cycles due to wrong back-edge parent by @Copilot in #111
- Update 1.0.0 (massive rewrite) by @HyperCodec in #106
New Contributors
- @Copilot made their first contribution in #107
Full Changelog: v0.5.1...v1.0.0
neat 0.5.1 (hotfix)
fixes a bug with the activation registry not properly filtering activation functions
What's Changed
- change cfg macros to remove redundancy by @inflectrix in #40
- update example with new changes by @inflectrix in #43
- Urgent hotfix by @inflectrix in #44
- change version by @inflectrix in #45
- hotfix by @inflectrix in #46
Full Changelog: v0.5.0...v0.5.1
neat 0.5.0
Improvements to documentation, bugfixes, and a new activation fn registry system that allows them to be serialized and scoped.
What's Changed
- improve README and examples by @inflectrix in #28
- bump genetic-rs from 0.4.0 to 0.5.1 by @inflectrix in #31
- Update activation fn branch by @inflectrix in #33
- Add activation fn registry system by @inflectrix in #34
- update version number by @inflectrix in #36
- NEAT 0.5.0 by @inflectrix in #35
Full Changelog: v0.4.0...v0.5.0
neat 0.4.0
neat 0.3.0
adds crossover reproduction feature
What's Changed
- Update crossover branch with new changes by @inflectrix in #19
- Implement crossover reproduction by @inflectrix in #20
- NEAT 0.3.0 by @inflectrix in #21
Full Changelog: v0.2.1...v0.3.0
neat 0.2.1 (hotfix)
neat 0.2.0
bugfixes and new features.
What's Changed
- Genetic-rs update by @inflectrix in #11
- add missing mutations by @inflectrix in #13
- implement serde feture by @inflectrix in #14
- add feature docs by @inflectrix in #15
- NEAT 0.2.0 by @inflectrix in #3
New Contributors
- @inflectrix made their first contribution in #11
Full Changelog: v0.1.0...v0.2.0
neat 0.1.0
Initial release of the crate.
Full Changelog: https://github.com/inflectrix/neat/commits/v0.1.0