Step 1: Make sure Pyomo is installed
Type “pyomo” in your terminal. If it’s not installed, you can check the Pyomo installation guide for more details.
Step 2: Extract the package and add it to the PATH
Assuming you’ve already downloaded the Octeract Engine package, extract the tar file to a directory of your choice. Next, add that directory to your PATH.
To temporarily add a directory to your PATH for the current terminal session, use:
export PATH=$PATH:/path/to/dir
To permanently add a directory to your PATH for all future terminal sessions for a single user, add the export command to your .bashrc
, .bash_profile
, or .profile
file in your home directory. For bash, you can add it to ~/.bashrc
like this:
echo 'export PATH=$PATH:/path/to/dir' >> ~/.bashrc
And then reload the profile with:
source ~/.bashrc
Step 3: Create and solve your model
import os
from pyomo.environ import *
os.environ["octeract_options"] = "num_cores=4"
model = m = ConcreteModel()
x1 = m.x1 = Var(within=Reals, bounds=(0,1), initialize=1)
x2 = m.x2 = Var(within=Reals, bounds=(0,1), initialize=1)
x3 = m.x3 = Var(within=Reals, bounds=(0,1), initialize=None)
x4 = m.x4 = Var(within=Reals, bounds=(0,1), initialize=1)
x5 = m.x5 = Var(within=Reals, bounds=(0,1), initialize=None)
m.obj = Objective(sense=minimize, expr=42*x1 - 0.5*(100*x1*x1 + 100*x2*x2 + 100*x3*x3 + 100*x4*x4 + 100*x5*x5) + 44*x2 + 45*x3 + 47*x4 + 47.5*x5)
m.e2 = Constraint(expr=20*x1 + 12*x2 + 11*x3 + 7*x4 + 4*x5 <= 40)
results = SolverFactory("octeract-engine").solve(m, tee=True, keepfiles=False, load_solutions=False)
print(results)
If you’d prefer to get creative, refer to the list of modeling components for Pyomo.