-
Notifications
You must be signed in to change notification settings - Fork 247
Multi objective optimization
Multi-objective or multi-criteria optimization takes place when more than one objective function is characterized in the optimization problem. In general, these objectives are conflicting, requiring to find a compromise between the possible solutions.
A first approach would be combining the different objective functions in a weighted sum:
The choice of the weights wi determine the importance of each objective function fi and determines the optimal solution. The constant C is introduced to shift the compromise function, but does not affect the optimal solution.
A second option is choosing one of the objective functions as the main one and rewrite the rest as constrains. Limits can be introduced in those constraints to ensure that the obtained values lie on a certain range.
Pareto's optimization strategy follows a systematic approach to find the compromise solution. A solution is considered Pareto optimal if, for any modification of the design variables, at least one of the objectives functions becomes worse. The so-called Pareto front groups all the points that are considered Pareto optimal for a given multi-objective problem.
The construction of the Pareto front is usually challenging and computationally expensive, as it requires the evaluation of many problem configurations. Then, those cases that are not dominated by any other are chosen as the Pareto front. It is said that a case is dominated if there exist another configuration that provides a gain in some objective functions and none of the others lose. Finally, a compromise point is chosen among those in the Pareto front.
To choose the compromise point, the ideal optimum made up of the individual optimums of the objective function is taken as reference. The quality of a solution fi(x) can be defined by its normalized distance di from the individual optimum fi*(x):
The best compromise can be defined by the minimum of the largest deviation (min-max optimum) or by the minimum distance from the ideal optimum (Euclidean norm optimum).
Multi-objective optimization is not directly implemented in Kratos. Nevertheless, the simulations results obtained in Kratos can be used in combination with the previous techniques.
- Getting Kratos (Last compiled Release)
- Compiling Kratos
- Running an example from GiD
- Kratos input files and I/O
- Data management
- Solving strategies
- Manipulating solution values
- Multiphysics
- Video tutorials
- Style Guide
- Authorship of Kratos files
- Configure .gitignore
- How to configure clang-format
- How to use smart pointer in Kratos
- How to define adjoint elements and response functions
- Visibility and Exposure
- Namespaces and Static Classes
Kratos structure
Conventions
Solvers
Debugging, profiling and testing
- Compiling Kratos in debug mode
- Debugging Kratos using GDB
- Cross-debugging Kratos under Windows
- Debugging Kratos C++ under Windows
- Checking memory usage with Valgind
- Profiling Kratos with MAQAO
- Creating unitary tests
- Using ThreadSanitizer to detect OMP data race bugs
- Debugging Memory with ASAN
HOW TOs
- How to create applications
- Python Tutorials
- Kratos For Dummies (I)
- List of classes and variables accessible via python
- How to use Logger
- How to Create a New Application using cmake
- How to write a JSON configuration file
- How to Access DataBase
- How to use quaternions in Kratos
- How to do Mapping between nonmatching meshes
- How to use Clang-Tidy to automatically correct code
- How to use the Constitutive Law class
- How to use Serialization
- How to use GlobalPointerCommunicator
- How to use PointerMapCommunicator
- How to use the Geometry
- How to use processes for BCs
- How to use Parallel Utilities in futureproofing the code
- Porting to Pybind11 (LEGACY CODE)
- Porting to AMatrix
- How to use Cotire
- Applications: Python-modules
- How to run multiple cases using PyCOMPSs
- How to apply a function to a list of variables
- How to use Kratos Native sparse linear algebra
Utilities
Kratos API
Kratos Structural Mechanics API