--- title: 'Opossum' --- ![icon-large](../../_static/images/grasshopper_icon.png) [![icon-large](../../_static/images/food4rhino_icon.png)](https://www.food4rhino.com/en/app/opossum-optimization-solver-surrogate-models) ## Capabilities ```{gallery-grid} :grid-columns: 1 1 1 2 - header: "Optimisation & exploration" content: "" ``` ## Installation Tunny can be installed either via food4rhino or the Rhino Package Manager. ## Getting Started There's no documentation for the Opossum component as its capabilities are quite limited, but on food4rhino you can find some elaboration on the tool as well as links to some tutorial videos. Below we will highlight and elaborate a bit on some of the most important features of the component, and how they can be used in our workflows. ### Opossum Component opossum-component There are two components in the Opossum package: the main Opossum component, and the Performance Explorer. We will only explore the main component here for now. The main Opossum component, as seen on the right, takes design variables and objective(s) as input and performs the optimisation or exploration. **Input:** - **Variables:** Named sliders (or gene pools) that represent the design variables - **Simulator(s):** Cluster(s) that take the design variables as input and computes the objective(s) - **Objective(s):** Named number parameter containers with the objective values Hold Shift while pulling wires to the inputs to be able to add multiple of each. You can also select e.g. all the design variable sliders, then right click the *Variables* and click *Link selected variables* **Output:** - **Results:** An Opossum results object to provide to the Performance Explorer. The direct output of this component is not useful unless you want to use the Performance Explorer. All of the data gathered during the optimisation is instead accessible as a table in the Opossum UI, as elaborated below. ### Opossum UI To use Opposum, you need to access its UI, which you do by double-clicking it. If you have provided at least one variable and at least one objective, it should open with no problem and you should see the window as in the picture below. Here you can choose whether you want to minimise or maximise (all) objective(s), choose the optimisation algorithm, and then run the optimisation. In the *Settings* and *Expert* tabs you can set some additional settings for the optimisation. In the *Results* tab there's a table containing all of the data gathered during the optimisation, so all of the objective values and corresponding design variables. opossum-UI ### Perform (Single-Objective) Optimisation In order to perform an optimisation, simply connect the design variables and the objective(s) as shown in the video below, and then click *Start* to run the optimisation.

opossum-results-table When the optimisation completed or stopped, the input sliders are adjusted to the design variables that corresponds with the most optimal solution as found by Opossum. In the *Results* tab you can see the table on the right with the data of all the solutions that Opossum attempted. Unfortunately, this table is not very user-friendly and doesn't capture the names of the design variables and objectives, and if you want to use this data you have to copy this entire table into an Excel sheet and then do some processing. Because of this, it's better to capture and store all of the data using the [data management tools](../data_management/index.md), and especially the [TT Toolbox](../data_management/tt_toolbox.md), with which you can store data in a .csv or .json, and you can even save 2D pictures and 3D models for every single iteration of the optimisation. All of this can then be used for [data visualisation and design selection](../visualisation_and_selection/index.md). ### Multi-Objective Optimisation/Exploration In order to perform multi-objective optimisation, all you have to do is connect multiple objective(s), as shown below. The added objective completely contradicts the first one, which makes for an interesting optimisation. opossum-multiobjective-example
The optimisation algorithm weighs each objective equally, so it will consider solutions where one is good and the other is bad as a decent solution and vice versa, as well as a bunch of solutions where neither of the objectives are at their own optimum. This is illustrated in the plot below, which shows the pareto front between the two objectives. All of the orange points are considered pareto dominant solutions, and are considered optimal according to the algorithm. multiobjective-optimisation-pareto-front
In a situation like this, there is no clear answer what the optimal solution is, and it is now up to the user to select which solution to use. Multi-objective optimisation can therefore also be referred to as .... CONTINUE HERE!! ALSO CONSIDER IF WE WANT TO MVOE THIS WHOLE EXPLANATION SOMEWHERE ELSE SINCE IT APPLIES TO ALL TOOLS... multiobjective-optimisation-heatmap