I need to use Pyomo with Ipopt solver on Google-Colab.
Now I need to use it , I get the following error ? ApplicationError: No executable found for solver 'ipopt'
How can I resolve it ?
Operations Research Stack Exchange is a question and answer site for operations research and analytics professionals, educators, and students. It only takes a minute to sign up.Sign up to join this community
The following package installation should be done before staring the Pyomo model
!pip install pyomo from pyomo.environ import * import matplotlib.pyplot as plt !wget -N -q "https://matematica.unipv.it/gualandi/solvers/ipopt-linux64.zip" !unzip -o -q ipopt-linux64
Then you can run your NLP model
model = AbstractModel() model.x = Var(bounds=(0,1.2), within=Reals) model.obj1 = Objective(expr=model.x**2, sense=maximize) #opt = SolverFactory('ipopt') opt=SolverFactory('ipopt', executable='/content/ipopt') instance = model.create_instance() results = opt.solve(instance) # solves and updates instance print('OF= ',value(instance.obj1))
If your notebook could be executed both on Colab or on a different environment (such as a local Jupyter notebook), you could add a couple of checks, before downloading and reinstalling
ipopt every time, as follows:
import shutil import sys import os.path if not shutil.which("pyomo"): !pip install -q pyomo assert(shutil.which("pyomo")) if not (shutil.which("ipopt") or os.path.isfile("ipopt")): if "google.colab" in sys.modules: !wget -N -q "https://matematica.unipv.it/gualandi/solvers/ipopt-linux64.zip" !unzip -o -q ipopt-linux64 else: try: !conda install -c conda-forge ipopt except: pass
NOTE: I have modified the link to ipopt-linux64.zip on Feb. 22nd, 2023. Older binaries of IpOpt are available at COIN-OR
Thanks to Stefano Coniglio and Pietro Belotti for the support on this.
NOTE 2: Since it was asked in a comment, you can install GLPK as follows:
if not (shutil.which("glpk") or os.path.isfile("glpk")): if "google.colab" in sys.modules: !apt-get install -y -qq glpk-utils else: try: !conda install -c conda-forge glpk except: pass
For other solvers, the process is quite similar (e.g., for CBC).
I found a link that works for installing the solver on windows, i dont know if that will help, but here it is :