Some parameters must be set before the Gurobi environment is fully
configured. For example, creating a Compute Server environment
requires you to first indicate the name of the server. This can be
done through the Gurobi license file (
gurobi.lic), but we also
provide a means of doing this through the programming language APIs.
Specifically, you can do this using an
The first step is to construct the empty environment. This is done
using GRBemptyenv in C, or
through one of the provided
GRBEnv constructors in the
object-oriented interfaces. You then set parameters on this
environment using the standard parameter API. Finally, you start the
environment, using the GRBstartenv
in C, or using the
env.start() method in the
This routine will also populate any
parameter (ComputeServer, TokenServer,
ServerPassword, etc.) specified in your gurobi.lic file. This routine will also check the current working directory for a file
named gurobi.env, and it will attempt to read
parameter settings from this file if it exists. The file should
be in PRM format (briefly, each line
should contain a parameter name, followed by the desired value
for that parameter)..
After that, it will apply all parameter changes specified by the user
prior to this call. Note that this might overwrite parameters set in
the license file, or in the gurobi.env file, if present.
After all these changes are performed, the code will actually activate the environment, and make it ready to work with models.
In general, you should aim to create a single Gurobi environment in your program, even if you plan to work with multiple models. Reusing one environment is much more efficient than creating and destroying multiple environments. The one exception is if you are writing a multi-threaded program, since environments are not thread safe. In this case, you will need a separate environment for each of your threads.
To give a simple example, if you want your Python program to
offload the optimization computation to a Compute Server named
server1, you could say:
env = Env(empty=True) env.setParam(GRB.Param.ComputeServer, "server1:61000") env.setParam(GRB.Param.ServerPassword, "passwd") env.start() model = read("misc07.mps", env) model.optimize()
An equivalent Java program would look like this:
GRBEnv env = new GRBEnv(true); env.set(GRB.StringParam.ComputeServer, "server1:61000"); env.set(GRB.StringParam.ServerPassword, "passwd"); env.start(); GRBModel model = new GRBModel(env, "misc07.mps"); model.optimize();