Optimization searches for the best solution x* to a problem and can be defined as
x* = argmin (f(x))
where f is the function to be optimized (the objective function) and x are the design variables for which optimal settings have to be found.
This definition can be extended to multiple objectives f and by constraints.
Some Important Expressions
Manual vs. Automated Optimization
Optimization is an everyday task. For example, searching the fastest way to work or home is an optimization problem. We speak about automated optimization, if a computer algorithm solves the problem in an automated fashion, i.e. without user interaction.
Optimization typically searches for the optimal solution to a problem. For automated optimization, the problem must be encoded in a mathematical function f, which has to be either minimized or maximized. In OpenDino, only minimization is considered as maximization can be expressed as:
max(f) = - min(-f)
The optimal solution is searched by modifying the design variables x. The objective function depends on the design variables: f = f(x).
If multiple objectives f should be optimized, then a multi-objective optimization problem has to be solved. Some optimization algorithms search concurrently for multiple compromise solutions for the objectives (Pareto optimization) or a single compromise solution, defined as a weighed sum of all objectives.
While the optimization algorithm tries to minimize all objectives, constraints simply have to be fulfilled.
For example, the maximal stress in a truss should not exceed a certain limit. If the stress is below the limit, no advantage is gained. If the stress is above the limit, the solution is typically constrained by a penalty value, which increases with increasing constraint violation.
Direct vs. Indirect Search
In OpenDino, we implement optimization algorithms that search a problem in an iterative fashion, i.e. by computing several different solutions to the problem. The best solution is returned. This iterative search can be either direct or indirect:
Direct search uses only direct information (i.e. the objective and constraint value(s). Indirect algorithms use indirect information (i.e. gradient and/or higher order derivative information of the objective(s) and constraint(s)).
Stochastic vs. Deterministic Algorithms
While stochastic algorithms such as Evolutionary Algorithms and Particle Swarm use random values in their search method, deterministic algorithms like the Simplex Method or gradient based search do not.