-
-
Notifications
You must be signed in to change notification settings - Fork 0
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
Adding pipeline applications #9
Draft
fairlight1337
wants to merge
324
commits into
main
Choose a base branch
from
pipeline-applications
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The main compose file was very messy; this change cleans it up mostly.
Now it just needs some actual content/functionality
Protected input/output access with mutexes and ensured program candidate move (instead of copy) where appropriate.
The candidate buffers in the pipeline connection objects were not protected by mutexes. Since they are used in a multithreading context, segmentation faults were possible. This change adds the mutex protection. Also, it changes the previous vector implementation to a deque one since the buffers are used as real FIFO pipes actually. Apart from this, inside the Pipeline class, raw pointers were used for connections in some internal places. This poses a memory leak and access violation risk, so this was changed to use shared pointers as well. Tests were updated accordingly.
The metrics functions allow to report current performance statistics for pipelines and individual pipes (execution count, received inputs, and sent outputs). The reporting functions have been implemented in the Pipeline and PipelineManager classes. Proper reporting to the web frontend is still to be done. Also, the handling of Pipeline class instances was changed from regular stack objects to shared pointers to be better able to handle mutex instances inside them. This also streamlines the overall use of shared pointers in the software stack.
The metrics calculation likely needs an overhaul, but the signal is piped through from Pipeline to frontend. What's wrong at the moment: * ISO 8601 timestamp formulation is off. The time format looks wrong. * Number weighting is wrong. The execution counts and processed candidates are not correct yet and need to be divided by the time elapsed since reporting.
The issue with the time scaling still persists, but the time string formulation is good now.
The correct metrics are now reported through the API from backend to frontend. All numbers are now per second rates for execution count, inputs received, and outputs sent.
The metrics report was inaccurate (values were divided/averaged too many times). This fixes it, the metrics are now reported consistently good.
The frontend now properly displays metrics for all hovered pipes.
Kudos, SonarCloud Quality Gate passed! |
The Maze evaluator does not yet produce candidates. Its evaluation function needs to be refined further. The initial integration of setting perception and food level, and getting moves out, is done though.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pipelines consist of multiple directed evolution steps that select candidate programs based on specific criteria. The goal of a pipeline is to achieve a certain, usually complex, behavior. To reach this behavior, programs need to be tailored to evolve different characteristics and traits until they achieve the intended final behavior.
This change fixes minor issues with the VM execution code to make evolution viable, and introduces
pipelines
example applications.