Optimiser
This tutorial provides a quick tour of the generation of the Optimiser
object in compas_tno.optimisers
.
The Optimiser
object stores in the settings the main information about the optimisation. The chart below illustrate the information that can be passed to the Optimiser.
The different categories of data passed to the optimiser are presented below.
Variables
The sets of variables available are described in the table below. They are should be passed to optimiser.settings['variables']
as a list of stings.
Name |
Variable |
---|---|
|
Force Densities |
|
Height of supports |
|
Horizontal position of supports |
|
Thickness (see min_thk optimisation) |
|
Horizontal Muliplier |
|
Additional thickness upper-bound |
|
Additional thickness lower-bound |
Objectives
The objeective functions available are described in the table below. They are should be passed to optimiser.settings['objective']
as a string.
Name |
Objective |
---|---|
|
Minimise Horizontal Thrust |
|
Maximise Horizontal Thrust |
|
Minimise structural Thickness |
|
Minimise Loadpath |
|
Minimise vertical distance to target (bestfit) |
|
Constant objective function to test feasibility |
|
Maximise Horizontal Multiplier |
|
Maximise offset from intra/extrados (equivalent to min_thk) |
|
Minimise complementary energy (linear) |
|
Minimise complementary energy (quadratic) |
|
Minimise the increase in the structural section |
Constraints
The constraints available are described in the table below. They are should be passed to optimiser.settings['constraints']
as a list of stings.
Name |
Constraint |
---|---|
|
All members subjected to compressive forces |
|
Height of the vertices within vertical envelope |
|
Horizontal movement of vertices within horizontal bounds (non-fixed diagram) |
|
Bounds on the direction and magnitude of the reaction forces (see dome example) |
Features
The features available are described in the table below. They are should be passed to optimiser.settings['features']
as a list of stings.
Name |
Feature |
---|---|
|
Fix diagram in plan (limit ‘q’ variables to the independent edges) |
|
Activate symmetry in the diagram (‘axis_sym’ can be passed) |
|
Deals with the update on the vertical envelope as nodes move horizontally |
Solver Selection
The solver name and library should be passed as optimiser.settings['solver']
.
Solvers |
Description |
---|---|
|
Nonlinear solver SLSQP from library SciPy is used |
|
Nonlinear solver IPOPT is used |
|
One of multiple nonlinear solvers available in PyOpt is used, (e.g., SLSQP, Diff. Evolutional, etc) |
|
Method of moving assymptotes (MMA) is used |
Starting Point
The starting point should be passed as optimiser.settings['starting_point']
and will execute a preconditioning optimisation before the NLOpt.
Starting Point |
Description |
---|---|
|
Use the loadpath (for fixed diagram) as starting point (default) |
|
Relax the diagram using the current force densities (FDM) |
|
Relax the diagram increasing the force densities in the boundary members (FDM) |
|
Compute the horizontal graphical equilibrium and returns the thrust network |
|
Use the current state (force densities and geometry) to initiate the optimisation |