fast-cma-es
Taskflow
fast-cma-es | Taskflow | |
---|---|---|
12 | 24 | |
106 | 9,608 | |
- | 1.6% | |
7.2 | 7.9 | |
6 months ago | 12 days ago | |
Python | C++ | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
fast-cma-es
-
Optimization problem with complex constrain
essentially the accumulated value of the portfolio after 50 years not clear to me how this can be linear - looks quite "exponential" without knowing the details. Can you exploit the "has to be greater than 0" condition to simplify the constraint into a linear one? "because at each time step there will be a decision" probably means the answer is "no". But don't overestimate the complexity of nonlinear optimizaiton (see for instance https://github.com/dietmarwo/fast-cma-es/blob/master/tutorials/CryptoTrading.adoc ), most of the complexity is hidden in the algorithm itself not visible for the user.
-
what methods can be used to solve a TP-BVP with variable control?
What about combining a fast numerical integrator like https://github.com/esa/torchquad or https://github.com/AnyarInc/Ascent with a fast parallel CMA-ES implementation like https://github.com/dietmarwo/fast-cma-es/blob/master/fcmaes/cmaescpp.py ? A numerical integrator allows you to implement variable control and a fast non-derivative optimizer can solve any related optimization problem.
-
Quality Diversity Optimization for Expensive Simulations
A new tutorial how to apply QD-optimization to expensive simulations: https://github.com/dietmarwo/fast-cma-es/blob/master/tutorials/Diversity.adoc .
-
New Fast Python CVT MAP-Elites + CMA-ES implementation
There is a new implementation of Python CVT MAP-Elites + CMA-ES available. It is presented at https://github.com/dietmarwo/fast-cma-es/blob/master/tutorials/MapElites.adoc applying it to ESAs very hard Cassini2 space mission planning optimization benchmark.
-
Performance of Evolutionary Algorithms for Machine Learning
I tried to answer these questions in EvoJax.adoc
-
Optimization for Quantum Computer Simulations
Here https://github.com/dietmarwo/fast-cma-es/blob/master/tutorials/Quant.adoc is a new tutorial how to apply optimization in the context of simulated quantum algorithms. It is based on https://qiskit.org/textbook/ch-applications/vqe-molecules.html#Example-with-a-Single-Qubit-Variational-Form but provides more reliable methods utilizing parallelism. This makes not much sense (yet) when the backend is a real quantum computer, but most simulators scale bad when using multi-threading or an GPU. So it is better to switch parallelism off for the simulation and utilize the better scaling parallel optmization provides, specially if a modern many-core CPU is available.
-
Transaction and Payment Optimization Problem
https://github.com/dietmarwo/fast-cma-es/blob/master/examples/subset.py implements the problem using parallel continuous optimization collecting different optimal solutions. Not much faster than GLPK_MI, but utilizing modern many-core CPUs when you are looking for a list of alternative solutions. Increase the number of retrys when you want more solutions.
-
A new fast local search heuristic for a location problem
Do you mind if I apply the generic optimization approach shown here: https://github.com/dietmarwo/fast-cma-es/blob/master/tutorials/OneForAll.adoc to this problem to compare results? I see you collected a huge number of benchmark instances. Are there solutions proven to be optimal availabe for these?
- New generic method to solve MMKP and VRPTW
-
29 Python real world optimization tutorials
using Python you may get some inspiration here: https://github.com/dietmarwo/fast-cma-es/blob/master/tutorials/Tutorials.adoc
Taskflow
-
Improvements of Clojure in his time
For parallel programming nowadays, personally I reach for C++ Taskflow when I really care about performance, or a mix of core.async and running multiple load balanced instances when I’m doing more traditional web backend stuff in Clojure.
- Taskflow: A General-Purpose Parallel and Heterogeneous Task Programming System
-
How to go from intermediate to advance in C++?
Also, you can take a look to good libraries. The problem is that very often libraries are heavily templated, so It could be hard. For example, I like the style of the Taskflow library, I think is very clear, is relatively small, while makes use of more advanced techniques: https://github.com/taskflow/taskflow
-
gcl v1.1 released - Graph Concurrent Library for C++
Cool. Thanks! How does it compare to taskflow?
-
std::execution from the metal up - Paul Bendixen - Meeting C++ 2022
I've not seen yet, but it's been a bit since I looked last, any evidence of being able to build a computation graph and "save" it to re-run on new inputs. Something like https://github.com/taskflow/taskflow
-
Proper abstraction for this?
It seems you're describing something a generic parallel task framework. Check taskflow for a production ready example https://github.com/taskflow/taskflow/blob/master/
-
That one technology, question, or skill you never learned, and now you are haunted by during every new job conversation...
- https://github.com/taskflow/taskflow (I recommend to learn it first since its API and documentation are excellent)
-
Parallel Computations in C++: Where Do I Begin?
If you want some sort of "job" system, where you submit items to a some sort of queue to be processed in parallel, try searching for a thread pool - there isn't one in the standard library, but there's about a million implementations online. There are more complicated versions of that idea, that describe computation as a directed acyclic graph, such as taskflow.
-
High level overview of my custom game engine
The tooling decisions affect engine design though. For example if you want to have visual representation of job graph as it happened in specific frame of interest you need to pass the information around about job relationships and output it to a tool of choice. For example see https://github.com/taskflow/taskflow
-
Is there any good reason not to build an open-source C++ project on Intels oneTBB?
I am aware of DAGs of task based threading library like Taskflow and HPX however the benefit they have is not obvious to me, as the following sequential section depends on the parallel part being completed fully. If you want to suggest elaboration on the benefits of this approach would be welcome.
What are some alternatives?
optiseek - An open source collection of single-objective optimization algorithms for multi-dimensional functions.
tbb - oneAPI Threading Building Blocks (oneTBB) [Moved to: https://github.com/oneapi-src/oneTBB]
scikit-opt - Genetic Algorithm, Particle Swarm Optimization, Simulated Annealing, Ant Colony Optimization Algorithm,Immune Algorithm, Artificial Fish Swarm Algorithm, Differential Evolution and TSP(Traveling salesman)
tensorflow - An Open Source Machine Learning Framework for Everyone
ExpensiveOptimBenchmark - Benchmarking Surrogate-based Optimisation Algorithms on Expensive Black-box Functions
HPX - The C++ Standard Library for Parallelism and Concurrency
Multi-UAV-Task-Assignment-Benchmark - A Benchmark for Multi-UAV Task Allocation of an Extended Team Orienteering Problem
C++ Actor Framework - An Open Source Implementation of the Actor Model in C++
LightGBM - A fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.
entt - Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more
pycma - Python implementation of CMA-ES
libunifex - Unified Executors