Application of Pareto Front to Multi-Objective Genetic Optimization
Getting Started
- Install
poetry
- Add
poetry
to your path
- Checkout repo
git clone https://github.com/HjaltiThrastarson/Application-of-Pareto-Front-to-Multi-Objective-Genetic-Optimization ofme
cd ofme
- Create venv from lockfile and enter shell
poetry config virtualenvs.in-project true
poetry install
- If you now open the folder in Visual Studio Code it should tell you that no Python Interpreter has been selected and prompt you to choose one. The recommended one should be
.venv
which is the just installed poetry environment. If not use Ctrl+Shift+P
and change Python: Select Interpreter
to the .venv
in the current directory.
- Some poetry commands
- Add new packages/dependencies
poetry add <pkgname>
- Enter the python venv
poetry shell
- Update all packages
poetry update
- Running Tests
poetry run pytest --cov --black
IDEAS
- Implement micro genetic algorithm
- Use Chankong and Haimes test func for evaluation
- The range is [-20, 20], idea is to map small ranges in that range to binary numbers, for example with 1 bit we would have 0 as -20 and 1 as 20
- Shift gray codes and restart to circumvent hamming wall. See Procedures & Encoding
- Sort by fitness, if lower than threshold search area.
First implement a mGA
![mga](https://github.com/HjaltiThrastarson/Application-of-Pareto-Front-to-Multi-Objective-Genetic-Optimization/raw/main/img/mga.png)
Notes on [3]
- "Multiobjective optimization constraints are often handled by penalties that increase the objective function values in propoertion to the constraint violation."
- Two approaches:
- A priori: Define weights before execution on functions to obtain utility function. Result it a point
- A posteriori: Define partial ordering on objective functions, usually Pareto order. Result is minimal set fulfilling the order (e.g. Pareto front)
- Pareto dominance: y1 pareto dominates y2 if the first vector is not wores in each of the objectives and better in at least one objective than the second vector.
- The solution of a Linear Scalarization Problem is on the Pareto front, no matter which weigths are chosen.
Documentation
Write down any decisions you make, any problems you face and any interesting insights you come across.
- Decided for Python as programming language (due to versatility)
- Write from scratch for better learning
- Compare/Benchmark our solution with existing implementations
- First get minimum example working inkl. visualization:
- mGA from lecture
- Changkong/Haimes test function
Literature
- Multi-Objective Optimization (Wiki)
- Pareto-Efficiency (Wiki)
- A tutorial on multiobjective optimization: fundamentals and evolutionary methods
- Multi-objective Optimisation Using Evolutionary Algorithms: An Introduction
- Adaptive weighted sum method for multiobjective optimization: a new method for Pareto front generation
- The weighted sum method for multi-objective optimization: new insights
Frameworks/Libraries/Resources