Opossum
Opossum is an optimization plug-in for Grasshopper (for Rhino) that implements model-based and evolutionary optimization algorithms for single- and multi-objective problems. The plugin integrates GUI components into Grasshopper to configure runs, visualize results, and persist optimizer state inside Grasshopper documents.
This repository contains a .NET/Grasshopper plugin project targeting .NET Framework 4.8.
Highlights
Model-based single-objective optimization (RBFOpt)
Evolutionary single-objective optimizer (CMA-ES)
Multi-objective RBFMOpt optimizer
Multiple multi-objective algorithms via pygmo
Interactive Grasshopper window and result serialization
Notable folders and classes
Opossum2_0_Proto_A/ — main plugin project. Contains component classes, UI windows, serialization utilities, and resources.
OptComponent.cs — main Grasshopper component implementation: UI hooks, serialization/deserialization, and component registration.
Resources/ — embedded icons, images, and other resource files used by the plugin.
Solver/ — optimization solver interface and implementations (RBFOpt, pygmo, etc.).
Requirements and dependencies
Development / build
Microsoft Visual Studio (2017, 2019, or 2022) with .NET Framework 4.8 targeting pack installed.
The Grasshopper and Rhino SDK (or runtime assemblies) to resolve references to Grasshopper.dll, GH_IO.dll, and RhinoCommon.dll.
Runtime
Rhino with a matching version of Grasshopper (the plugin runs inside Grasshopper).
Opossum installed via Food4Rhino or PackageManager to obtain Python backend and dependencies.
The plugin expects to be loaded inside Grasshopper; it does not run as a standalone .NET application.
Build instructions
Open the solution in Visual Studio.
Ensure project references to Rhino/Grasshopper assemblies are valid (point to the installed Rhino/Grasshopper runtime or SDK). These references are typically not committed and must be resolved on your machine.
Restore NuGet packages.
Build the Opossum2_0_Proto_A project in Debug or Release configuration.
The produced assembly will generally be a .dll file or .gha (Grasshopper plugin), depending on how the project is configured.
Install and run
Install Opossum from Food4Rhino or PackageManager.
Copy the built .gha/.dll to Grasshopper's Components folder.
Restart Rhino/Grasshopper.
The plugin registers its component(s) under the category set in the component registration (for example Params -> Util).
Usage notes
OptComponent manages component serialization (stores GUIDs of linked variables, simulators, and objectives) so saved Grasshopper files keep references and results across sessions.
Results can be serialized into the Grasshopper document and later reloaded. The component distinguishes whether results were produced by the optimizer or loaded from a file.
If your installation uses an external Python optimizer, verify that the Python environment is accessible from the host machine and any interop code is configured to find the Python interpreter and libraries.
Development notes
To debug the plugin, run Rhino and attach the Visual Studio debugger to the Rhino process.
When changing serialization formats (chunk names, GUIDs, or data layout), be careful to preserve compatibility with existing saved Grasshopper documents or provide migration logic.
UI classes (windows) are created at runtime and registered with Grasshopper's FormShepard; ensure proper disposal to avoid resource leaks.