This package provides a transformation backend for InfiniteOpt
such that InfiniteOpt models are efficiently transformed into ExaModels
via automated direct transcription. The underlying ExaModels models leverage recurrent algebraic structure to
facilitate accelerated solution on CPUs and GPUs (up to two orders-of-magnitude faster).
Moreover, InfiniteOpt provides an intuitive interface that automates transcription and drastically reduced
model creation time relative to solving JuMP models via ExaModels' Optimizer interface.
InfiniteExaModels is tested on Windows, MacOS, and Linux on Julia's LTS and the latest release.
InfiniteExaModels is a registered Julia package and is installed like any other:
using Pkg
Pkg.add("InfiniteExaModels")InfiniteExaModels primarily provides ExaTranscriptionBackend which can be passed to an InfiniteModel along
with a solver that is compliant with JuliaSmoothOptimizers standards.
Typical CPU workflows will use Ipopt:
using InfiniteOpt, InfiniteExaModels, NLPModelsIpopt
model = InfiniteModel(ExaTranscriptionBackend(IpoptSolver))Typical GPU workflows will use MadNLP, CUDA, and CUDss (a compatible Nvidia GPU is required):
using InfiniteOpt, InfiniteExaModels, MadNLP, CUDA # be sure to install CUDSS first as well
model = InfiniteModel(ExaTranscriptionBackend(MadNLPSolver, backend = CUDABackend()))If this is useful for your work please consider citing it:
@article{Gondosiswanto2025advances,
title = {Advances to modeling and solving infinite-dimensional optimization problems in InfiniteOpt.jl},
journal = {Digital Chemical Engineering},
volume = {15},
pages = {100236},
year = {2025},
issn = {2772-5081},
doi = {https://doi.org/10.1016/j.dche.2025.100236},
url = {https://www.sciencedirect.com/science/article/pii/S2772508125000201},
author = {Evelyn Gondosiswanto and Joshua L. Pulsipher},
}The article is freely available here.