Pagmo.NET.Ipopt
1.0.0
dotnet add package Pagmo.NET.Ipopt --version 1.0.0
NuGet\Install-Package Pagmo.NET.Ipopt -Version 1.0.0
<PackageReference Include="Pagmo.NET.Ipopt" Version="1.0.0" />
<PackageVersion Include="Pagmo.NET.Ipopt" Version="1.0.0" />
<PackageReference Include="Pagmo.NET.Ipopt" />
paket add Pagmo.NET.Ipopt --version 1.0.0
#r "nuget: Pagmo.NET.Ipopt, 1.0.0"
#:package Pagmo.NET.Ipopt@1.0.0
#addin nuget:?package=Pagmo.NET.Ipopt&version=1.0.0
#tool nuget:?package=Pagmo.NET.Ipopt&version=1.0.0
Pagmo.NET.Ipopt
The IPOPT (Interior Point OPTimizer) native runtime for Pagmo.NET. This is a pure native payload: it bundles the libipopt shared library and its dependency closure (MUMPS, OpenBLAS, the GCC runtime) and nothing else. The base Pagmo.NET package already contains the ipopt algorithm, which loads this library at runtime via dlopen; this package simply supplies it so the algorithm works out of the box.
Add it alongside Pagmo.NET (this package depends on the base — you get both). If you would rather bring your own IPOPT (a system install, or the PAGMONET_IPOPT_LIBRARY override), use the base Pagmo.NET package on its own.
IPOPT is a gradient-based interior-point solver for large-scale nonlinear constrained optimization. It requires the problem to supply gradients (has_gradient() = true).
Using Java or Kotlin? The equivalent companion is PagmoNet4j.ipopt.
Requirements
- .NET 8.0+
- The base
Pagmo.NETpackage (a dependency of this one — restored automatically) - No separate IPOPT installation required — the native binaries are bundled here
Installation
Once published to NuGet.org:
dotnet add package Pagmo.NET.Ipopt --version 1.0.0
Usage
using pagmo;
// IPOPT requires gradients — implement has_gradient() and gradient() on your problem.
using var algo = new ipopt();
algo.set_integer_option("print_level", 0); // suppress console output
algo.set_numeric_option("tol", 1e-8); // convergence tolerance
using var island = Island.Create(algo, myGradientProblem, popSize: 1, seed: 42);
island.Evolve(1);
island.WaitCheck();
Useful IPOPT options
| Option | Type | Description |
|---|---|---|
tol |
numeric | Convergence tolerance (default 1e-8) |
max_iter |
integer | Maximum iterations (default 3000) |
print_level |
integer | Console verbosity 0–12 (default 5) |
linear_solver |
string | mumps (default when available), ma27, ma57, ma86, ma97, pardiso |
hessian_approximation |
string | exact or limited-memory (L-BFGS) |
Log extraction
using var evolved = algo.evolve(pop);
foreach (var line in algo.GetTypedLogLines())
Console.WriteLine($"iter obj={line.Objective:F6} feasible={line.Feasible}");
int code = algo.GetLastOptimizationResultCode();
// 0 = Solve_Succeeded, 1 = Solved_To_Acceptable_Level
Known limitations
- Linear solver: MUMPS only (SPRAL / HSL not included). This package bundles the prebuilt
conda-forge
ipoptbinary as-is, so its linear-solver set is conda-forge's build decision, not ours: conda-forge builds IPOPT with the open-source MUMPS solver (the standard default) and without SPRAL or the license-restricted HSL (MA27/MA57/…). MUMPS covers general nonlinear constrained problems. If you specifically need SPRAL or HSL, build your own IPOPT with them and pointPAGMONET_IPOPT_LIBRARYat it.
License
This package is licensed under the EPL-2.0, matching IPOPT. See LICENSE and NOTICE.
It bundles pre-built native binaries from the following third-party projects, each under its own license:
| Component | License | Linking |
|---|---|---|
| IPOPT | EPL-2.0 | Dynamic (bundled), loaded at runtime via dlopen — never linked into the base |
| MUMPS | CeCILL-C | Dynamic (bundled), part of the IPOPT dependency closure |
| OpenBLAS | BSD-3-Clause | Dynamic (bundled), part of the IPOPT dependency closure |
| pagmo2 | LGPL-3.0-or-later / GPL-3.0-or-later | Static (via base Pagmo.NET) |
| Boost.Serialization | BSL-1.0 | Static (via base Pagmo.NET) |
| NLopt | LGPL-2.1-or-later | Static (via base Pagmo.NET) |
| Intel TBB | Apache-2.0 | Static (via base Pagmo.NET) |
pagmo2 and NLopt (from the base package) are statically linked under the LGPL; you may modify them and relink against your modified versions. Source for all bundled components is available from their upstream repositories. EPL-2.0 (IPOPT) permits use in proprietary applications without source-disclosure obligations.
Related
- pagmo.NET — base C# bindings
- pagmoNet — shared SWIG + native bridge
- PagmoNet4j.ipopt — Java/Kotlin equivalent
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- Pagmo.NET (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 154 | 8/12/2026 |
| 1.0.0-rc.7 | 79 | 7/27/2026 |
| 1.0.0-rc.6 | 86 | 7/27/2026 |
| 1.0.0-rc.5 | 83 | 7/25/2026 |
| 1.0.0-rc.4 | 68 | 7/16/2026 |