Options

Options

Learn how to work with Options.

Use options to capture parameters (i.e.: configurations) for the run. The ModelOptions class captures the native gurobipy parameters, and the to_nextmv() method allows you to convert them to nextmv options, for convenience.

import nextmv_gurobipy as ngp

options = ngp.ModelOptions().to_nextmv()
options.parse()
Copy
$ python main.py --help
usage: main.py [options]

Options for main.py. Use command-line arguments (highest precedence) or
environment variables.

options:
  -h, --help            show this help message and exit
  -AggFill AGGFILL, --AggFill AGGFILL
                        [env var: AGGFILL] (default: -1) (type: int): Controls
                        the amount of fill allowed during presolve
                        aggregation. Larger values generally lead to presolved
                        models with fewer rows and columns, but with more
                        constraint matrix non-zeros. The default value chooses
                        automatically, and usually works well.
  -Aggregate AGGREGATE, --Aggregate AGGREGATE
                        [env var: AGGREGATE] (default: 1) (type: int):
                        Controls the aggregation level in presolve. The
                        options are off (0), moderate (1), or aggressive (2).
                        In rare instances, aggregation can lead to an
                        accumulation of numerical errors. Turning it off can
                        sometimes improve solution accuracy.
  -BQPCuts BQPCUTS, --BQPCuts BQPCUTS
                        [env var: BQPCUTS] (default: -1) (type: int): Controls
                        Boolean Quadric Polytope (BQP) cut generation. Use 0
                        to disable these cuts, 1 for moderate cut generation,
                        or 2 for aggressive cut generation. The default -1
                        value chooses automatically. Overrides the Cuts
                        parameter. Note: Only affects mixed integer
                        programming (MIP) models
  -BarConvTol BARCONVTOL, --BarConvTol BARCONVTOL
                        [env var: BARCONVTOL] (default: 1e-08) (type: float):
                        The barrier solver terminates when the relative
                        difference between the primal and dual objective
                        values is less than the specified tolerance (with a
                        "GRB_OPTIMAL" status). Tightening this tolerance often
                        produces a more accurate solution, which can sometimes
                        reduce the time spent in crossover. Be aware that such
                        tightening may result in an increase of barrier
                        iterations and hence computation time spent therein.
                        Loosening it causes the barrier algorithm to terminate
                        with a less accurate solution, which can be useful
                        when barrier is making very slow progress in later
                        iterations. Note: Barrier only
  -BarCorrectors BARCORRECTORS, --BarCorrectors BARCORRECTORS
                        [env var: BARCORRECTORS] (default: -1) (type: int):
                        Limits the number of central corrections performed in
                        each barrier iteration. The default value chooses
                        automatically, depending on problem characteristics.
                        The automatic strategy generally works well, although
                        it is often possible to obtain higher performance on a
                        specific model by selecting a value manually. Note:
                        Barrier only
  -BarHomogeneous BARHOMOGENEOUS, --BarHomogeneous BARHOMOGENEOUS
                        [env var: BARHOMOGENEOUS] (default: -1) (type: int):
                        Determines whether to use the homogeneous barrier
                        algorithm. At the default setting (-1), it is only
                        used when barrier solves a node relaxation for a MIP
                        model. Setting the parameter to 0 turns it off, and
                        setting it to 1 forces it on. The homogeneous
                        algorithm is useful for recognizing infeasibility or
                        unboundedness. It is a bit slower than the default
                        algorithm. Note: Barrier only
  -BarIterLimit BARITERLIMIT, --BarIterLimit BARITERLIMIT
                        [env var: BARITERLIMIT] (default: 1000) (type: int):
                        Limits the number of barrier iterations performed.
                        This parameter is rarely used. If you would like
                        barrier to terminate early, it is almost always better
                        to use the BarConvTol parameter instead. Optimization
                        returns with an ITERATION_LIMIT status if the limit is
                        exceeded. This parameter is callback settable. It can
                        be changed from within a callback when the "where"
                        value is "PRESOLVED", "SIMPLEX", "MIP", "MIPSOL",
                        "MIPNODE", "BARRIER", or "MULTIOBJ" (see the Callback
                        Codes section for more information). How to do that
                        for the different APIs is illustrated here. In case of
                        a remote server, the change of a parameter from within
                        a callback may not be taken into account immediately.
                        Note: Barrier only
  -BarOrder BARORDER, --BarOrder BARORDER
                        [env var: BARORDER] (default: -1) (type: int): Chooses
                        the barrier sparse matrix fill-reducing algorithm. A
                        value of 0 chooses Approximate Minimum Degree
                        ordering, while a value of 1 chooses Nested Dissection
                        ordering. The default value of -1 chooses
                        automatically. You should only modify this parameter
                        if you notice that the barrier ordering phase is
                        consuming a significant fraction of the overall
                        barrier runtime. Note: Barrier only
  -BarQCPConvTol BARQCPCONVTOL, --BarQCPConvTol BARQCPCONVTOL
                        [env var: BARQCPCONVTOL] (default: 1e-06) (type:
                        float): When solving a QCP model, the barrier solver
                        terminates when the relative difference between the
                        primal and dual objective values is less than the
                        specified tolerance (with a "GRB_OPTIMAL" status).
                        Tightening this tolerance may lead to a more accurate
                        solution, but it may also lead to a failure to
                        converge. Note: Barrier only
  -BestBdStop BESTBDSTOP, --BestBdStop BESTBDSTOP
                        [env var: BESTBDSTOP] (default: 1e+100) (type: float):
                        Terminates as soon as the engine determines that the
                        best bound on the objective value is at least as good
                        as the specified value. Optimization returns with an
                        USER_OBJ_LIMIT status in this case. Note that you
                        should always include a small tolerance in this value.
                        Without this, a bound that satisfies the intended
                        termination criterion may not actually lead to
                        termination due to numerical round- off in the bound.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -BestObjStop BESTOBJSTOP, --BestObjStop BESTOBJSTOP
                        [env var: BESTOBJSTOP] (default: -1e+100) (type:
                        float): Terminate as soon as the engine finds a
                        feasible solution whose objective value is at least as
                        good as the specified value. Optimization returns with
                        an USER_OBJ_LIMIT status in this case. Note that you
                        should always include a small tolerance in this value.
                        Without this, a solution that satisfies the intended
                        termination criterion may not actually lead to
                        termination due to numerical round- off in the
                        objective. Note: Only affects mixed integer
                        programming (MIP) models
  -BranchDir BRANCHDIR, --BranchDir BRANCHDIR
                        [env var: BRANCHDIR] (default: 0) (type: int):
                        Determines which child node is explored first in the
                        branch-and-cut search. The default value chooses
                        automatically. A value of -1 will always explore the
                        down branch first, while a value of 1 will always
                        explore the up branch first. Changing the value of
                        this parameter rarely produces a significant benefit.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -CSAPIAccessID CSAPIACCESSID, --CSAPIAccessID CSAPIACCESSID
                        [env var: CSAPIACCESSID] (default: ) (type: str): A
                        unique identifier used to authenticate an application
                        on a Gurobi Cluster Manager. You can provide either an
                        access ID and a secret key, or a username and
                        password, to authenticate your connection to a Cluster
                        Manager. You must set this parameter through either a
                        "gurobi.lic" file (using "CSAPIACCESSID=YOUR_API_ID")
                        or an empty environment. Changing the parameter after
                        your environment has been started will result in an
                        error. Note: Cluster Manager only
  -CSAPISecret CSAPISECRET, --CSAPISecret CSAPISECRET
                        [env var: CSAPISECRET] (default: ) (type: str): The
                        secret password associated with an API access ID. You
                        can provide either an access ID and a secret key, or a
                        username and password, to authenticate your connection
                        to a Cluster Manager. You must set this parameter
                        through either a "gurobi.lic" file (using
                        "CSAPISECRET=YOUR_API_SECRET_KEY") or an empty
                        environment. Changing the parameter after your
                        environment has been started will result in an error.
                        Note: Cluster Manager only
  -CSAppName CSAPPNAME, --CSAppName CSAPPNAME
                        [env var: CSAPPNAME] (default: ) (type: str): The
                        application name which will be sent to the server to
                        track which application is submitting the batches or
                        jobs. Note: Cluster Manager only
  -CSAuthToken CSAUTHTOKEN, --CSAuthToken CSAUTHTOKEN
                        [env var: CSAUTHTOKEN] (default: ) (type: str): When a
                        client authenticates with a Cluster Manager using a
                        username and password, a signed token is returned by
                        the server to be used in further calls or command-line
                        operations. It is used internally. Note: Cluster
                        Manager only
  -CSBatchMode CSBATCHMODE, --CSBatchMode CSBATCHMODE
                        [env var: CSBATCHMODE] (default: 0) (type: int): When
                        set to 1, enable the local creation of models, and
                        later submit batch-optimization jobs to the Cluster
                        Manager. See the Batch Optimization section for more
                        details. Note that if CSBatchMode is enabled, only
                        batch-optimization calls are allowed. You must set
                        this parameter through either a "gurobi.lic" file
                        (using "CSBATCHMODE=1") or an empty environment.
                        Changing the parameter after your environment has been
                        started will result in an error. Note: Cluster Manager
                        only
  -CSClientLog CSCLIENTLOG, --CSClientLog CSCLIENTLOG
                        [env var: CSCLIENTLOG] (default: 0) (type: int): Turns
                        logging on or off for Compute Server and the Web
                        License Service (WLS). Options are off (0), only error
                        messages (1), information and error messages (2), or
                        (3) verbose, information, and error messages.
  -CSGroup CSGROUP, --CSGroup CSGROUP
                        [env var: CSGROUP] (default: ) (type: str): Specifies
                        one or more groups of cluster nodes to control the
                        placement of the job. The list is a comma-separated
                        string of group names, with optionally a priority for
                        a group. For example, specifying "group1:10,group2:50"
                        means that the job will run on machines of "group1" or
                        "group2", and if the job is queued, it will have
                        priority 10 on group1 and 50 on group2. Note that if
                        the group is not specified, the job may run on any
                        node. If there are no nodes in the cluster having the
                        specified groups, the job will be rejected. Refer to
                        the *Gurobi Remote Services Reference Manual* for more
                        information on starting Compute Server jobs and in
                        particular to *Gurobi Remote Services Cluster
                        Grouping* for more information on grouping cluster
                        nodes. You must set this parameter through either a
                        license file (using "GROUP=name") or an empty
                        environment. Changing the parameter after your
                        environment has been created will have no effect.
  -CSIdleTimeout CSIDLETIMEOUT, --CSIdleTimeout CSIDLETIMEOUT
                        [env var: CSIDLETIMEOUT] (default: -1) (type: int):
                        This parameter allows you to set a limit on how long a
                        Compute Server job can sit idle before the server
                        kills the job (in seconds). A job is considered idle
                        if the server is not currently performing an
                        optimization and the client has not issued any
                        additional commands. The default value will allow a
                        job to sit idle indefinitely in all but one
                        circumstance. Currently the only exception is the
                        Gurobi Instant Cloud, where the default setting will
                        automatically impose a 30 minute idle time limit (1800
                        seconds). If you are using an Instant Cloud pool, the
                        actual value will be the maximum between this
                        parameter value and the idle timeout defined by the
                        pool. You must set this parameter through either a
                        "gurobi.lic" file (using "IDLETIMEOUT=n") or an empty
                        environment. Changing the parameter after your
                        environment has been created will have no effect.
                        Refer to the *Gurobi Remote Services Reference Manual*
                        for more information on starting Compute Server jobs.
  -CSManager CSMANAGER, --CSManager CSMANAGER
                        [env var: CSMANAGER] (default: ) (type: str): URL of
                        the Cluster Manager for the Remote Services cluster.
                        You must set this parameter through either a
                        "gurobi.lic" file (using "CSMANAGER=YOUR_MANAGER_URL")
                        or an empty environment. Changing the parameter after
                        your environment has been started will result in an
                        error. Note: Cluster Manager only
  -CSPriority CSPRIORITY, --CSPriority CSPRIORITY
                        [env var: CSPRIORITY] (default: 0) (type: int): The
                        priority of the Compute Server job. Priorities must be
                        between -100 and 100, with a default value of 0 (by
                        convention). Higher priority jobs are chosen from the
                        server job queue before lower priority jobs. A job
                        with priority 100 runs immediately, bypassing the job
                        queue and ignoring the job limit on the server. You
                        should exercise caution with priority 100 jobs, since
                        they can severely overload a server, which can cause
                        jobs to fail, and in extreme cases can cause the
                        server to crash. Refer to the *Gurobi Remote Services
                        Reference Manual* for more information on starting
                        Compute Server jobs. You must set this parameter
                        through either a "gurobi.lic" file (using
                        "PRIORITY=n") or an empty environment. Changing the
                        parameter after your environment has been created will
                        have no effect.
  -CSQueueTimeout CSQUEUETIMEOUT, --CSQueueTimeout CSQUEUETIMEOUT
                        [env var: CSQUEUETIMEOUT] (default: -1.0) (type:
                        float): This parameter allows you to set a limit (in
                        seconds) on how long a new Compute Server job will
                        wait in queue before it gives up (and reports a
                        "JOB_REJECTED" error). Note that there might be a
                        delay of up to 20 seconds for the actual signaling of
                        the time out. Any negative value will allow a job to
                        sit in the Compute Server queue indefinitely. You must
                        set this parameter through a "gurobi.lic" file (using
                        "QUEUETIMEOUT=n") or an empty environment. Changing
                        the parameter after your environment has been created
                        will have no effect. Refer to the *Gurobi Remote
                        Services Reference Manual* for more information on
                        starting Compute Server jobs.
  -CSRouter CSROUTER, --CSRouter CSROUTER
                        [env var: CSROUTER] (default: ) (type: str): The
                        router node for a Remote Services cluster. A router
                        can be used to improve the robustness of a Compute
                        Server deployment. You can refer to the router using
                        either its name or its IP address. A typical Remote
                        Services deployment won’t use a router, so you
                        typically won’t need to set this parameter. Refer to
                        the *Gurobi Remote Services Reference Manual* for more
                        information on starting Compute Server jobs. You must
                        set this parameter through either a "gurobi.lic" file
                        (using "ROUTER=name") or an empty environment.
                        Changing the parameter after your environment has been
                        created will have no effect.
  -CSTLSInsecure CSTLSINSECURE, --CSTLSInsecure CSTLSINSECURE
                        [env var: CSTLSINSECURE] (default: 0) (type: int):
                        Indicates whether the Remote Services cluster is using
                        insecure mode in the TLS (Transport Layer Security).
                        Leave this at its default value of 0 unless your
                        server administrator tells you otherwise. Refer to the
                        *Gurobi Remote Services Reference Manual* for more
                        information on starting Compute Server jobs. You must
                        set this parameter through either a "gurobi.lic" file
                        (using "CSTLSINSECURE") or an empty environment.
                        Changing the parameter after your environment has been
                        created will have no effect.
  -CliqueCuts CLIQUECUTS, --CliqueCuts CLIQUECUTS
                        [env var: CLIQUECUTS] (default: -1) (type: int):
                        Controls clique cut generation. Use 0 to disable these
                        cuts, 1 for moderate cut generation, or 2 for
                        aggressive cut generation. The default -1 value choose
                        automatically. Overrides the Cuts parameter. We have
                        observed that setting this parameter to its aggressive
                        setting can produce a significant benefit for some
                        large set partitioning models. Note: Only affects
                        mixed integer programming (MIP) models
  -CloudAccessID CLOUDACCESSID, --CloudAccessID CLOUDACCESSID
                        [env var: CLOUDACCESSID] (default: ) (type: str): Set
                        this parameter to the Access ID for your Instant Cloud
                        license when launching a new instance. You can
                        retrieve this string from your account on the Gurobi
                        Instant Cloud Manager website. You must set this
                        parameter through either a "gurobi.lic" file (using
                        "CLOUDACCESSID=id") or an empty environment. Changing
                        the parameter after your environment has been created
                        will have no effect.
  -CloudHost CLOUDHOST, --CloudHost CLOUDHOST
                        [env var: CLOUDHOST] (default: ) (type: str): Set this
                        parameter to the host name of the Gurobi Cloud entry
                        point. Currently "cloud.gurobi.com". You must set this
                        parameter through either a "gurobi.lic" file (using
                        "CLOUDHOST=host") or an empty environment. Changing
                        the parameter after your environment has been started
                        will result in an error.
  -CloudPool CLOUDPOOL, --CloudPool CLOUDPOOL
                        [env var: CLOUDPOOL] (default: ) (type: str): Set this
                        parameter to the name of the cloud pool you would like
                        to use for your new Instant Cloud instance. You can
                        browse your existing cloud pools or create new ones
                        from your account on the Gurobi Instant Cloud Manager
                        website. You must set this parameter through either a
                        "gurobi.lic" file (using "CLOUDPOOL=pool") or an empty
                        environment. Changing the parameter after your
                        environment has been created will have no effect.
  -CloudSecretKey CLOUDSECRETKEY, --CloudSecretKey CLOUDSECRETKEY
                        [env var: CLOUDSECRETKEY] (default: ) (type: str): Set
                        this parameter to the Secret Key for your Instant
                        Cloud license when launching a new instance. You can
                        retrieve this string from your account on the Gurobi
                        Instant Cloud Manager website. You must set this
                        parameter through either a "gurobi.lic" file (using
                        "CLOUDSECRETKEY=key") or an empty environment.
                        Changing the parameter after your environment has been
                        created will have no effect.
  -ComputeServer COMPUTESERVER, --ComputeServer COMPUTESERVER
                        [env var: COMPUTESERVER] (default: ) (type: str): Set
                        this parameter to the name of a node in the Remote
                        Services cluster where you’d like your Compute Server
                        job to run. You can refer to the server using its name
                        or its IP address. If you are using a non-default
                        port, the server name should be followed by the port
                        number (e.g., "server1:61000"). You will also need to
                        set the ServerPassword parameter to supply the client
                        password for the specified cluster. You can provide a
                        comma-separated list of nodes to increase robustness.
                        If the first node in the list doesn’t respond, the
                        second will be tried, etc. Refer to the *Gurobi Remote
                        Services Reference Manual* for more information on
                        starting Compute Server jobs. You must set this
                        parameter through either a "gurobi.lic" file (using
                        "COMPUTESERVER=server") or an empty environment.
                        Changing the parameter after your environment has been
                        created will have no effect.
  -ConcurrentJobs CONCURRENTJOBS, --ConcurrentJobs CONCURRENTJOBS
                        [env var: CONCURRENTJOBS] (default: 0) (type: int):
                        Enables distributed concurrent optimization, which can
                        be used to solve LP or MIP models on multiple
                        machines. A value of "n" causes the solver to create
                        "n" independent models, using different parameter
                        settings for each. Each of these models is sent to a
                        distributed worker for processing. Optimization
                        terminates when the first solve completes. Use the
                        ComputeServer parameter to indicate the name of the
                        cluster where you would like your distributed
                        concurrent job to run (or use WorkerPool if your
                        client machine will act as manager and you just need a
                        pool of workers). By default, Gurobi chooses the
                        parameter settings used for each independent solve
                        automatically. You can create concurrent environments
                        to choose your own parameter settings (refer to the
                        concurrent optimization section for details). The
                        intent of concurrent MIP solving is to introduce
                        additional diversity into the MIP search. By bringing
                        the resources of multiple machines to bear on a single
                        model, this approach can sometimes solve models much
                        faster than a single machine. The distributed
                        concurrent solver produces a slightly different log
                        from the standard solver, and provides different
                        callbacks as well. Please refer to the "Distributed
                        Algorithms" section of the *Gurobi Remote Services
                        Reference Manual* for additional details.
  -ConcurrentMIP CONCURRENTMIP, --ConcurrentMIP CONCURRENTMIP
                        [env var: CONCURRENTMIP] (default: 1) (type: int):
                        This parameter enables the concurrent MIP solver. When
                        the parameter is set to value "n", the MIP solver
                        performs "n" independent MIP solves in parallel, with
                        different parameter settings for each. Optimization
                        terminates when the first solve completes. By default,
                        Gurobi chooses the parameter settings used for each
                        independent solve automatically. You can create
                        concurrent environments to choose your own parameter
                        settings (refer to the concurrent optimization section
                        for details). The intent of concurrent MIP solving is
                        to introduce additional diversity into the MIP search.
                        This approach can sometimes solve models much faster
                        than applying all available threads to a single MIP
                        solve, especially on very large parallel machines. The
                        concurrent MIP solver divides available threads evenly
                        among the independent solves. For example, if you have
                        6 threads available and you set ConcurrentMIP to 2,
                        the concurrent MIP solver will allocate 3 threads to
                        each independent solve. Note that the number of
                        independent solves launched will not exceed the number
                        of available threads. The concurrent MIP solver
                        produces a slightly different log from the standard
                        MIP solver, and provides different callbacks as well.
                        Please refer to the concurrent optimizer discussion
                        for additional details. Concurrent MIP is not
                        deterministic. If runtimes for different independent
                        solves are very similar, and if the model has multiple
                        optimal solutions, you may get slightly different
                        results from multiple runs on the same model. Note:
                        Only affects mixed integer programming (MIP) models
  -ConcurrentMethod CONCURRENTMETHOD, --ConcurrentMethod CONCURRENTMETHOD
                        [env var: CONCURRENTMETHOD] (default: -1) (type: int):
                        This parameter is only evaluated when solving an LP
                        with a concurrent solver (Method = 3 or 4). It
                        controls which methods are run concurrently by the
                        concurrent solver. Options are: * -1=automatic, *
                        0=barrier, dual, primal simplex, * 1=barrier and dual
                        simplex, * 2=barrier and primal simplex, and * 3=dual
                        and primal simplex. Which methods are actually run
                        also depends on the number of threads available.
  -CoverCuts COVERCUTS, --CoverCuts COVERCUTS
                        [env var: COVERCUTS] (default: -1) (type: int):
                        Controls cover cut generation. Use 0 to disable these
                        cuts, 1 for moderate cut generation, or 2 for
                        aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -Crossover CROSSOVER, --Crossover CROSSOVER
                        [env var: CROSSOVER] (default: -1) (type: int):
                        Determines the crossover strategy used to transform
                        the interior solution produced by barrier into a basic
                        solution (note that crossover is not available for QP
                        or QCP models). Crossover consists of three phases:
                        (i) a *primal push* phase, where primal variables are
                        pushed to bounds, (ii) a *dual push* phase, where dual
                        variables are pushed to bounds, and (iii) a *cleanup*
                        phase, where simplex is used to remove any primal or
                        dual infeasibilities that remain after the push phases
                        are complete. The order of the first two phases and
                        the algorithm used for the third phase are both
                        controlled by the Crossover parameter: +--------------
                        -------+----------------+-----------------+-----------
                        --+ | **Parameter value** | **First push** | **Second
                        push** | **Cleanup** | |=====================|========
                        ========|=================|=============| | 0 |
                        Disabled | Disabled | Disabled | +--------------------
                        -+----------------+-----------------+-------------+ |
                        1 | Dual | Primal | Primal | +---------------------+--
                        --------------+-----------------+-------------+ | 2 |
                        Dual | Primal | Dual | +---------------------+--------
                        --------+-----------------+-------------+ | 3 | Primal
                        | Dual | Primal | +---------------------+-------------
                        ---+-----------------+-------------+ | 4 | Primal |
                        Dual | Dual | +---------------------+----------------
                        +-----------------+-------------+ The default value of
                        -1 chooses the strategy automatically. Use value 0 to
                        disable crossover; this setting returns the interior
                        solution computed by barrier. Note: Barrier only
  -CrossoverBasis CROSSOVERBASIS, --CrossoverBasis CROSSOVERBASIS
                        [env var: CROSSOVERBASIS] (default: -1) (type: int):
                        Determines the initial basis construction strategy for
                        crossover. A value of 0 chooses an initial basis
                        quickly. A value of 1 can take much longer, but often
                        produces a more numerically stable start basis. The
                        default value of -1 makes an automatic choice. Note:
                        Barrier only
  -CutAggPasses CUTAGGPASSES, --CutAggPasses CUTAGGPASSES
                        [env var: CUTAGGPASSES] (default: -1) (type: int): A
                        non-negative value indicates the maximum number of
                        constraint aggregation passes performed during cut
                        generation. Overrides the Cuts parameter. Changing the
                        value of this parameter rarely produces a significant
                        benefit. Note: Only affects mixed integer programming
                        (MIP) models
  -CutPasses CUTPASSES, --CutPasses CUTPASSES
                        [env var: CUTPASSES] (default: -1) (type: int): A non-
                        negative value indicates the maximum number of cutting
                        plane passes performed during root cut generation. The
                        default value chooses the number of cut passes
                        automatically. In addition to cutting plane
                        separation, each cut pass also applies heuristics and
                        node probing and also may launch parallel root helper
                        threads. So even when the Cuts parameter is set to 0,
                        the cut loop will apply probing, heuristics and
                        parallel root helpers in a single cut loop iteration.
                        You should experiment with different values of this
                        parameter if you notice the MIP solver spending
                        significant time on root cut passes that have little
                        impact on the objective bound. Note: Only affects
                        mixed integer programming (MIP) models
  -Cuts CUTS, --Cuts CUTS
                        [env var: CUTS] (default: -1) (type: int): Global cut
                        aggressiveness setting. Use value 0 to shut off cuts,
                        1 for moderate cut generation, 2 for aggressive cut
                        generation, and 3 for very aggressive cut generation.
                        The default -1 value chooses automatically. This
                        parameter is overridden by the parameters that control
                        individual cut types (e.g., CliqueCuts). Note: Only
                        affects mixed integer programming (MIP) models
  -DegenMoves DEGENMOVES, --DegenMoves DEGENMOVES
                        [env var: DEGENMOVES] (default: -1) (type: int):
                        Limits degenerate simplex moves. These moves are
                        performed to improve the integrality of the current
                        relaxation solution. By default, the algorithm chooses
                        the number of degenerate move passes to perform
                        automatically. The default setting generally works
                        well, but there can be cases where an excessive amount
                        of time is spent after the initial root relaxation has
                        been solved but before the cut generation process or
                        the root heuristics have started. If you see multiple
                        ‘Total elapsed time’ messages in the log immediately
                        after the root relaxation log, you may want to try
                        setting this parameter to 0. Note: Only affects mixed
                        integer programming (MIP) models
  -Disconnected DISCONNECTED, --Disconnected DISCONNECTED
                        [env var: DISCONNECTED] (default: -1) (type: int): A
                        MIP or an LP model can sometimes be made up of
                        multiple, completely independent sub-models. This
                        parameter controls how aggressively we try to exploit
                        this structure. A value of 0 ignores this structure
                        entirely, while larger values try more aggressive
                        approaches. The default value of -1 chooses
                        automatically. Note: Only affects mixed integer
                        programming (MIP) models
  -DisplayInterval DISPLAYINTERVAL, --DisplayInterval DISPLAYINTERVAL
                        [env var: DISPLAYINTERVAL] (default: 5) (type: int):
                        Determines the frequency at which log lines are
                        printed (in seconds).
  -DistributedMIPJobs DISTRIBUTEDMIPJOBS, --DistributedMIPJobs DISTRIBUTEDMIPJOBS
                        [env var: DISTRIBUTEDMIPJOBS] (default: 0) (type:
                        int): Enables distributed MIP. A value of "n" causes
                        the MIP solver to divide the work of solving a MIP
                        model among "n" machines. Use the ComputeServer
                        parameter to indicate the name of the cluster where
                        you would like your distributed MIP job to run (or use
                        WorkerPool if your client machine will act as manager
                        and you just need a pool of workers). The distributed
                        MIP solver produces a slightly different log from the
                        standard MIP solver, and provides different callbacks
                        as well. Please refer to the "Distributed Algorithms"
                        section of the *Gurobi Remote Services Reference
                        Manual* for additional details. Note: Only affects
                        mixed integer programming (MIP) models
  -DualImpliedCuts DUALIMPLIEDCUTS, --DualImpliedCuts DUALIMPLIEDCUTS
                        [env var: DUALIMPLIEDCUTS] (default: -1) (type: int):
                        Controls dual implied bound cut generation. Use 0 to
                        disable these cuts, 1 for moderate cut generation, or
                        2 for aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -DualReductions DUALREDUCTIONS, --DualReductions DUALREDUCTIONS
                        [env var: DUALREDUCTIONS] (default: 1) (type: int):
                        Determines whether dual reductions are performed
                        during the optimization process. You should disable
                        these reductions if you received an optimization
                        status of INF_OR_UNBD and would like a more definitive
                        conclusion.
  -FeasRelaxBigM FEASRELAXBIGM, --FeasRelaxBigM FEASRELAXBIGM
                        [env var: FEASRELAXBIGM] (default: 1000000.0) (type:
                        float): When relaxing a constraint in a feasibility
                        relaxation, it is sometimes necessary to introduce a
                        big-M value. This parameter determines the default
                        magnitude of that value. For details about feasibility
                        relaxations, refer to e.g. "GRBfeasrelax" in the C
                        API.
  -FeasibilityTol FEASIBILITYTOL, --FeasibilityTol FEASIBILITYTOL
                        [env var: FEASIBILITYTOL] (default: 1e-06) (type:
                        float): All constraints must be satisfied to a
                        tolerance of FeasibilityTol. Tightening this tolerance
                        can produce smaller constraint violations, but for
                        numerically challenging models it can sometimes lead
                        to much larger iteration counts.
  -FlowCoverCuts FLOWCOVERCUTS, --FlowCoverCuts FLOWCOVERCUTS
                        [env var: FLOWCOVERCUTS] (default: -1) (type: int):
                        Controls flow cover cut generation. Use 0 to disable
                        these cuts, 1 for moderate cut generation, or 2 for
                        aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -FlowPathCuts FLOWPATHCUTS, --FlowPathCuts FLOWPATHCUTS
                        [env var: FLOWPATHCUTS] (default: -1) (type: int):
                        Controls flow path cut generation. Use 0 to disable
                        these cuts, 1 for moderate cut generation, or 2 for
                        aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -FuncMaxVal FUNCMAXVAL, --FuncMaxVal FUNCMAXVAL
                        [env var: FUNCMAXVAL] (default: 1000000.0) (type:
                        float): Very large values in piecewise-linear
                        approximations can cause numerical issues. This
                        parameter limits the bounds on the variables that
                        participate in function constraints approximated by a
                        piecewise- linear function. Specifically, any bound
                        larger than "FuncMaxVal" (in absolute value) on the
                        variables participating in such a function constraint
                        will be truncated. If the FuncNonlinear attribute of
                        the constraint is set to 1, or if it is set to -1 and
                        the global FuncNonlinear parameter is set to 1, the
                        function constraint is not approximated by a
                        piecewise-linear function and the "FuncMaxVal"
                        parameter does not apply.
  -FuncNonlinear FUNCNONLINEAR, --FuncNonlinear FUNCNONLINEAR
                        [env var: FUNCNONLINEAR] (default: 1) (type: int):
                        This parameter controls whether general function
                        constraints with their FuncNonlinear attribute set to
                        -1 are replaced with a static piecewise-linear
                        approximation (0), or handled inside the branch-and-
                        bound tree using a dynamic outer-approximation
                        approach (1). See the discussion of function
                        constraints for more information.
  -FuncPieceError FUNCPIECEERROR, --FuncPieceError FUNCPIECEERROR
                        [env var: FUNCPIECEERROR] (default: 0.001) (type:
                        float): If the FuncPieces parameter is set to value -1
                        or -2, this attribute provides the maximum allowed
                        error (absolute for -1, relative for -2) in the
                        piecewise-linear approximation.
  -FuncPieceLength FUNCPIECELENGTH, --FuncPieceLength FUNCPIECELENGTH
                        [env var: FUNCPIECELENGTH] (default: 0.01) (type:
                        float): If the FuncPieces parameter is set to value 1,
                        this parameter gives the length of each piece of the
                        piecewise-linear approximation.
  -FuncPieceRatio FUNCPIECERATIO, --FuncPieceRatio FUNCPIECERATIO
                        [env var: FUNCPIECERATIO] (default: -1.0) (type:
                        float): This parameter controls whether the piecewise-
                        linear approximation of a function constraint is an
                        underestimate of the function, an overestimate, or
                        somewhere in between. A value of 0.0 will always
                        underestimate, while a value of 1.0 will always
                        overestimate. A value in between will interpolate
                        between the underestimate and the overestimate. A
                        special value of -1 chooses points that are on the
                        original function. The behaviour is not defined for
                        other negative values. See the discussion of function
                        constraints for more information.
  -FuncPieces FUNCPIECES, --FuncPieces FUNCPIECES
                        [env var: FUNCPIECES] (default: 0) (type: int): This
                        parameter sets the strategy used for performing a
                        piecewise- linear approximation of a function
                        constraint. There are a few options: * **FuncPieces >=
                        2**: Sets the number of pieces; pieces are equal
                        width. * **FuncPieces = 1**: Uses a fixed width for
                        each piece; the actual width is provided in the
                        FuncPieceLength parameter. * **FuncPieces = 0**:
                        Default value; chooses automatically. Currently it
                        uses the relative error approach for the
                        approximation, while for version 10.0 or earlier it
                        mainly uses the number of function constraints to set
                        the total number of pieces. * **FuncPieces = -1**:
                        Bounds the absolute error of the approximation; the
                        error bound is provided in the FuncPieceError
                        parameter. * **FuncPieces = -2**: Bounds the relative
                        error of the approximation; the error bound is
                        provided in the FuncPieceError parameter. This
                        parameter only applies to function constraints whose
                        FuncPieces attribute has been set to 0. See the
                        discussion of function constraints for more
                        information.
  -GUBCoverCuts GUBCOVERCUTS, --GUBCoverCuts GUBCOVERCUTS
                        [env var: GUBCOVERCUTS] (default: -1) (type: int):
                        Controls GUB cover cut generation. Use 0 to disable
                        these cuts, 1 for moderate cut generation, or 2 for
                        aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -GomoryPasses GOMORYPASSES, --GomoryPasses GOMORYPASSES
                        [env var: GOMORYPASSES] (default: -1) (type: int): A
                        non-negative value indicates the maximum number of
                        Gomory cut passes performed. Overrides the Cuts
                        parameter. Note: Only affects mixed integer
                        programming (MIP) models
  -Heuristics HEURISTICS, --Heuristics HEURISTICS
                        [env var: HEURISTICS] (default: 0.05) (type: float):
                        Determines the amount of time spent in MIP heuristics.
                        You can think of the value as the desired fraction of
                        total MIP runtime devoted to heuristics (so by
                        default, we aim to spend 5% of runtime on heuristics).
                        Larger values produce more and better feasible
                        solutions, at a cost of slower progress in the best
                        bound. Note: Only affects mixed integer programming
                        (MIP) models
  -IISMethod IISMETHOD, --IISMethod IISMETHOD
                        [env var: IISMETHOD] (default: -1) (type: int):
                        Chooses the IIS method to use. To compute an IIS for
                        an LP, it is sufficient to solve an LP with dimensions
                        similar to the dual of the original model. If the
                        solve time for that LP is excessive, setting the
                        IISMethod parameter to 1 may offer a faster
                        alternative; other settings do not alter the default
                        approach for infeasible LPs. For MIPs, filtering of
                        constraints and variables is required, which involves
                        solving a series of related MIP subproblems. Methods
                        0-2 all use filtering techniques. Method 0 is often
                        faster than method 1, but may produce a larger IIS.
                        Method 2 ignores the bound constraints. It therefore
                        tends to be faster than methods 0-1, but will fail if
                        these bounds are necessary to make the problem
                        infeasible. Method 3 will return the IIS for the LP
                        relaxation of a MIP model if the relaxation is
                        infeasible, even though the result may not be minimal
                        when integrality constraints are included. The default
                        value of -1 chooses automatically.
  -IgnoreNames IGNORENAMES, --IgnoreNames IGNORENAMES
                        [env var: IGNORENAMES] (default: 0) (type: int): This
                        parameter affects how Gurobi deals with names. If set
                        to 1, subsequent calls to add variables or constraints
                        to the model will ignore the associated names. Names
                        for objectives and the model will also be ignored. In
                        addition, subsequent calls to modify name attributes
                        will have no effect. Note that variables or
                        constraints that had names at the point this parameter
                        was changed to 1 will retain their names. If you wish
                        to discard all name information, you should set this
                        parameter to 1 before adding variables or constraints
                        to the model. In addition, the parameter affects the
                        behavior of the write functions (e.g. "GRBwrite" in C,
                        or "Model.write" in Python). If "IgnoreNames" is set
                        to 1, Gurobi uses default names when writing the file.
                        This can be useful if you have a model with names and
                        want to write the model, the attributes, a MIP start
                        file, or other information to disk without including
                        variable and constraint names in the files.
  -ImpliedCuts IMPLIEDCUTS, --ImpliedCuts IMPLIEDCUTS
                        [env var: IMPLIEDCUTS] (default: -1) (type: int):
                        Controls implied bound cut generation. Use 0 to
                        disable these cuts, 1 for moderate cut generation, or
                        2 for aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -ImproveStartGap IMPROVESTARTGAP, --ImproveStartGap IMPROVESTARTGAP
                        [env var: IMPROVESTARTGAP] (default: 0.0) (type:
                        float): The MIP solver can change parameter settings
                        in the middle of the search in order to adopt a
                        strategy that gives up on moving the best bound and
                        instead devotes all of its effort towards finding
                        better feasible solutions. This parameter allows you
                        to specify an optimality gap at which the MIP solver
                        switches to a solution improvement strategy. For
                        example, setting this parameter to 0.1 will cause the
                        MIP solver to switch strategies once the relative
                        optimality gap is smaller than 0.1. Note: Only affects
                        mixed integer programming (MIP) models
  -ImproveStartNodes IMPROVESTARTNODES, --ImproveStartNodes IMPROVESTARTNODES
                        [env var: IMPROVESTARTNODES] (default: 1e+100) (type:
                        float): The MIP solver can change parameter settings
                        in the middle of the search in order to adopt a
                        strategy that gives up on moving the best bound and
                        instead devotes all of its effort towards finding
                        better feasible solutions. This parameter allows you
                        to specify the node count at which the MIP solver
                        switches to a solution improvement strategy. For
                        example, setting this parameter to 10 will cause the
                        MIP solver to switch strategies once the node count is
                        larger than 10. Note: Only affects mixed integer
                        programming (MIP) models
  -ImproveStartTime IMPROVESTARTTIME, --ImproveStartTime IMPROVESTARTTIME
                        [env var: IMPROVESTARTTIME] (default: 1e+100) (type:
                        float): The MIP solver can change parameter settings
                        in the middle of the search in order to adopt a
                        strategy that gives up on moving the best bound and
                        instead devotes all of its effort towards finding
                        better feasible solutions. This parameter allows you
                        to specify the time when the MIP solver switches to a
                        solution improvement strategy. For example, setting
                        this parameter to 10 will cause the MIP solver to
                        switch strategies 10 seconds after starting the
                        optimization. Note: Only affects mixed integer
                        programming (MIP) models
  -InfProofCuts INFPROOFCUTS, --InfProofCuts INFPROOFCUTS
                        [env var: INFPROOFCUTS] (default: -1) (type: int):
                        Controls infeasibility proof cut generation. Use 0 to
                        disable these cuts, 1 for moderate cut generation, or
                        2 for aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -InfUnbdInfo INFUNBDINFO, --InfUnbdInfo INFUNBDINFO
                        [env var: INFUNBDINFO] (default: 0) (type: int): Set
                        this parameter if you want to query the unbounded ray
                        for unbounded models (through the UnbdRay attribute),
                        or the infeasibility proof for infeasible models
                        (through the FarkasDual and FarkasProof attributes).
                        When this parameter is set additional information will
                        be computed when a model is determined to be
                        infeasible or unbounded, and a simplex basis is
                        available (from simplex or crossover). Note that if a
                        model is determined to be infeasible or unbounded when
                        solving with barrier, prior to crossover, then this
                        additional information will not be available. Note
                        that if a model is found to be either infeasible or
                        unbounded, and you simply want to know which one it
                        is, you should use the DualReductions parameter
                        instead. It performs much less additional computation.
                        Note: Only affects linear programming (LP) models
  -IntFeasTol INTFEASTOL, --IntFeasTol INTFEASTOL
                        [env var: INTFEASTOL] (default: 1e-05) (type: float):
                        An integrality restriction on a variable is considered
                        satisfied when the variable’s value is less than
                        IntFeasTol from the nearest integer value. Tightening
                        this tolerance can produce smaller integrality
                        violations, but very tight tolerances may
                        significantly increase runtime. Loosening this
                        tolerance rarely reduces runtime. Note: Only affects
                        mixed integer programming (MIP) models
  -IntegralityFocus INTEGRALITYFOCUS, --IntegralityFocus INTEGRALITYFOCUS
                        [env var: INTEGRALITYFOCUS] (default: 0) (type: int):
                        One unfortunate reality in MIP is that integer
                        variables don’t always take exact integral values.
                        While this typically doesn’t create significant
                        problems, in some situations the side-effects can be
                        quite undesirable. The best-known example is probably
                        a *trickle flow*, where a continuous variable that is
                        meant to be zero when an associated binary variable is
                        zero instead takes a non-trivial value. More
                        precisely, given a constraint y \leq M b, where y is a
                        non- negative continuous variable, b is a binary
                        variable, and M is a constant that captures the
                        largest possible value of y, the constraint is
                        intended to enforce the relationship that y must be
                        zero if b is zero. With the default integer
                        feasibility tolerance, the binary variable is allowed
                        to take a value as large as 1e-5 while still being
                        considered as taking value zero. If the M value is
                        large, then the M b upper bound on the y variable can
                        be substantial. Reducing the value of the IntFeasTol
                        parameter can mitigate the effects of such trickle
                        flows, but often at a significant cost, and often with
                        limited success. The IntegralityFocus parameter
                        provides a better alternative. Setting this parameter
                        to 1 requests that the solver work harder to try to
                        avoid solutions that exploit integrality tolerances.
                        More precisely, the solver tries to find solutions
                        that are still (nearly) feasible if all integer
                        variables are rounded to exact integral values. We
                        should say that the solver won’t always succeed in
                        finding such solutions, and that this setting
                        introduces a modest performance penalty, but the
                        setting will significantly reduce the frequency and
                        magnitude of such violations.
  -IterationLimit ITERATIONLIMIT, --IterationLimit ITERATIONLIMIT
                        [env var: ITERATIONLIMIT] (default: 1e+100) (type:
                        float): Limits the number of simplex iterations
                        performed. The limit applies to MIP, barrier
                        crossover, and simplex. Optimization returns with an
                        ITERATION_LIMIT status if the limit is exceeded.
  -JSONSolDetail JSONSOLDETAIL, --JSONSolDetail JSONSOLDETAIL
                        [env var: JSONSOLDETAIL] (default: 0) (type: int):
                        This parameter controls the amount of detail included
                        in a JSON solution. For example, when this parameter
                        is set to 1, the JSON string will contain data for all
                        of the variables, even those with solution value 0.
                        For a precise description of the contents of the
                        resulting JSON string, please refer to the JSON
                        solution format section.
  -JobID JOBID, --JobID JOBID
                        [env var: JOBID] (default: ) (type: str): If you are
                        running on a Compute Server, this parameter provides
                        the Compute Server Job ID for the current job. Note
                        that this is a read- only parameter.
  -LPWarmStart LPWARMSTART, --LPWarmStart LPWARMSTART
                        [env var: LPWARMSTART] (default: 1) (type: int):
                        Controls whether and how Gurobi uses warm start
                        information for an LP optimization. The non default
                        setting of 2 is particularly useful for communicating
                        advanced start information while retaining the
                        performance benefits of presolve. A warm start can
                        consist of any combination of basis statuses, a primal
                        start vector, or a dual start vector. It is specified
                        using the attributes VBasis and CBasis or PStart and
                        DStart on the original model. As a general rule,
                        setting this parameter to 0 ignores any start
                        information and solves the model from scratch. Setting
                        it to 1 (the default) uses the provided warm start
                        information to solve the original, unpresolved
                        problem, regardless of whether presolve is enabled.
                        Setting it to 2 uses the start information to solve
                        the presolved problem, assuming that presolve is
                        enabled. This involves mapping the solution of the
                        original problem into an equivalent (or sometimes
                        nearly equivalent) crushed solution of the presolved
                        problem. If presolve is disabled, then setting 2 still
                        prioritizes start vectors, while setting 1 prioritizes
                        basis statuses. Taken together, the LPWarmStart
                        parameter setting, the LP algorithm specified by
                        Gurobi’s Method parameter, and the available advanced
                        start information determine whether Gurobi will use
                        basis statuses only, basis statuses augmented with
                        information from start vectors, or a basis obtained by
                        applying the crossover method to the provided primal
                        and dual start vectors to jump start the optimization.
                        When Gurobi’s Method parameter requests the barrier
                        solver, primal and dual start vectors are prioritized
                        over basis statuses (but only if you provide both).
                        These start vectors are fed to the crossover
                        procedure. This is the same crossover that is used to
                        compute a basic solution from the interior solution
                        produced by the core barrier algorithm, but in this
                        case crossover is started from arbitrary start
                        vectors. If you set the LPWarmStart parameter to 1,
                        crossover will be invoked on the original model using
                        the provided vectors. Any provided basis information
                        will not be used in this case. If you set LPWarmStart
                        to 2, crossover will be invoked on the presolved model
                        using crushed start vectors. If you set the parameter
                        to 2 and provide a basis but no start vectors, the
                        basis will be used to compute the corresponding primal
                        and dual solutions on the original model. Those
                        solutions will then be crushed and used as primal and
                        dual start vectors for the crossover, which will then
                        construct a basis for the presolved model. Note that
                        for all of these settings and start combinations, no
                        barrier algorithm iterations are performed. The
                        simplex algorithms provide more warm-starting options.
                        With a parameter value of 1, simplex will start from a
                        provided basis, if available. Otherwise, it uses a
                        provided start vector to refine the crash basis it
                        computes. Primal simplex will use PStart and dual
                        simplex will use DStart in this refinement process.
                        With a value of 2, simplex will use the crushed start
                        vector on the presolved model (PStart for primal
                        simplex, DStart for dual) to refine the crash basis.
                        This is true regardless of whether the start is
                        derived from start vectors or a starting basis from
                        the original model. The difference is that if you
                        provide an advanced basis, the basis will be used to
                        compute the corresponding primal and dual solutions on
                        the original model from which the primal or dual start
                        on the presolved model will be derived. Note: Only
                        affects linear programming (LP) models
  -LazyConstraints LAZYCONSTRAINTS, --LazyConstraints LAZYCONSTRAINTS
                        [env var: LAZYCONSTRAINTS] (default: 0) (type: int):
                        Programs that add lazy constraints through a callback
                        must set this parameter to value 1. The parameter
                        tells the Gurobi algorithms to avoid certain
                        reductions and transformations that are incompatible
                        with lazy constraints. Note that if you use lazy
                        constraints by setting the Lazy attribute (and not
                        through a callback), there’s no need to set this
                        parameter. Note: Only affects mixed integer
                        programming (MIP) models
  -LicenseID LICENSEID, --LicenseID LICENSEID
                        [env var: LICENSEID] (default: 0) (type: int): When
                        using a WLS license, set this parameter to the license
                        ID. You can retrieve this value from your account on
                        the Gurobi Web License Manager site.
  -LiftProjectCuts LIFTPROJECTCUTS, --LiftProjectCuts LIFTPROJECTCUTS
                        [env var: LIFTPROJECTCUTS] (default: -1) (type: int):
                        Controls lift-and-project cut generation. Use 0 to
                        disable these cuts, 1 for moderate cut generation, or
                        2 for aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -LogFile LOGFILE, --LogFile LOGFILE
                        [env var: LOGFILE] (default: ) (type: str): Determines
                        the name of the Gurobi log file. Modifying this
                        parameter closes the current log file and opens the
                        specified file. Use an empty string for no log file.
                        Use OutputFlag to shut off all logging.
  -LogToConsole LOGTOCONSOLE, --LogToConsole LOGTOCONSOLE
                        [env var: LOGTOCONSOLE] (default: 1) (type: int):
                        Enables or disables console logging. Note that this
                        refers to the output of Gurobi to the console. This
                        includes the various display and print functions
                        provided by the API in interactive environments. Use
                        OutputFlag to shut off all logging.
  -MIPFocus MIPFOCUS, --MIPFocus MIPFOCUS
                        [env var: MIPFOCUS] (default: 0) (type: int): The
                        MIPFocus parameter allows you to modify your high-
                        level solution strategy, depending on your goals. By
                        default, the Gurobi MIP solver strikes a balance
                        between finding new feasible solutions and proving
                        that the current solution is optimal. If you are more
                        interested in finding feasible solutions quickly, you
                        can select "MIPFocus=1". If you believe the solver is
                        having no trouble finding good quality solutions, and
                        wish to focus more attention on proving optimality,
                        select "MIPFocus=2". If the best objective bound is
                        moving very slowly (or not at all), you may want to
                        try "MIPFocus=3" to focus on the bound. Note: Only
                        affects mixed integer programming (MIP) models
  -MIPGap MIPGAP, --MIPGap MIPGAP
                        [env var: MIPGAP] (default: 0.0001) (type: float): The
                        MIP solver will terminate (with an optimal result)
                        when the gap between the lower and upper objective
                        bound is less than MIPGap times the absolute value of
                        the incumbent objective value. More precisely, if z_P
                        is the primal objective bound (i.e., the incumbent
                        objective value, which is the upper bound for
                        minimization problems), and z_D is the dual objective
                        bound (i.e., the lower bound for minimization
                        problems), then the MIP gap is defined as gap = \vert
                        z_P - z_D\vert / \vert z_P\vert. Note that if z_P =
                        z_D = 0, then the gap is defined to be zero. If z_P =
                        0 and z_D \neq 0, the gap is defined to be infinity.
                        For most models, z_P and z_D will have the same sign
                        throughout the optimization process, and then the gap
                        is monotonically decreasing. But if z_P and z_D have
                        opposite signs, the relative gap may increase after
                        finding a new incumbent solution, even though the
                        absolute gap \vert z_P - z_D\vert has decreased. Note:
                        Only affects mixed integer programming (MIP) models
  -MIPGapAbs MIPGAPABS, --MIPGapAbs MIPGAPABS
                        [env var: MIPGAPABS] (default: 1e-10) (type: float):
                        The MIP solver will terminate (with an optimal result)
                        when the gap between the lower and upper objective
                        bound is less than MIPGapAbs. Note: Only affects mixed
                        integer programming (MIP) models
  -MIPSepCuts MIPSEPCUTS, --MIPSepCuts MIPSEPCUTS
                        [env var: MIPSEPCUTS] (default: -1) (type: int):
                        Controls MIP separation cut generation. Use 0 to
                        disable these cuts, 1 for moderate cut generation, or
                        2 for aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -MIQCPMethod MIQCPMETHOD, --MIQCPMethod MIQCPMETHOD
                        [env var: MIQCPMETHOD] (default: -1) (type: int):
                        Controls the method used to solve MIQCP models. Value
                        1 uses a linearized, outer-approximation approach,
                        while value 0 solves continuous QCP relaxations at
                        each node. The default setting (-1) chooses
                        automatically. Note: Only affects MIQCP models
  -MIRCuts MIRCUTS, --MIRCuts MIRCUTS
                        [env var: MIRCUTS] (default: -1) (type: int): Controls
                        Mixed Integer Rounding (MIR) cut generation. Use 0 to
                        disable these cuts, 1 for moderate cut generation, or
                        2 for aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -MarkowitzTol MARKOWITZTOL, --MarkowitzTol MARKOWITZTOL
                        [env var: MARKOWITZTOL] (default: 0.0078125) (type:
                        float): The Markowitz tolerance is used to limit
                        numerical error in the simplex algorithm.
                        Specifically, larger values reduce the error
                        introduced in the simplex basis factorization. A
                        larger value may avoid numerical problems in rare
                        situations, but it will also harm performance.
  -MemLimit MEMLIMIT, --MemLimit MEMLIMIT
                        [env var: MEMLIMIT] (default: 1e+100) (type: float):
                        Limits the total amount of memory (in GB, i.e., 10^9
                        bytes) available to Gurobi. If more is needed, Gurobi
                        will fail with an OUT_OF_MEMORY error. Note that it is
                        not possible to retrieve solution information after an
                        error termination. Thus, the behavior of this
                        parameter is different from that of other termination
                        criteria like SoftMemLimit, TimeLimit, or NodeLimit,
                        where the solver will terminate with a Status Code and
                        solution information will still be available. One
                        advantage of using this parameter rather than the
                        similar SoftMemLimit is that MemLimit is checked after
                        every memory allocation, so Gurobi will terminate at
                        precisely the point where the limit is exceeded. Note
                        that allocated memory is tracked across all models
                        within a Gurobi environment. If you create multiple
                        models in one environment, these additional models
                        will count towards overall memory consumption. Memory
                        usage is also tracked across all threads. One
                        consequence of this is that termination may be non-
                        deterministic for multi-threaded runs.
  -Method METHOD, --Method METHOD
                        [env var: METHOD] (default: -1) (type: int): Algorithm
                        used to solve continuous models or the initial root
                        relaxation of a MIP model. Options are: *
                        -1=automatic, * 0=primal simplex, * 1=dual simplex, *
                        2=barrier, * 3=concurrent, * 4=deterministic
                        concurrent, and * 5=deterministic concurrent simplex
                        (deprecated; see ConcurrentMethod). Available settings
                        and default behaviour depend on the model type or the
                        type of the initial root relaxation. In the current
                        release, the default Automatic ("Method=-1") setting
                        will typically choose non- deterministic concurrent
                        ("Method=3") for an LP, barrier ("Method=2") for a QP
                        or QCP, and dual ("Method=1") for the MIP root
                        relaxation. If the size of the MIP root relaxation is
                        large, then it will often select deterministic
                        concurrent ("Method=4") or deterministic concurrent
                        simplex ("Method=5"). Concurrent methods aren’t
                        available for QP and QCP. Only the simplex and barrier
                        algorithms are available for continuous QP models. If
                        you select barrier ("Method=2") to solve the root of
                        an MIQP model, then you need to also select barrier
                        for the node relaxations (i.e. set NodeMethod=2). Only
                        barrier is available for continuous QCP models.
                        However if you choose LP relaxations for solving
                        MIQCP, you can also select the simplex algorithms
                        ("Method=0" or "Method=1"). Concurrent optimizers run
                        multiple solvers on multiple threads simultaneously
                        and choose the one that finishes first. The solvers
                        that are run concurrently can be controlled with the
                        ConcurrentMethod parameter. The deterministic options
                        ("Method=4" and "Method=5") give the exact same result
                        each time, while the non-deterministic option
                        ("Method=3") is often faster but can produce different
                        optimal bases when run multiple times. The default
                        setting is rarely significantly slower than the best
                        possible setting, so you generally won’t see a big
                        gain from changing this parameter. There are classes
                        of models where one particular algorithm is
                        consistently fastest, though, so you may want to
                        experiment with different options when confronted with
                        a particularly difficult model. Note that if memory is
                        tight on an LP model, you should consider using the
                        dual simplex method ("Method=1"). The concurrent
                        optimizer, which is typically chosen when using the
                        default setting, consumes a lot more memory than dual
                        simplex alone. In multiobjective LP optimization: *
                        The first objective is solved using LP defaults. It
                        can be set by the user using the "Method" parameter. *
                        Subsequent objectives are solved by default using
                        primal simplex to allow for warm starting. The
                        algorithm used here can be controlled using
                        MultiObjMethod.
  -MinRelNodes MINRELNODES, --MinRelNodes MINRELNODES
                        [env var: MINRELNODES] (default: -1) (type: int):
                        Number of nodes to explore in the minimum relaxation
                        heuristic. This heuristic is quite expensive, and
                        generally produces poor quality solutions. You should
                        generally only use it if other means, including
                        exploration of the tree with default settings, fail to
                        produce a feasible solution. The default value
                        automatically chooses whether to apply the heuristic.
                        It will only rarely choose to do so. Note: Only
                        affects mixed integer programming (MIP) models
  -MixingCuts MIXINGCUTS, --MixingCuts MIXINGCUTS
                        [env var: MIXINGCUTS] (default: -1) (type: int):
                        Controls Mixing cut generation. Use 0 to disable these
                        cuts, 1 for moderate cut generation, or 2 for
                        aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -ModKCuts MODKCUTS, --ModKCuts MODKCUTS
                        [env var: MODKCUTS] (default: -1) (type: int):
                        Controls mod-k cut generation. Use 0 to disable these
                        cuts, 1 for moderate cut generation, or 2 for
                        aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -MultiObjMethod MULTIOBJMETHOD, --MultiObjMethod MULTIOBJMETHOD
                        [env var: MULTIOBJMETHOD] (default: -1) (type: int):
                        When solving a continuous multi-objective model using
                        a hierarchical approach, the model is solved once for
                        each objective. The algorithm used to solve for the
                        highest priority objective is controlled by the Method
                        parameter. This parameter determines the algorithm
                        used to solve for subsequent objectives. As with the
                        Method parameters, values of 0 and 1 use primal and
                        dual simplex, respectively. A value of 2 indicates
                        that warm-start information from previous solves
                        should be discarded, and the model should be solved
                        from scratch (using the algorithm indicated by the
                        Method parameter). The default setting of -1 usually
                        chooses primal simplex. Note: Only affects continuous
                        multi-objective models
  -MultiObjPre MULTIOBJPRE, --MultiObjPre MULTIOBJPRE
                        [env var: MULTIOBJPRE] (default: -1) (type: int):
                        Controls the initial presolve level used for multi-
                        objective models. Value 0 disables the initial
                        presolve, value 1 applies presolve conservatively, and
                        value 2 applies presolve aggressively. The default -1
                        value usually applies presolve conservatively.
                        Aggressive presolve may increase the chance of the
                        objective values being slightly different than those
                        for other options. Note: Only affects multi-objective
                        models
  -NLPHeur NLPHEUR, --NLPHeur NLPHEUR
                        [env var: NLPHEUR] (default: 1) (type: int): The NLP
                        heuristic uses a non-linear barrier solver to find
                        feasible solutions to non-convex quadratic models. It
                        can often find solutions much more quickly than the
                        alternative, but in some cases it can consume
                        significant runtime without producing a solution. By
                        default, the heuristic is enabled (1). Use 0 to
                        disable the heuristic. Note: Only affects models with
                        nonconvex quadratic expressions in the objective or
                        constraints
  -NetworkAlg NETWORKALG, --NetworkAlg NETWORKALG
                        [env var: NETWORKALG] (default: -1) (type: int):
                        Controls whether to use network simplex. Value 0
                        doesn’t use network simplex. Value 1 indicates to use
                        network simplex, if an LP is a network problem. The
                        default -1 value chooses automatically. Note: Only
                        affects linear programming (LP) models
  -NetworkCuts NETWORKCUTS, --NetworkCuts NETWORKCUTS
                        [env var: NETWORKCUTS] (default: -1) (type: int):
                        Controls network cut generation. Use 0 to disable
                        these cuts, 1 for moderate cut generation, or 2 for
                        aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -NoRelHeurTime NORELHEURTIME, --NoRelHeurTime NORELHEURTIME
                        [env var: NORELHEURTIME] (default: 0.0) (type: float):
                        Limits the amount of time (in seconds) spent in the
                        NoRel heuristic. This heuristic searches for high-
                        quality feasible solutions before solving the root
                        relaxation. It can be quite useful on models where the
                        root relaxation is particularly expensive. Note that
                        this parameter will introduce non-determinism -
                        different runs may take different paths. Use the
                        NoRelHeurWork parameter for deterministic results.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -NoRelHeurWork NORELHEURWORK, --NoRelHeurWork NORELHEURWORK
                        [env var: NORELHEURWORK] (default: 0.0) (type: float):
                        Limits the amount of work spent in the NoRel
                        heuristic. This heuristic searches for high-quality
                        feasible solutions before solving the root relaxation.
                        It can be quite useful on models where the root
                        relaxation is particularly expensive. The work metric
                        used in this parameter is tough to define precisely. A
                        single unit corresponds to roughly a second, but this
                        will depend on the machine, the core count, and in
                        some cases the model. You may need to experiment to
                        find a good setting for your model. Note: Only affects
                        mixed integer programming (MIP) models
  -NodeLimit NODELIMIT, --NodeLimit NODELIMIT
                        [env var: NODELIMIT] (default: 1e+100) (type: float):
                        Limits the number of MIP nodes explored. Optimization
                        returns with an NODE_LIMIT status if the limit is
                        exceeded. Note that if multiple threads are used for
                        the optimization, the actual number of explored nodes
                        may be slightly larger than the set limit. This
                        parameter is callback settable. It can be changed from
                        within a callback when the "where" value is
                        "PRESOLVED", "SIMPLEX", "MIP", "MIPSOL", "MIPNODE",
                        "BARRIER", or "MULTIOBJ" (see the Callback Codes
                        section for more information). How to do that for the
                        different APIs is illustrated here. In case of a
                        remote server, the change of a parameter from within a
                        callback may not be taken into account immediately.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -NodeMethod NODEMETHOD, --NodeMethod NODEMETHOD
                        [env var: NODEMETHOD] (default: -1) (type: int):
                        Algorithm used for MIP node relaxations (except for
                        the initial root node relaxation, see Method). Options
                        are: -1=automatic, 0=primal simplex, 1=dual simplex,
                        and 2=barrier. Note that barrier is not an option for
                        MIQP node relaxations. Note: Only affects mixed
                        integer programming (MIP) models
  -NodefileDir NODEFILEDIR, --NodefileDir NODEFILEDIR
                        [env var: NODEFILEDIR] (default: .) (type: str):
                        Determines the directory into which nodes are written
                        when node memory usage exceeds the specified
                        NodefileStart value. Note: Only affects mixed integer
                        programming (MIP) models
  -NodefileStart NODEFILESTART, --NodefileStart NODEFILESTART
                        [env var: NODEFILESTART] (default: 1e+100) (type:
                        float): If you find that the Gurobi Optimizer exhausts
                        memory when solving a MIP, you should modify the
                        "NodefileStart" parameter. When the amount of memory
                        used to store nodes (measured in GB, i.e., 10^9 bytes)
                        exceeds the specified parameter value, nodes are
                        compressed and written to disk. We recommend a setting
                        of "0.5", but you may wish to choose a different
                        value, depending on the memory available in your
                        machine. By default, nodes are written to the current
                        working directory. The NodefileDir parameter can be
                        used to choose a different location. If you still
                        exhaust memory after setting the "NodefileStart"
                        parameter to a small value, you should try limiting
                        the thread count. Each thread in parallel MIP requires
                        a copy of the model, as well as several other large
                        data structures. Reducing the Threads parameter can
                        sometimes significantly reduce memory usage. Note:
                        Only affects mixed integer programming (MIP) models
  -NonConvex NONCONVEX, --NonConvex NONCONVEX
                        [env var: NONCONVEX] (default: -1) (type: int): Sets
                        the strategy for handling non-convex quadratic
                        objectives or non- convex quadratic constraints. With
                        setting 0, an error is reported if the original user
                        model contains non-convex quadratic constructs (unless
                        Q matrix linearization, as controlled by the
                        PreQLinearize parameter, removes the non-convexity).
                        With setting 1, an error is reported if non-convex
                        quadratic constructs could not be discarded or
                        linearized during presolve. With setting 2, non-convex
                        quadratic problems are solved by translating them into
                        bilinear form and applying spatial branching. The
                        default -1 setting is currently almost equivalent to
                        2, except that it takes less care to avoid presolve
                        reductions that might transform a convex constraint
                        into one that can no longer be detected to be convex,
                        and thus can sometimes perform more presolve
                        reductions. Note: Only affects QP, QCP, MIQP, and
                        MIQCP models
  -NormAdjust NORMADJUST, --NormAdjust NORMADJUST
                        [env var: NORMADJUST] (default: -1) (type: int):
                        Chooses from among multiple pricing norm variants. The
                        details of how this parameter affects the simplex
                        pricing algorithm are subtle and difficult to
                        describe, so we’ve simply labeled the options 0
                        through 3. The default value of -1 chooses
                        automatically. Changing the value of this parameter
                        rarely produces a significant benefit.
  -NumericFocus NUMERICFOCUS, --NumericFocus NUMERICFOCUS
                        [env var: NUMERICFOCUS] (default: 0) (type: int): The
                        NumericFocus parameter controls the degree to which
                        the code attempts to detect and manage numerical
                        issues. The default setting (0) makes an automatic
                        choice, with a slight preference for speed. Settings
                        1-3 increasingly shift the focus towards being more
                        careful in numerical computations. With higher values,
                        the code will spend more time checking the numerical
                        accuracy of intermediate results, and it will employ
                        more expensive techniques in order to avoid potential
                        numerical issues.
  -OBBT OBBT, --OBBT OBBT
                        [env var: OBBT] (default: -1) (type: int): Value 0
                        disables optimality-based bound tightening (OBBT).
                        Levels 1-3 describe the amount of work allowed for
                        OBBT ranging from moderate to aggressive. The default
                        -1 value is an automatic setting which chooses a
                        rather moderate setting.
  -ObjNumber OBJNUMBER, --ObjNumber OBJNUMBER
                        [env var: OBJNUMBER] (default: 0) (type: int): When
                        working with multiple objectives, this parameter
                        selects the index of the objective you want to work
                        with. When you query or modify an attribute associated
                        with multiple objectives (ObjN, ObjNVal, etc.), the
                        ObjNumber parameter will determine which objective is
                        actually affected. The value of this parameter should
                        be less than the value of the NumObj attribute (which
                        captures the number of objectives in the model).
                        Please refer to the discussion of Multiple Objectives
                        for more information on the use of alternative
                        objectives.
  -ObjScale OBJSCALE, --ObjScale OBJSCALE
                        [env var: OBJSCALE] (default: 0.0) (type: float): When
                        positive, divides the model objective by the specified
                        value to avoid numerical issues that may result from
                        very large or very small objective coefficients. The
                        default value of 0 decides on the scaling
                        automatically. A value less than zero uses the maximum
                        coefficient to the specified power as the scaling (so
                        "ObjScale=-0.5" would scale by the square root of the
                        largest objective coefficient). Note that objective
                        scaling can lead to large dual violations on the
                        original, unscaled objective when the optimality
                        tolerance with the scaled objective is barely
                        satisfied, so it should be used sparingly. Note also
                        that scaling will be more effective when all objective
                        coefficients are of similar orders of magnitude, as
                        opposed to objectives with a wide range of
                        coefficients. In the latter case, consider using the
                        Multiple Objectives feature instead.
  -OptimalityTol OPTIMALITYTOL, --OptimalityTol OPTIMALITYTOL
                        [env var: OPTIMALITYTOL] (default: 1e-06) (type:
                        float): For the simplex algorithm and crossover,
                        reduced costs must all be smaller than OptimalityTol
                        in the improving direction in order for a model to be
                        declared optimal.
  -OutputFlag OUTPUTFLAG, --OutputFlag OUTPUTFLAG
                        [env var: OUTPUTFLAG] (default: 1) (type: int):
                        Enables or disables solver output. Use LogFile and
                        LogToConsole for finer-grain control. Setting
                        OutputFlag to 0 is equivalent to setting LogFile to
                        """" and LogToConsole to 0. Note that server-side
                        logging is always active for remote jobs run on Gurobi
                        Instant Cloud, Compute Server, or Cluster Manager.
                        This is not impacted by any user parameter settings.
  -PSDCuts PSDCUTS, --PSDCuts PSDCUTS
                        [env var: PSDCUTS] (default: -1) (type: int): Controls
                        PSD cut generation. Use 0 to disable these cuts, 1 for
                        moderate cut generation, or 2 for aggressive cut
                        generation. The default -1 value chooses
                        automatically. Overrides the Cuts parameter. Note:
                        Only affects models with nonconvex quadratic
                        expressions in the objective or constraints
  -PSDTol PSDTOL, --PSDTol PSDTOL
                        [env var: PSDTOL] (default: 1e-06) (type: float): Sets
                        a limit on the amount of diagonal perturbation that
                        the optimizer is allowed to perform on a Q matrix in
                        order to correct minor PSD violations. If a larger
                        perturbation is required, the optimizer will terminate
                        with a Q_NOT_PSD error. Note: Only affects QP, QCP,
                        MIQP, and MIQCP models
  -PartitionPlace PARTITIONPLACE, --PartitionPlace PARTITIONPLACE
                        [env var: PARTITIONPLACE] (default: 15) (type: int):
                        Setting the Partition attribute on at least one
                        variable in a model enables the partitioning
                        heuristic, which uses large-neighborhood search to try
                        to improve the current incumbent solution. This
                        parameter determines where that heuristic runs.
                        Options are: * Before the root relaxation is solved
                        (16) * At the start of the root cut loop (8) * At the
                        end of the root cut loop (4) * At the nodes of the
                        branch-and-cut search (2) * When the branch-and-cut
                        search terminates (1) The parameter value is a bit
                        vector, where each bit turns the heuristic on or off
                        at that place. The numerical values next to the
                        options listed above indicate which bit controls the
                        corresponding option. Thus, for example, to enable the
                        heuristic at the beginning and end of the root cut
                        loop (and nowhere else), you would set the 8 bit and
                        the 4 bit to 1, which would correspond to a parameter
                        value of 12. The default value of 15 indicates that we
                        enable every option except the first one listed above.
  -PerturbValue PERTURBVALUE, --PerturbValue PERTURBVALUE
                        [env var: PERTURBVALUE] (default: 0.0002) (type:
                        float): Magnitude of the simplex perturbation. Note
                        that perturbation is only applied when progress has
                        stalled, so the parameter will often have no effect.
  -PoolGap POOLGAP, --PoolGap POOLGAP
                        [env var: POOLGAP] (default: 1e+100) (type: float):
                        Determines how large a (relative) gap to tolerate in
                        stored solutions. When this parameter is set to a non-
                        default value, solutions whose objective values exceed
                        that of the best known solution by more than the
                        specified (relative) gap are discarded. For example,
                        if the MIP solver has found a solution at objective
                        100, then a setting of "PoolGap=0.2" would discard
                        solutions with objective worse than 120 (assuming a
                        minimization objective). Note: Only affects mixed
                        integer programming (MIP) models
  -PoolGapAbs POOLGAPABS, --PoolGapAbs POOLGAPABS
                        [env var: POOLGAPABS] (default: 1e+100) (type: float):
                        Determines how large a (absolute) gap to tolerate in
                        stored solutions. When this parameter is set to a non-
                        default value, solutions whose objective values exceed
                        that of the best known solution by more than the
                        specified (absolute) gap are discarded. For example,
                        if the MIP solver has found a solution at objective
                        100, then a setting of "PoolGapAbs=20" would discard
                        solutions with objective worse than 120 (assuming a
                        minimization objective). Note: Only affects mixed
                        integer programming (MIP) models
  -PoolSearchMode POOLSEARCHMODE, --PoolSearchMode POOLSEARCHMODE
                        [env var: POOLSEARCHMODE] (default: 0) (type: int):
                        Selects different modes for exploring the MIP search
                        tree. With the default setting ("PoolSearchMode=0"),
                        the MIP solver tries to find an optimal solution to
                        the model. It keeps other solutions found along the
                        way, but those are incidental. By setting this
                        parameter to a non- default value, the MIP search will
                        continue after the optimal solution has been found in
                        order to find additional, high-quality solutions. With
                        a non-default value ("PoolSearchMode=1" or
                        "PoolSearchMode=2"), the MIP solver will try to find
                        "n" solutions, where "n" is determined by the value of
                        the PoolSolutions parameter. With a setting of 1,
                        there are no guarantees about the quality of the extra
                        solutions, while with a setting of 2, the solver will
                        find the "n" best solutions. The cost of the solve
                        will increase with increasing values of this
                        parameter. Once optimization is complete, the
                        PoolObjBound attribute can be used to evaluate the
                        quality of the solutions that were found. For example,
                        a value of "PoolObjBound=100" indicates that there are
                        no other solutions with objective better 100, and thus
                        that any known solutions with objective better than
                        100 are better than any as-yet undiscovered solutions.
                        See Solution Pool for more information about solution
                        pools, including subtleties and limitations. Note:
                        Only affects mixed integer programming (MIP) models
  -PoolSolutions POOLSOLUTIONS, --PoolSolutions POOLSOLUTIONS
                        [env var: POOLSOLUTIONS] (default: 10) (type: int):
                        Determines how many MIP solutions are stored. For the
                        default value of PoolSearchMode, these are just the
                        solutions that are found along the way in the process
                        of exploring the MIP search tree. For other values of
                        PoolSearchMode, this parameter sets a target for how
                        many solutions to find, so larger values will impact
                        performance. Note: Only affects mixed integer
                        programming (MIP) models
  -PreCrush PRECRUSH, --PreCrush PRECRUSH
                        [env var: PRECRUSH] (default: 0) (type: int): Shuts
                        off a few reductions in order to allow presolve to
                        transform any constraint on the original model into an
                        equivalent constraint on the presolved model. You
                        should consider setting this parameter to 1 if you are
                        using callbacks to add your own cuts. A cut that
                        cannot be applied to the presolved model will be
                        silently ignored. The impact on the size of the
                        presolved problem is usually small.
  -PreDepRow PREDEPROW, --PreDepRow PREDEPROW
                        [env var: PREDEPROW] (default: -1) (type: int):
                        Controls the presolve dependent row reduction, which
                        eliminates linearly dependent constraints from the
                        constraint matrix. The default setting (-1) applies
                        the reduction to continuous models but not to MIP
                        models. Setting 0 turns the reduction off for all
                        models. Setting 1 turns it on for all models.
  -PreDual PREDUAL, --PreDual PREDUAL
                        [env var: PREDUAL] (default: -1) (type: int): Controls
                        whether presolve forms the dual of a continuous model.
                        Depending on the structure of the model, solving the
                        dual can reduce overall solution time. The default
                        setting uses a heuristic to decide. Setting 0 forbids
                        presolve from forming the dual, while setting 1 forces
                        it to take the dual. Setting 2 employs a more
                        expensive heuristic that forms both the presolved
                        primal and dual models (on two threads), and
                        heuristically chooses one of them. Note: Mainly
                        affects LP, QP, and QCP models, but it is also used
                        for the initial root relaxation of mixed integer
                        programs.
  -PreMIQCPForm PREMIQCPFORM, --PreMIQCPForm PREMIQCPFORM
                        [env var: PREMIQCPFORM] (default: -1) (type: int):
                        Determines the format of the presolved version of an
                        MIQCP model. Option 0 leaves the model in MIQCP form,
                        so the branch-and-cut algorithm will operate on a
                        model with arbitrary quadratic constraints. Option 1
                        always transforms the model into MISOCP form;
                        quadratic constraints are transformed into second-
                        order cone constraints. Option 2 always transforms the
                        model into disaggregated MISOCP form; quadratic
                        constraints are transformed into rotated cone
                        constraints, where each rotated cone contains two
                        terms and involves only three variables. The default
                        setting (-1) choose automatically. The automatic
                        setting works well, but there are cases where forcing
                        a different form can be beneficial. Note: Only affects
                        MIQCP models
  -PrePasses PREPASSES, --PrePasses PREPASSES
                        [env var: PREPASSES] (default: -1) (type: int): Limits
                        the number of passes performed by presolve. The
                        default setting (-1) chooses the number of passes
                        automatically. You should experiment with this
                        parameter when you find that presolve is consuming a
                        large fraction of total solve time.
  -PreQLinearize PREQLINEARIZE, --PreQLinearize PREQLINEARIZE
                        [env var: PREQLINEARIZE] (default: -1) (type: int):
                        Controls presolve Q matrix linearization. Binary
                        variables in quadratic expressions provide some
                        freedom to state the same expression in multiple
                        different ways. Options 1 and 2 of this parameter
                        attempt to linearize quadratic constraints or a
                        quadratic objective, replacing quadratic terms with
                        linear terms, using additional variables and linear
                        constraints. This can potentially transform an MIQP or
                        MIQCP model into an MILP. Option 1 focuses on
                        producing an MILP reformulation with a strong LP
                        relaxation, with a goal of limiting the size of the
                        MIP search tree. Option 2 aims for a compact
                        reformulation, with a goal of reducing the cost of
                        each node. Option 0 attempts to leave Q matrices
                        unmodified; it won’t add variables or constraints, but
                        it may still perform adjustments on quadratic
                        objective functions to make them positive semi-
                        definite (PSD). The default setting (-1) chooses
                        automatically. Note: Only affects MIQP and MIQCP
                        models
  -PreSOS1BigM PRESOS1BIGM, --PreSOS1BigM PRESOS1BIGM
                        [env var: PRESOS1BIGM] (default: -1.0) (type: float):
                        Controls the automatic reformulation of SOS1
                        constraints into binary form. SOS1 constraints are
                        often handled more efficiently using a binary
                        representation. The reformulation often requires
                        "big-M" values to be introduced as coefficients. This
                        parameter specifies the largest "big-M" that can be
                        introduced by presolve when performing this
                        reformulation. Larger values increase the chances that
                        an SOS1 constraint will be reformulated, but very
                        large values (e.g., 1e8) can lead to numerical issues.
                        The default value of -1 chooses a threshold
                        automatically. You should set the parameter to 0 to
                        shut off SOS1 reformulation entirely, or a large value
                        to force reformulation. Please refer to this section
                        for more information on SOS constraints.
  -PreSOS1Encoding PRESOS1ENCODING, --PreSOS1Encoding PRESOS1ENCODING
                        [env var: PRESOS1ENCODING] (default: -1) (type: int):
                        Controls the automatic reformulation of SOS1
                        constraints. Such constraints can be handled directly
                        by the MIP branch-and-cut algorithm, but they are
                        often handled more efficiently by reformulating them
                        using binary or integer variables. There are several
                        diffent ways to perform this reformulation; they
                        differ in their size and strength. Smaller
                        reformulations add fewer variables and constraints to
                        the model. Stronger reformulations reduce the number
                        of branch-and-cut nodes required to solve the
                        resulting model. Options 0 and 1 of this parameter
                        encode an SOS1 constraint using a formulation whose
                        size is linear in the number of SOS members. Option 0
                        uses a so-called multiple choice model. It usually
                        produces an LP relaxation that is easier to solve.
                        Option 1 uses an incremental model. It often gives a
                        stronger representation, reducing the amount of
                        branching required to solve harder problems. Options 2
                        and 3 of this parameter encode the SOS1 using a
                        formulation of logarithmic size. They both only apply
                        when all the variables in the SOS1 are non-negative.
                        Option 3 additionally requires that the sum of the
                        variables in the SOS1 is equal to 1. Logarithmic
                        formulations are often advantageous when the SOS1
                        constraint has a large number of members. Option 2
                        focuses on a formulation whose LP relaxation is easier
                        to solve, while option 3 has better branching
                        behavior. The default value of -1 chooses a
                        reformulation for each SOS1 constraint automatically.
                        Note that the reformulation of SOS1 constraints is
                        also influenced by the PreSOS1BigM parameter. To shut
                        off the reformulation entirely you should set that
                        parameter to 0. Please refer to this section for more
                        information on SOS constraints.
  -PreSOS2BigM PRESOS2BIGM, --PreSOS2BigM PRESOS2BIGM
                        [env var: PRESOS2BIGM] (default: -1.0) (type: float):
                        Controls the automatic reformulation of SOS2
                        constraints into binary form. SOS2 constraints are
                        often handled more efficiently using a binary
                        representation. The reformulation often requires
                        "big-M" values to be introduced as coefficients. This
                        parameter specifies the largest "big-M" that can be
                        introduced by presolve when performing this
                        reformulation. Larger values increase the chances that
                        an SOS2 constraint will be reformulated, but very
                        large values (e.g., 1e8) can lead to numerical issues.
                        The default value of -1 chooses a threshold
                        automatically. You should set the parameter to 0 to
                        shut off SOS2 reformulation entirely, or a large value
                        to force reformulation. Please refer to this section
                        for more information on SOS constraints.
  -PreSOS2Encoding PRESOS2ENCODING, --PreSOS2Encoding PRESOS2ENCODING
                        [env var: PRESOS2ENCODING] (default: -1) (type: int):
                        Controls the automatic reformulation of SOS2
                        constraints. Such constraints can be handled directly
                        by the MIP branch-and-cut algorithm, but they are
                        often handled more efficiently by reformulating them
                        using binary or integer variables. There are several
                        diffent ways to perform this reformulation; they
                        differ in their size and strength. Smaller
                        reformulations add fewer variables and constraints to
                        the model. Stronger reformulations reduce the number
                        of branch-and-cut nodes required to solve the
                        resulting model. Options 0 and 1 of this parameter
                        encode an SOS2 constraint using a formulation whose
                        size is linear in the number of SOS members. Option 0
                        uses a so-called multiple choice model. It usually
                        produces an LP relaxation that is easier to solve.
                        Option 1 uses an incremental model. It often gives a
                        stronger representation, reducing the amount of
                        branching required to solve harder problems. Options 2
                        and 3 of this parameter encode the SOS2 using a
                        formulation of logarithmic size. They both only apply
                        when all the variables in the SOS2 are non-negative.
                        Option 3 additionally requires that the sum of the
                        variables in the SOS2 is equal to 1. Logarithmic
                        formulations are often advantageous when the SOS2
                        constraint has a large number of members. Option 2
                        focuses on a formulation whose LP relaxation is easier
                        to solve, while option 3 has better branching
                        behavior. The default value of -1 chooses a
                        reformulation for each SOS2 constraint automatically.
                        Note that the reformulation of SOS2 constraints is
                        also influenced by the PreSOS2BigM parameter. To shut
                        off the reformulation entirely you should set that
                        parameter to 0. Please refer to this section for more
                        information on SOS constraints.
  -PreSparsify PRESPARSIFY, --PreSparsify PRESPARSIFY
                        [env var: PRESPARSIFY] (default: -1) (type: int):
                        Controls the presolve sparsify reduction. This
                        reduction can sometimes significantly reduce the
                        number of non-zero values in the presolved model.
                        Value 0 shuts off the reduction, while value 1 forces
                        it on for mixed integer programming (MIP) models and
                        value 2 forces it on for all types of models,
                        including linear programming (LP) models, and MIP
                        relaxations. The default value of -1 chooses
                        automatically.
  -Presolve PRESOLVE, --Presolve PRESOLVE
                        [env var: PRESOLVE] (default: -1) (type: int):
                        Controls the presolve level. A value of -1 corresponds
                        to an automatic setting. Other options are off (0),
                        conservative (1), or aggressive (2). More aggressive
                        application of presolve takes more time, but can
                        sometimes lead to a significantly tighter model.
  -ProjImpliedCuts PROJIMPLIEDCUTS, --ProjImpliedCuts PROJIMPLIEDCUTS
                        [env var: PROJIMPLIEDCUTS] (default: -1) (type: int):
                        Controls projected implied bound cut generation. Use 0
                        to disable these cuts, 1 for moderate cut generation,
                        or 2 for aggressive cut generation. The default -1
                        value chooses automatically. Overrides the Cuts
                        parameter. Note: Only affects mixed integer
                        programming (MIP) models
  -PumpPasses PUMPPASSES, --PumpPasses PUMPPASSES
                        [env var: PUMPPASSES] (default: -1) (type: int):
                        Number of passes of the feasibility pump heuristic.
                        This heuristic is quite expensive, and generally
                        produces poor quality solutions. You should generally
                        only use it if other means, including exploration of
                        the tree with default settings, fail to produce a
                        feasible solution. This parameter is callback
                        settable. It can be changed from within a callback
                        when the "where" value is "PRESOLVED", "SIMPLEX",
                        "MIP", "MIPSOL", "MIPNODE", "BARRIER", or "MULTIOBJ"
                        (see the Callback Codes section for more information).
                        How to do that for the different APIs is illustrated
                        here. In case of a remote server, the change of a
                        parameter from within a callback may not be taken into
                        account immediately. Note: Only affects mixed integer
                        programming (MIP) models
  -QCPDual QCPDUAL, --QCPDual QCPDUAL
                        [env var: QCPDUAL] (default: 0) (type: int):
                        Determines whether dual variable values are computed
                        for QCP models. Computing them can add significant
                        time to the optimization, so you should only set this
                        parameter to 1 if you need them.
  -Quad QUAD, --Quad QUAD
                        [env var: QUAD] (default: -1) (type: int): Enables or
                        disables quad precision computation in simplex. The -1
                        default setting allows the algorithm to decide. Quad
                        precision can sometimes help solve numerically
                        challenging models, but it can also significantly
                        increase runtime. Quad precision is only available on
                        processors that support quadruple precision, e.g.,
                        common Intel processors. On other processors, the
                        parameter has no effect.
  -RINS RINS, --RINS RINS
                        [env var: RINS] (default: -1) (type: int): Frequency
                        of the RINS heuristic. Default value (-1) chooses
                        automatically. A value of 0 shuts off RINS. A positive
                        value "n" applies RINS at every "n-th" node of the MIP
                        search tree. Increasing the frequency of the RINS
                        heuristic shifts the focus of the MIP search away from
                        proving optimality, and towards finding good feasible
                        solutions. We recommend that you try MIPFocus,
                        ImproveStartGap, or ImproveStartTime before
                        experimenting with this parameter. Note: Only affects
                        mixed integer programming (MIP) models
  -RLTCuts RLTCUTS, --RLTCuts RLTCUTS
                        [env var: RLTCUTS] (default: -1) (type: int): Controls
                        Relaxation Linearization Technique (RLT) cut
                        generation. Use 0 to disable these cuts, 1 for
                        moderate cut generation, or 2 for aggressive cut
                        generation. The default -1 value chooses
                        automatically. Overrides the Cuts parameter. Note:
                        Only affects mixed integer programming (MIP) models
  -Record RECORD, --Record RECORD
                        [env var: RECORD] (default: 0) (type: int): Enables
                        API call recording. When enabled, Gurobi will write
                        one or more files (named "gurobi000.grbr" or similar)
                        that capture the sequence of Gurobi commands that your
                        program issued. This file can subsequently be replayed
                        using the Gurobi command-line tool. Replaying the file
                        will repeat the exact same sequence of commands, and
                        when completed will show the time spent in Gurobi API
                        routines, the time spent in Gurobi algorithms, and
                        will indicate whether any Gurobi environments or
                        models were leaked by your program. Replay files are
                        particularly useful in tech support situations. They
                        provide an easy way to relay to Gurobi tech support
                        the exact sequence of Gurobi commands that led to a
                        question or issue. This parameter must be set before
                        starting an empty environment (or in a "gurobi.env"
                        file). All Gurobi commands will be recorded until the
                        environment is freed or the program ends.
  -RelaxLiftCuts RELAXLIFTCUTS, --RelaxLiftCuts RELAXLIFTCUTS
                        [env var: RELAXLIFTCUTS] (default: -1) (type: int):
                        Controls relax-and-lift cut generation. Use 0 to
                        disable these cuts, 1 for moderate cut generation, or
                        2 for aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -ResultFile RESULTFILE, --ResultFile RESULTFILE
                        [env var: RESULTFILE] (default: ) (type: str):
                        Specifies the name of the result file to be written
                        upon completion of optimization. The type of the
                        result file is determined by the file suffix. The most
                        commonly used suffixes are ".sol" (to capture the
                        solution vector), ".bas" (to capture the simplex
                        basis), and ".mst" (to capture the solution vector on
                        the integer variables). You can also write a ".ilp"
                        file (to capture the IIS for an infeasible model), or
                        a ".mps", ".rew", ".lp", or ".rlp" file (to capture
                        the original model), or a ".dua" or ".dlp" file (to
                        capture the dual of a pure LP model). The file suffix
                        may optionally be followed by ".zip", ".gz", ".bz2",
                        ".7z" or ".xz", which produces a compressed result.
                        More information on the file formats can be found in
                        the File Format section.
  -ScaleFlag SCALEFLAG, --ScaleFlag SCALEFLAG
                        [env var: SCALEFLAG] (default: -1) (type: int):
                        Controls model scaling. By default, the rows and
                        columns of the model are scaled in order to improve
                        the numerical properties of the constraint matrix. The
                        scaling is removed before the final solution is
                        returned. Scaling typically reduces solution times,
                        but it may lead to larger constraint violations in the
                        original, unscaled model. Turning off scaling
                        ("ScaleFlag=0") can sometimes produce smaller
                        constraint violations. Choosing a different scaling
                        option can sometimes improve performance for
                        particularly numerically difficult models. Using
                        geometric mean scaling ("ScaleFlag=2") is especially
                        well suited for models with a wide range of
                        coefficients in the constraint matrix rows or columns.
                        Settings 1 and 3 are not as directly connected to any
                        specific model characteristics, so experimentation
                        with both settings may be needed to assess performance
                        impact.
  -ScenarioNumber SCENARIONUMBER, --ScenarioNumber SCENARIONUMBER
                        [env var: SCENARIONUMBER] (default: 0) (type: int):
                        When working with multiple scenarios, this parameter
                        selects the index of the scenario you want to work
                        with. When you query or modify an attribute associated
                        with multiple scenarios (ScenNLB, ScenNUB, ScenNObj,
                        ScenNRHS, etc.), the ScenarioNumber parameter will
                        determine which scenario is actually affected. The
                        value of this parameter should be less than the value
                        of the NumScenarios attribute (which captures the
                        number of scenarios in the model). Please refer to the
                        discussion of Multiple Scenarios for more information
                        on the use of alternative scenarios.
  -Seed SEED, --Seed SEED
                        [env var: SEED] (default: 0) (type: int): Modifies the
                        random number seed. This acts as a small perturbation
                        to the solver, and typically leads to different
                        solution paths.
  -ServerPassword SERVERPASSWORD, --ServerPassword SERVERPASSWORD
                        [env var: SERVERPASSWORD] (default: ) (type: str): The
                        password for connecting to the server (either a
                        Compute Server or a token server). For connecting to
                        the Remote Services cluster referred to by the
                        ComputeServer parameter, you’ll need to supply the
                        client password. Refer to the *Gurobi Remote Services
                        Reference Manual* for more information on starting
                        Compute Server jobs. Supply the token server password
                        (if needed) when connecting to the server referred to
                        by the TokenServer parameter, You must set this
                        parameter through either a "gurobi.lic" file (using
                        "PASSWORD=pwd") or an empty environment. Changing the
                        parameter after your environment has been created will
                        have no effect.
  -ServerTimeout SERVERTIMEOUT, --ServerTimeout SERVERTIMEOUT
                        [env var: SERVERTIMEOUT] (default: 60) (type: int):
                        Network time-out for Compute Server and token server
                        (in seconds). If the client program is unable to
                        contact the server for more than the specified amount
                        of time, the client will quit with a network error.
                        Refer to the *Gurobi Remote Services Reference Manual*
                        for more information on starting Compute Server jobs.
                        You must set this parameter using an empty
                        environment. Changing the parameter after your
                        environment has been created will have no effect.
  -SiftMethod SIFTMETHOD, --SiftMethod SIFTMETHOD
                        [env var: SIFTMETHOD] (default: -1) (type: int): LP
                        method used to solve sifting sub-problems. Options are
                        Automatic (-1), Primal Simplex (0), Dual Simplex (1),
                        and Barrier (2). Note that this parameter only has an
                        effect when you are using dual simplex and sifting has
                        been selected (either automatically by dual simplex,
                        or through the Sifting parameter). Changing the value
                        of this parameter rarely produces a significant
                        benefit.
  -Sifting SIFTING, --Sifting SIFTING
                        [env var: SIFTING] (default: -1) (type: int): Enables
                        or disables sifting within dual simplex. Sifting can
                        be useful for LP models where the number of variables
                        is many times larger than the number of constraints
                        (we typically only see significant benefits when the
                        ratio is 100 or more). Options are Automatic (-1), Off
                        (0), Moderate (1), and Aggressive (2). With a Moderate
                        setting, sifting will be applied to LP models and to
                        the initial root relaxation for MIP models. With an
                        Aggressive setting, sifting will be applied any time
                        dual simplex is used, including at the nodes of a MIP.
                        Note that this parameter has no effect if you aren’t
                        using dual simplex. Note also that Gurobi will ignore
                        this parameter in cases where sifting is obviously a
                        worse choice than dual simplex.
  -SimplexPricing SIMPLEXPRICING, --SimplexPricing SIMPLEXPRICING
                        [env var: SIMPLEXPRICING] (default: -1) (type: int):
                        Determines the simplex variable pricing strategy.
                        Available options are Automatic (-1), Partial Pricing
                        (0), Steepest Edge (1), Devex (2), and Quick-Start
                        Steepest Edge (3). Changing the value of this
                        parameter rarely produces a significant benefit.
  -SoftMemLimit SOFTMEMLIMIT, --SoftMemLimit SOFTMEMLIMIT
                        [env var: SOFTMEMLIMIT] (default: 1e+100) (type:
                        float): Limits the total amount of memory (in GB,
                        i.e., 10^9 bytes) available to Gurobi. If more is
                        needed, Gurobi will terminate with a MEM_LIMIT status
                        code. In contrast to the MemLimit parameter, the
                        SoftMemLimit parameter leads to a graceful exit of the
                        optimization, such that it is possible to retrieve
                        solution information afterwards or (in the case of a
                        MIP solve) resume the optimization. A disadvantage
                        compared to MemLimit is that the SoftMemLimit is only
                        checked at places where optimization can be terminated
                        gracefully, so memory use may exceed the limit between
                        these checks. Note that allocated memory is tracked
                        across all models within a Gurobi environment. If you
                        create multiple models in one environment, these
                        additional models will count towards overall memory
                        consumption. Memory usage is also tracked across all
                        threads. One consequence of this is that termination
                        may be non-deterministic for multi-threaded runs.
  -SolFiles SOLFILES, --SolFiles SOLFILES
                        [env var: SOLFILES] (default: ) (type: str): During
                        the MIP solution process, multiple incumbent solutions
                        are typically found on the path to finding a proven
                        optimal solution. Setting this parameter to a non-
                        empty string causes these solutions to be written to
                        files (in .sol format) as they are found. The MIP
                        solver will append "_n.sol" to the value of the
                        parameter to form the name of the file that contains
                        solution number n. For example, setting the parameter
                        to value "solutions/mymodel" will create files
                        "mymodel_0.sol", "mymodel_1.sol", etc., in directory
                        "solutions". Note that intermediate solutions can be
                        retrieved as they are generated through a callback (by
                        requesting the "MIPSOL_SOL" in a "MIPSOL" callback).
                        This parameter makes the process simpler. Note: Only
                        affects mixed integer programming (MIP) models
  -SolutionLimit SOLUTIONLIMIT, --SolutionLimit SOLUTIONLIMIT
                        [env var: SOLUTIONLIMIT] (default: 2000000000) (type:
                        int): Limits the number of feasible MIP solutions
                        found. Optimization returns with a SOLUTION_LIMIT
                        status once the limit has been reached. To find a
                        feasible solution quickly, Gurobi executes additional
                        feasible point heuristics when the solution limit is
                        set to exactly 1. Note: Only affects mixed integer
                        programming (MIP) models
  -SolutionNumber SOLUTIONNUMBER, --SolutionNumber SOLUTIONNUMBER
                        [env var: SOLUTIONNUMBER] (default: 0) (type: int):
                        When querying attribute Xn, ObjNVal, or PoolObjVal to
                        retrieve an alternate MIP solution, this parameter
                        determines which alternate solution is retrieved. The
                        value of this parameter should be less than the value
                        of the SolCount attribute. Note: Only affects mixed
                        integer programming (MIP) models
  -SolutionTarget SOLUTIONTARGET, --SolutionTarget SOLUTIONTARGET
                        [env var: SOLUTIONTARGET] (default: -1) (type: int):
                        Specifies the solution target for linear programs
                        (LP). Options are Automatic (-1), primal and dual
                        optimal, and basic (0), primal and dual optimal (1).
  -StartNodeLimit STARTNODELIMIT, --StartNodeLimit STARTNODELIMIT
                        [env var: STARTNODELIMIT] (default: -1) (type: int):
                        This parameter limits the number of branch-and-bound
                        nodes explored when completing a partial MIP start.
                        The default value of -1 uses the value of the
                        SubMIPNodes parameter. A value of -2 means to only
                        check full MIP starts for feasibility and to ignore
                        partial MIP starts. A value of -3 shuts off MIP start
                        processing entirely. Non-negative values are node
                        limits. Note: Only affects mixed integer programming
                        (MIP) models
  -StartNumber STARTNUMBER, --StartNumber STARTNUMBER
                        [env var: STARTNUMBER] (default: 0) (type: int): This
                        parameter selects the index of the MIP start you want
                        to work with. When you modify a MIP start value (using
                        the Start attribute) the StartNumber parameter will
                        determine which MIP start is actually affected. The
                        value of this parameter should be less than the value
                        of the NumStart attribute (which captures the number
                        of MIP starts in the model). The special value -1 is
                        meant to append new MIP start to a model, but querying
                        a MIP start when StartNumber is -1 will result in an
                        error. Note: Only affects mixed integer programming
                        (MIP) models
  -StrongCGCuts STRONGCGCUTS, --StrongCGCuts STRONGCGCUTS
                        [env var: STRONGCGCUTS] (default: -1) (type: int):
                        Controls Strong Chvátal-Gomory (Strong-CG) cut
                        generation. Use 0 to disable these cuts, 1 for
                        moderate cut generation, or 2 for aggressive cut
                        generation. The default -1 value chooses
                        automatically. Overrides the Cuts parameter. Note:
                        Only affects mixed integer programming (MIP) models
  -SubMIPCuts SUBMIPCUTS, --SubMIPCuts SUBMIPCUTS
                        [env var: SUBMIPCUTS] (default: -1) (type: int):
                        Controls sub-MIP cut generation. Use 0 to disable
                        these cuts, 1 for moderate cut generation, or 2 for
                        aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -SubMIPNodes SUBMIPNODES, --SubMIPNodes SUBMIPNODES
                        [env var: SUBMIPNODES] (default: 500) (type: int):
                        Limits the number of nodes explored by MIP-based
                        heuristics (such as RINS). Exploring more nodes can
                        produce better solutions, but it generally takes
                        longer. Note: Only affects mixed integer programming
                        (MIP) models
  -Symmetry SYMMETRY, --Symmetry SYMMETRY
                        [env var: SYMMETRY] (default: -1) (type: int):
                        Controls symmetry detection. A value of -1 corresponds
                        to an automatic setting. Other options are off (0),
                        conservative (1), or aggressive (2). Symmetry can
                        impact a number of different parts of the algorithm,
                        including presolve, the MIP tree search, and the LP
                        solution process. Default settings are quite
                        effective, so changing the value of this parameter
                        rarely produces a significant benefit.
  -TSPort TSPORT, --TSPort TSPORT
                        [env var: TSPORT] (default: 41954) (type: int): Port
                        to use when connecting to the Gurobi token server. You
                        should only change this if your network administrator
                        tells you to.
  -ThreadLimit THREADLIMIT, --ThreadLimit THREADLIMIT
                        [env var: THREADLIMIT] (default: 0) (type: int): The
                        ThreadLimit parameter is a configuration parameter for
                        an environment which can be used to limit the number
                        of threads used. This limit is enforced for all
                        optimization calls based on this environment. The
                        default value of 0 implies no limit. If a thread limit
                        is set, trying to set the Threads parameter above this
                        limit will display a warning and not change the value
                        of the parameter. You must set the ThreadLimit
                        parameter through either a "gurobi.env" file (using
                        "ThreadLimit=limit") or an empty environment. Changing
                        the parameter after the environment has been created
                        will result in an error.
  -Threads THREADS, --Threads THREADS
                        [env var: THREADS] (default: 0) (type: int): Controls
                        the number of threads to apply to parallel algorithms
                        (concurrent LP, parallel barrier, parallel MIP, etc.).
                        The default value of 0 is an automatic setting. It
                        will generally use as many threads as there are
                        virtual processors. The number of virtual processors
                        may exceed the number of cores due to hyperthreading
                        or other similar hardware features. While you will
                        generally get the best performance by using all
                        available cores in your machine, there are a few
                        exceptions. One is of course when you are sharing a
                        machine with other jobs. In this case, you should
                        select a thread count that doesn’t oversubscribe the
                        machine. We have also found that certain classes of
                        MIP models benefit from reducing the thread count,
                        often all the way down to one thread. Starting
                        multiple threads introduces contention for machine
                        resources. For classes of models where the first
                        solution found by the MIP solver is almost always
                        optimal, and that solution isn’t found at the root, it
                        is often better to allow a single thread to explore
                        the search tree uncontested. Another situation where
                        reducing the thread count can be helpful is when
                        memory is tight. Each thread can consume a significant
                        amount of memory. We’ve made the pragmatic choice to
                        impose a soft limit of 32 threads for the automatic
                        setting (0). If your machine has more, and you find
                        that using more increases performance, you should feel
                        free to set the parameter to a larger value.
  -TimeLimit TIMELIMIT, --TimeLimit TIMELIMIT
                        [env var: TIMELIMIT] (default: 1e+100) (type: float):
                        Limits the total time expended (in seconds).
                        Optimization returns with a TIME_LIMIT status if the
                        limit is exceeded. Note that optimization may not stop
                        immediately upon hitting the time limit. It will stop
                        after performing the required additional computations
                        of the attributes associated with the terminated
                        optimization. As a result, the Runtime attribute may
                        be larger than the specified TimeLimit upon
                        completion, and repeating the optimization with a
                        TimeLimit set to the Runtime attribute of the stopped
                        optimization may result in additional computations and
                        a larger attribute value. This parameter is callback
                        settable. It can be changed from within a callback
                        when the "where" value is "PRESOLVED", "SIMPLEX",
                        "MIP", "MIPSOL", "MIPNODE", "BARRIER", or "MULTIOBJ"
                        (see the Callback Codes section for more information).
                        How to do that for the different APIs is illustrated
                        here. In case of a remote server, the change of a
                        parameter from within a callback may not be taken into
                        account immediately.
  -TokenServer TOKENSERVER, --TokenServer TOKENSERVER
                        [env var: TOKENSERVER] (default: ) (type: str): When
                        using a token license, set this parameter to the name
                        of the token server. You can refer to the server using
                        its name or its IP address. You can provide a comma-
                        separated list of token servers to increase
                        robustness. If the first server in the list doesn’t
                        respond, the second will be tried, etc. You must set
                        this parameter through either a "gurobi.lic" file
                        (using "TOKENSERVER=server") or an empty environment.
                        Changing the parameter after your environment has been
                        created will have no effect.
  -TuneCleanup TUNECLEANUP, --TuneCleanup TUNECLEANUP
                        [env var: TUNECLEANUP] (default: 0.0) (type: float):
                        Enables a cleanup phase at the end of tuning. The
                        parameter indicates the percentage of total tuning
                        time to devote to this phase, with a goal of reducing
                        the number of parameter changes required to achieve
                        the best tuning result.
  -TuneCriterion TUNECRITERION, --TuneCriterion TUNECRITERION
                        [env var: TUNECRITERION] (default: -1) (type: int):
                        Modifies the tuning criterion for the tuning tool. The
                        primary tuning criterion is always to minimize the
                        runtime required to find a proven optimal solution.
                        However, for MIP models that don’t solve to optimality
                        within the specified time limit, a secondary criterion
                        is needed. Set this parameter to 1 to use the
                        optimality gap as the secondary criterion. Choose a
                        value of 2 to use the objective of the best feasible
                        solution found. Choose a value of 3 to use the best
                        objective bound. Choose 0 to ignore the secondary
                        criterion and focus entirely on minimizing the time to
                        find a proven optimal solution. The default value of
                        -1 chooses automatically. Note that values 1 and 3 are
                        unsupported for multi-objective problems.
  -TuneDynamicJobs TUNEDYNAMICJOBS, --TuneDynamicJobs TUNEDYNAMICJOBS
                        [env var: TUNEDYNAMICJOBS] (default: 0) (type: int):
                        Enables distributed parallel tuning, which can
                        significantly increase the performance of the tuning
                        tool. A value of "n" causes the tuning tool to use a
                        dynamic set of up to "n" workers in parallel. These
                        workers are used for a limited amount of time and
                        afterwards potentially released so that they are
                        available for other remote jobs. A value of "-1"
                        allows the solver to use an unlimited number of
                        workers. Note that this parameter can be combined with
                        TuneJobs to get a static set of workers and a dynamic
                        set of workers for distributed tuning. You can use the
                        WorkerPool parameter to provide a distributed worker
                        cluster. Note that distributed tuning is most
                        effective when the worker machines have similar
                        performance. Distributed tuning doesn’t attempt to
                        normalize performance by server, so it can incorrectly
                        attribute a boost in performance to a parameter change
                        when the associated setting is tried on a worker that
                        is significantly faster than the others.
  -TuneJobs TUNEJOBS, --TuneJobs TUNEJOBS
                        [env var: TUNEJOBS] (default: 0) (type: int): Enables
                        distributed parallel tuning, which can significantly
                        increase the performance of the tuning tool. A value
                        of "n" causes the tuning tool to use a static set of
                        up to "n" workers in parallel. Such workers are kept
                        for the whole tuning run. Note that this parameter can
                        be combined with TuneDynamicJobs to get a static set
                        of workers and a dynamic set of workers for
                        distributed tuning. You can use the WorkerPool
                        parameter to provide a distributed worker cluster.
                        Note that distributed tuning is most effective when
                        the worker machines have similar performance.
                        Distributed tuning doesn’t attempt to normalize
                        performance by server, so it can incorrectly attribute
                        a boost in performance to a parameter change when the
                        associated setting is tried on a worker that is
                        significantly faster than the others.
  -TuneMetric TUNEMETRIC, --TuneMetric TUNEMETRIC
                        [env var: TUNEMETRIC] (default: -1) (type: int): A
                        single tuning run typically produces multiple timing
                        results for each candidate parameter set, either as a
                        result of performing multiple trials, or tuning
                        multiple models, or both. This parameter controls how
                        these results are aggregated into a single measure.
                        The default setting (-1) chooses the aggregation
                        automatically; setting 0 computes the average of all
                        individual results; setting 1 takes the maximum.
  -TuneOutput TUNEOUTPUT, --TuneOutput TUNEOUTPUT
                        [env var: TUNEOUTPUT] (default: 2) (type: int):
                        Controls the amount of output produced by the tuning
                        tool. Level 0 produces no output; level 1 produces
                        tuning summary output only when a new best parameter
                        set is found; level 2 produces tuning summary output
                        for each parameter set that is tried; level 3 produces
                        tuning summary output, plus detailed solver output,
                        for each parameter set tried.
  -TuneResults TUNERESULTS, --TuneResults TUNERESULTS
                        [env var: TUNERESULTS] (default: -1) (type: int): The
                        tuning tool often finds multiple parameter sets that
                        improve over the baseline settings. This parameter
                        controls how many of these sets should be retained
                        when tuning is complete. A non-negative value
                        indicates how many sets should be retained. The
                        default value (-1) retains the efficient frontier of
                        parameter sets. That is, it retains the best set for
                        one changed parameter, the best for two changed
                        parameters, etc. Sets that aren’t on the efficient
                        frontier are discarded. If you interested in all the
                        sets, use value -2 for the parameter. Note that the
                        first set in the results is always the set of
                        parameters which was used for the first solve, the
                        baseline settings. This set serves as the base for any
                        improvement. So if you are interested in the best
                        tuned set of parameters you need to request at least 2
                        tune results. The first one (with index 0) will be the
                        baseline setting and the second one (with index 1)
                        will be the best set found during tuning.
  -TuneTargetMIPGap TUNETARGETMIPGAP, --TuneTargetMIPGap TUNETARGETMIPGAP
                        [env var: TUNETARGETMIPGAP] (default: 0.0) (type:
                        float): A target gap to be reached. As soon as the
                        tuner has found parameter settings that allow Gurobi
                        to reach the target gap for the given model(s), it
                        stops trying to improve parameter settings further.
                        Instead, the tuner switches into the cleanup phase
                        (see TuneCleanup parameter).
  -TuneTargetTime TUNETARGETTIME, --TuneTargetTime TUNETARGETTIME
                        [env var: TUNETARGETTIME] (default: 0.005) (type:
                        float): A target runtime in seconds to be reached. As
                        soon as the tuner has found parameter settings that
                        allow Gurobi to solve the model(s) within the target
                        runtime, it stops trying to improve parameter settings
                        further. Instead, the tuner switches into the cleanup
                        phase (see TuneCleanup parameter).
  -TuneTimeLimit TUNETIMELIMIT, --TuneTimeLimit TUNETIMELIMIT
                        [env var: TUNETIMELIMIT] (default: 1e+100) (type:
                        float): Limits total tuning runtime (in seconds). The
                        default setting chooses a time limit automatically.
  -TuneTrials TUNETRIALS, --TuneTrials TUNETRIALS
                        [env var: TUNETRIALS] (default: 0) (type: int):
                        Performance on a MIP model can sometimes experience
                        significant variations due to random effects. As a
                        result, the tuning tool may return parameter sets that
                        improve on the baseline only due to randomness. This
                        parameter allows you to perform multiple solves for
                        each parameter set, using different Seed values for
                        each, in order to reduce the influence of randomness
                        on the results. The default value of 0 indicates an
                        automatic choice that depends on model
                        characteristics.
  -UpdateMode UPDATEMODE, --UpdateMode UPDATEMODE
                        [env var: UPDATEMODE] (default: 1) (type: int):
                        Determines how newly added variables and linear
                        constraints are handled. The default setting (1)
                        allows you to use new variables and constraints
                        immediately for building or modifying the model. A
                        setting of 0 requires you to call "update" before
                        these can be used. Since the vast majority of programs
                        never query Gurobi for details about the optimization
                        models they build, the default setting typically
                        removes the need to call "update", or even be aware of
                        the details of our *lazy update* approach for handling
                        model modifications. However, these details will show
                        through when you try to query modified model
                        information. In the Gurobi interface, model
                        modifications (bound changes, right- hand side
                        changes, objective changes, etc.) are placed in a
                        queue. These queued modifications are applied to the
                        model at three times: when you call "update", when you
                        call "optimize", or when you call "write" to write the
                        model to disk. When you query information about the
                        model, the result will depend on both *whether* that
                        information was modified and *when* it was modified.
                        In particular, no matter what setting of UpdateMode
                        you use, if the modification is sitting in the queue,
                        you’ll get the result from before the modification. To
                        expand on this a bit, all attribute modifications are
                        actually placed in a queue. This includes attributes
                        that may not traditionally be viewed as being part of
                        the model, including things like variable branching
                        priorities, constraint basis statuses, etc. Querying
                        the values of these attributes will return their
                        previous values if subsequent modifications are still
                        in the queue. The only potential benefit to changing
                        the parameter to 0 is that in unusual cases this
                        setting may allow simplex to make more aggressive use
                        of warm-start information after a model modification.
                        If you want to change this parameter, you need to set
                        it as soon as you create your Gurobi environment. Note
                        that you still need to call "update" to modify an
                        attribute on an SOS constraint, quadratic constraint,
                        or general constraint.
  -VarBranch VARBRANCH, --VarBranch VARBRANCH
                        [env var: VARBRANCH] (default: -1) (type: int):
                        Controls the branch variable selection strategy. The
                        default -1 setting makes an automatic choice,
                        depending on problem characteristics. Available
                        alternatives are Pseudo Reduced Cost Branching (0),
                        Pseudo Shadow Price Branching (1), Maximum
                        Infeasibility Branching (2), and Strong Branching (3).
                        Changing the value of this parameter rarely produces a
                        significant benefit. Note: Only affects mixed integer
                        programming (MIP) models
  -WLSAccessID WLSACCESSID, --WLSAccessID WLSACCESSID
                        [env var: WLSACCESSID] (default: ) (type: str): When
                        using a WLS license, set this parameter to the access
                        ID for your license. You can retrieve this string from
                        your account on the Gurobi Web License Manager site.
  -WLSConfig WLSCONFIG, --WLSConfig WLSCONFIG
                        [env var: WLSCONFIG] (default: ) (type: str): When
                        using a WLS On Demand license, this parameter can be
                        used to specify which configuration to use. If not
                        specified, the configuration used will be the default
                        configuration specified for that license.
  -WLSProxy WLSPROXY, --WLSProxy WLSPROXY
                        [env var: WLSPROXY] (default: ) (type: str): Comma
                        separated list of addresses of the WLS proxies to
                        connect to. When using a WLS On Demand license, this
                        parameter can be used to specify the URLs to which
                        Gurobi will connect to report usage. The default value
                        (an empty string) is equivalent to
                        "http://localhost:61099".
  -WLSSecret WLSSECRET, --WLSSecret WLSSECRET
                        [env var: WLSSECRET] (default: ) (type: str): When
                        using a WLS license, set this parameter to the secret
                        key for your license. You can retrieve this string
                        from your account on the Gurobi Web License Manager
                        site.
  -WLSToken WLSTOKEN, --WLSToken WLSTOKEN
                        [env var: WLSTOKEN] (default: ) (type: str): If you
                        are using a WLS license and have retrieved your own
                        token through the WLS REST API, use this parameter to
                        pass that token to the library. If you do this, you
                        don’t need to set any other WLS-related parameters.
  -WLSTokenDuration WLSTOKENDURATION, --WLSTokenDuration WLSTOKENDURATION
                        [env var: WLSTOKENDURATION] (default: 0) (type: int):
                        When using a WLS license, this parameter can be used
                        to adjust the lifespan (in minutes) of a token. A
                        token enables Gurobi to run on that client for the
                        life of the token. Gurobi will automatically request a
                        new token if the current one expires, but it won’t
                        notify the WLS server if it completes its work before
                        the current token expires. A shorter lifespan is
                        better for short-lived usage. A longer lifespan is
                        better for environments where the network connection
                        to the WLS server is unreliable. The default value of
                        0 means ‘automatic’, and is currently equal to 5
                        minutes. This value may change in the future. The WLS
                        server will cap the chosen value automatically to be
                        at least 5 minutes and no more than 60 minutes. This
                        behavior may change in the future as well.
  -WLSTokenRefresh WLSTOKENREFRESH, --WLSTokenRefresh WLSTOKENREFRESH
                        [env var: WLSTOKENREFRESH] (default: 0.9) (type:
                        float): The value specifies the fraction of the token
                        duration after which a token refresh is triggered. So,
                        for example, if the token duration is 30 minutes and
                        WLSTokenRefresh is set to 0.6, the token will be
                        refreshed every 18 minutes. The minimum refresh
                        interval is 4 minutes.
  -WorkLimit WORKLIMIT, --WorkLimit WORKLIMIT
                        [env var: WORKLIMIT] (default: 1e+100) (type: float):
                        Limits the total work expended (in work units).
                        Optimization returns with a WORK_LIMIT status if the
                        limit is exceeded. In contrast to the TimeLimit, work
                        limits are deterministic. This means that on the same
                        hardware and with the same parameter and attribute
                        settings, a work limit will stop the optimization of a
                        given model at the exact same point every time. One
                        work unit corresponds very roughly to one second on a
                        single thread, but this greatly depends on the
                        hardware on which Gurobi is running and the model that
                        is being solved. Note that optimization may not stop
                        immediately upon hitting the work limit. It will stop
                        when the optimization is next in a deterministic
                        state, and it will then perform the required
                        additional computations of the attributes associated
                        with the terminated optimization. As a result, the
                        Work attribute may be larger than the specified
                        WorkLimit upon completion, and repeating the
                        optimization with a WorkLimit set to the Work
                        attribute of the stopped optimization may result in
                        additional computations and a larger attribute value.
                        This parameter is callback settable. It can be changed
                        from within a callback when the "where" value is
                        "PRESOLVED", "SIMPLEX", "MIP", "MIPSOL", "MIPNODE",
                        "BARRIER", or "MULTIOBJ" (see the Callback Codes
                        section for more information). How to do that for the
                        different APIs is illustrated here. In case of a
                        remote server, the change of a parameter from within a
                        callback may not be taken into account immediately.
  -WorkerPassword WORKERPASSWORD, --WorkerPassword WORKERPASSWORD
                        [env var: WORKERPASSWORD] (default: ) (type: str):
                        When using a distributed algorithm (distributed MIP,
                        distributed concurrent, or distributed tuning), this
                        parameter allows you to specify the password for the
                        distributed worker cluster provided in the WorkerPool
                        parameter.
  -WorkerPool WORKERPOOL, --WorkerPool WORKERPOOL
                        [env var: WORKERPOOL] (default: ) (type: str): When
                        using a distributed algorithm (distributed MIP,
                        distributed concurrent, or distributed tuning), this
                        parameter allows you to specify a Remote Services
                        cluster that will provide distributed workers. You
                        should also specify the access password for that
                        cluster, if there is one, in the WorkerPassword
                        parameter. Note that you don’t need to set either of
                        these parameters if your job is running on a Compute
                        Server node and you want to use the same cluster for
                        the distributed workers. You can provide a comma-
                        separated list of machines for added robustness. If
                        the first node in the list is unavailable, the client
                        will attempt to contact the second node, etc. To give
                        an example, if you have a Remote Services cluster that
                        uses port 61000 on a pair of machines named "server1"
                        and "server2", you could set WorkerPool to
                        ""server1:61000"" or ""server1:61000,server2:61000"".
  -ZeroHalfCuts ZEROHALFCUTS, --ZeroHalfCuts ZEROHALFCUTS
                        [env var: ZEROHALFCUTS] (default: -1) (type: int):
                        Controls zero-half cut generation. Use 0 to disable
                        these cuts, 1 for moderate cut generation, or 2 for
                        aggressive cut generation. The default -1 value
                        chooses automatically. Overrides the Cuts parameter.
                        Note: Only affects mixed integer programming (MIP)
                        models
  -ZeroObjNodes ZEROOBJNODES, --ZeroObjNodes ZEROOBJNODES
                        [env var: ZEROOBJNODES] (default: -1) (type: int):
                        Number of nodes to explore in the zero objective
                        heuristic. This heuristic is quite expensive, and
                        generally produces poor quality solutions. You should
                        generally only use it if other means, including
                        exploration of the tree with default settings, fail to
                        produce a feasible solution. Note: Only affects mixed
                        integer programming (MIP) models
Copy

You can merge nextmv.Options together using the merge method.

import nextmv_gurobipy as ngp

import nextmv

opt = nextmv.Options(
    nextmv.Parameter("input", str, "", "Path to input file. Default is stdin.", False),
    nextmv.Parameter("output", str, "", "Path to output file. Default is stdout.", False),
)
gp_opt = ngp.ModelOptions().to_nextmv()
options = opt.merge(gp_opt)
Copy
$ python main.py --help
usage: main.py [options]

Options for main.py. Use command-line arguments (highest precedence) or
environment variables.

options:
  -h, --help            show this help message and exit
  -input INPUT, --input INPUT
                        [env var: INPUT] (default: ) (type: str): Path to
                        input file. Default is stdin.
  -output OUTPUT, --output OUTPUT
                        [env var: OUTPUT] (default: ) (type: str): Path to
                        output file. Default is stdout.
  -AggFill AGGFILL, --AggFill AGGFILL
                        [env var: AGGFILL] (default: -1) (type: int): Controls
                        the amount of fill allowed during presolve
                        aggregation. Larger values generally lead to presolved
                        models with fewer rows and columns, but with more
                        constraint matrix non-zeros. The default value chooses
                        automatically, and usually works well.
  -Aggregate AGGREGATE, --Aggregate AGGREGATE
                        [env var: AGGREGATE] (default: 1) (type: int):
                        Controls the aggregation level in presolve. The
                        options are off (0), moderate (1), or aggressive (2).
                        In rare instances, aggregation can lead to an
                        accumulation of numerical errors. Turning it off can
                        sometimes improve solution accuracy.
  -BQPCuts BQPCUTS, --BQPCuts BQPCUTS
                        [env var: BQPCUTS] (default: -1) (type: int): Controls
                        Boolean Quadric Polytope (BQP) cut generation. Use 0
...
...
Copy

Notice how the ModelOptions are merged with the nextmv.Options and you can access the options from both sets.

Page last updated