Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cartesian Genetic Programming extension #77

Open
wants to merge 23 commits into
base: master
Choose a base branch
from

Conversation

ImpactHorizon
Copy link

  1. New genome type including operators for cartesian genetic programming with tests and usage example.
  2. Network data exchange in Migration modification for large genomes (like CGP ones).
  3. Added multithreading for fitness calculation which outperformes multiprocessing for large set of images as targets to compare.
  4. New type of error accumulator dedicated for vector processing (images or other signals).

ImpactHorizon added 23 commits June 30, 2016 19:18
Added genome type and initializator for it with tests.
Added 4 mutators (input, parameters, function and order of nodes in
active path) for cartesian genetic programming and new methods for CGP
genome to handle new mutators.
Added tests for new genome functions, whitespaces fixed and default
crossover for CGP,
Added mutators and crossover tests, few bugs in mutators and cartesian
genome fixed.
Added new methods for CGP genome (for getting expression, compiled code
of expression and writing expression to pydot graph), reverted
orientation of the net (now is more intuitive), few bugs fixed and new
tests added.
Performance issue modification + tests. Now evaluating CGP genome only
if mutations changed expression structure, the bigger the net is the
more profit we get from this change. It is also noticeable for slow
fitness function.
New object in utils for better array-like error calculation. Based on
ErrorAccumulator, basic tests included.
Added possibility of using multithreading in evaluation of individuals
from population. Multithreading is memory cheaper and faster in
initialization than multiprocessing. Unit tests included.
Changed sending-receiving const chunk size schema. Now first 4 bytes of
message is size of the data and sending-receiving is looped until all
bytes from data are sent. This change allows to send bigger genomes (CGP
genomes can have much bigger size) also after individual migration their
score is reevaluated (every island can have different fitness function).
Added tests for sending-receiving changes.
Added missing GA's method for setting multithreading, which calls
internal population method for MT.
Two bug fixes:
1. Missing multiThreading value assignment in GPopulation copy method.
2. Changed target for thread creation (it was called during creation!)
Changed dictionary keying from node object to node position (position is
stable, objects not). Added missing expressionNodes copying in genome
copy method.
Updating tests after changing expressionNodes keying in CGP genome.
Changed port value in tests for non-admin system users.
Added out nodes to expressionNodes in CGP genome so the reevaluating
schema is now correct.
Now numpy import error is notified via logging module.
Added CGP example file. Finding image filter schema to obtain target
data from input data. Using params in nodes, multithreading and
VectorErrorAccumulator for better presentation of working with signals
idea.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant