If every tool, when ordered, or even of its own accord, could do the work that befits it, just as the creations of Daedalus moved of themselves, or the tripods of Hephaestus went of their own accord to their sacred work, if the shuttle would weave and the plectrum touch the lyre without a hand to guide them, master-craftsmen would have no need of assistants and masters no need of slaves ~ Aristotle, Politics 1253b
`auto-opti` provides features for all kind of optimization: whatever the technology is: Discrete event simulation, scheduling, linear programming etc.
A model is a simplification of the system that is learning something useful from it, the model formalizes the system through its states and discrete events.
The system is the part of the real life that the optimization is dealing with.
The features of those libraries are:
Random variable cf. def
- Pseudo-random number generator
- Main distributions
- normal distribution
- discrete uniform distribution
- Poisson binomial distribution
- noncentral chi-squared distribution
- Interface for time in optimization
- Implementation as Clojure date - See javatime
- Implementation as integer, one date is a bucket number
- Implementation as variable bucket management [different bucket size]
- Scenario portfolio
- Scenario persistence
- Randomized setup - when some parameters of the optimization are random variable
- Multiple seed execution
- Being able to compare solutions
- It implements what we typically call Key Performance Indicators.
- Simple mono-objective comparison
- Multi-objective comparison [Pareto front]
- get data at a given time whatever the implementation
Constant piecewise cf. def
- between two values: the constant piecewise is returning the value of the previous event where a constant has been set
- summing two variables: consists in two constant piecewise that are summed
- typical usage:
- stock level: a stock level is set at one point in time, and is constant and still valid for all later on moments, until next stock level information
- the value is valid at a specific point
- between two values: 0 is returned
- summing two variables: is the union of the two sets of date/value data.
- typical usage:
- production: a production is set at one point in time, every next event does not exist
- the value is somewhere in an interval
- between two values: the value is somewhere in between
- summing two variables: each interval intersection has a part of the value [proportional to its size], and the sum of the two intervals are stored
- typical usage:
- Demand: when a demand is set in a month, we don’t really know what day it is, all zoom in should spread the value in the interval so the final total is the same
License information can be found in [LICENSE file][LICENSE.md] Copyright © 2020-2024 Anthony Caumond, Mateusz Mazurczak
- This project should be agnostic of any environment, so it should run on the following examples of technology: CLI, backend of web app, frontend of web app, Android frontend, Android backend, …
- Create cljc versions of features which are not naturally behaving the same between clj and cljs: uuids,
- Data strucutre helpers : regular expression, strings, keywords, maps, sequences, uuids
- Logging in clj and cljs with a proxy from cljc
- Configuration management
- Translation
See license information in Attribution-NonCommercial 4.0 International
Copyright © 2020-2024 Hephaistox
