{ "cells": [ { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "# Running Pyomo on the Notre Dame CRC Cluster\n", "\n", "This documentation gives a brief overview for using Pyomo on the CRC clusters with a variety of solvers." ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "## Preliminaries\n", "\n", "Before proceeding with this tutorial, you need to obtain a CRC account and install a private copy of Pyomo on the CRC cluster." ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "### Request a CRC account\n", "\n", "First, you must [register for a CRC account](https://wiki.crc.nd.edu/w/index.php/How_to_Obtain_a_CRC_Account). These are free for all ND researchers." ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "### Install Pyomo on CRC cluster\n", "\n", "Per CRC policies, standalone Python packages such as Pyomo are not centrally installed or maintained. Instead, users must [install a private copy of standalone Python packages](https://wiki.crc.nd.edu/w/index.php/Python#Installing_Python_Packages_Locally) on the CRC cluster. This can be easily done in a few steps:\n", "\n", "First, `ssh` into a CRC interactive node. For example,\n", "\n", "```bash\n", "ssh crcfe02.crc.nd.edu\n", "```\n", "\n", "Next (optional), may load your preferred version of Python. If you do not, the system default (2.7) will be used. Pyomo supports both 2.7 and 3.x:\n", "\n", "```bash\n", "module load python/3.6.4\n", "```\n", "\n", "Then, install Pyomo using `pip`, a popular package manager for Python:\n", "\n", "```bash\n", "pip install --user pyomo\n", "```\n", "\n", "By default, Pyomo will be installed in ```.local/bin```. See the [ND CRC wiki instructions for adding `.local/bin` to your PATH](https://wiki.crc.nd.edu/w/index.php/Python#Adding_.24.7BHOME.7D.2F.local.2Fbin_to_your_path)." ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "## Running on the CRC\n", "\n", "There are two ways to run Pyomo on the CRC cluster: on an interactive mode (for testing only) or by submitting a job to the queue. The following shows how to do this for a simple optimization problem." ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "### Test problem\n", "\n", "We will consider the following simple linear program to test Pyomo on the CRC:\n", "\n", "```python\n", "## Load Pyomo\n", "from pyomo.environ import *\n", "\n", "## Create model\n", "m = ConcreteModel()\n", "m.x = Var([1,2,3], domain=NonNegativeReals)\n", "m.c1 = Constraint(expr = m.x[1] + m.x[2] + m.x[3] <= 1)\n", "m.c2 = Constraint(expr = m.x[1] + 2*m.x[2] >= 0.3)\n", "m.OBJ = Objective(expr = m.x[3], sense=maximize) \n", "\n", "## Specify solver\n", "solver=SolverFactory('ipopt')\n", "\n", "## Solve model\n", "solver.solve(m, tee=True)\n", "```\n", "\n", "Copy this code and save it on your CRC AFS space as `pyomo_test.py`." ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "### Running from the command line\n", "\n", "The easest option is to directly run this code on an interactive node on the CRC cluster.\n", "\n", "1. Login to the CRC cluster:\n", "\n", "```bash\n", "ssh crcfe02.crc.nd.edu\n", "```\n", "\n", "2. Load your preferred version of python and your favorite optimization solver.\n", "\n", "```bash\n", "module load ipopt\n", "```\n", "\n", "3. Run the Python script\n", "\n", "```bash\n", "python pyomo_test.py\n", "```\n", "\n", "You should see the following output:\n", "\n", "```\n", "Ipopt 3.12.8: \n", "\n", "******************************************************************************\n", "This program contains Ipopt, a library for large-scale nonlinear optimization.\n", " Ipopt is released as open source code under the Eclipse Public License (EPL).\n", " For more information visit http://projects.coin-or.org/Ipopt\n", "******************************************************************************\n", "\n", "This is Ipopt version 3.12.8, running with linear solver ma27.\n", "\n", "Number of nonzeros in equality constraint Jacobian...: 0\n", "Number of nonzeros in inequality constraint Jacobian.: 5\n", "Number of nonzeros in Lagrangian Hessian.............: 0\n", "\n", "Total number of variables............................: 3\n", " variables with only lower bounds: 3\n", " variables with lower and upper bounds: 0\n", " variables with only upper bounds: 0\n", "Total number of equality constraints.................: 0\n", "Total number of inequality constraints...............: 2\n", " inequality constraints with only lower bounds: 1\n", " inequality constraints with lower and upper bounds: 0\n", " inequality constraints with only upper bounds: 1\n", "\n", "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", " 0 -9.9999900e-03 2.70e-01 6.00e-01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", " 1 -2.3096613e-02 1.48e-01 3.42e+00 -1.7 1.87e-01 - 1.10e-01 4.70e-01h 1\n", " 2 -7.1865937e-02 0.00e+00 8.39e-01 -1.7 1.42e-01 - 4.87e-01 1.00e+00f 1\n", " 3 -8.1191843e-01 0.00e+00 4.70e-01 -1.7 1.47e+00 - 1.00e+00 5.02e-01f 1\n", " 4 -7.9286713e-01 0.00e+00 2.00e-07 -1.7 1.91e-02 - 1.00e+00 1.00e+00f 1\n", " 5 -8.4402296e-01 0.00e+00 3.48e-03 -3.8 5.61e-02 - 9.40e-01 9.12e-01f 1\n", " 6 -8.4949514e-01 0.00e+00 1.50e-09 -3.8 7.04e-03 - 1.00e+00 1.00e+00f 1\n", " 7 -8.4999437e-01 0.00e+00 1.84e-11 -5.7 4.99e-04 - 1.00e+00 1.00e+00f 1\n", " 8 -8.5000001e-01 0.00e+00 2.51e-14 -8.6 5.65e-06 - 1.00e+00 1.00e+00f 1\n", "\n", "Number of Iterations....: 8\n", "\n", " (scaled) (unscaled)\n", "Objective...............: -8.5000001246787615e-01 -8.5000001246787615e-01\n", "Dual infeasibility......: 2.5143903682766679e-14 2.5143903682766679e-14\n", "Constraint violation....: 0.0000000000000000e+00 0.0000000000000000e+00\n", "Complementarity.........: 2.5342284749259295e-09 2.5342284749259295e-09\n", "Overall NLP error.......: 2.5342284749259295e-09 2.5342284749259295e-09\n", "\n", "\n", "Number of objective function evaluations = 9\n", "Number of objective gradient evaluations = 9\n", "Number of equality constraint evaluations = 0\n", "Number of inequality constraint evaluations = 9\n", "Number of equality constraint Jacobian evaluations = 0\n", "Number of inequality constraint Jacobian evaluations = 9\n", "Number of Lagrangian Hessian evaluations = 8\n", "Total CPU secs in IPOPT (w/o function evaluations) = 0.004\n", "Total CPU secs in NLP function evaluations = 0.000\n", "\n", "EXIT: Optimal Solution Found.\n", "```" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "### Submitting to a queue\n", "\n", "Per CRC policies, the interactive nodes should only be used for testing short computational jobs. All other jobs should be submitted to a queue.\n", " \n", " To submit the previous project on the CRC queue, write a script that contains the following:\n", " \n", " ```\n", " #!/bin/csh\n", " \n", " #$ -M netid@nd.edu\t\t# Email address for job notification\n", " #$ -m abe\t\t \t\t # Send mail when job aborts, begins, and ends\n", " #$ -q long\t\t \t\t # Specify queue\n", " #$ -N job_name\t # Specify job name\n", " \n", " module load python/3.6.4 # Required modules\n", " module load ipopt\n", " \n", " python3 pyomo_test.py \t\t # Command to execute\n", " ```\n", " \n", " Name it something logical, such as `submission_script`. Then type:\n", " \n", " ```\n", " qsub submission_script\n", " ```\n", " \n", " You should get an email when your job begins/ends/aborts. You can also monitor its process through\n", " \n", "```\n", " qstat –u username\n", " ```\n", " \n", " More info is available at the [ND CRC wiki Quick Start Guide](https://wiki.crc.nd.edu/w/index.php/CRC_Quick_Start_Guide). " ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "## Available solvers\n", "\n", "The CRC clusters supports several large-scale optimization solvers that are directly callable from Pyomo. This makes it increadily easy - often one only needs to change a few lines of code - to try different solvers for an optimization problem.\n", "\n", "The following contains instructions on using solvers currently available on the CRC cluster. By modifying the `SolverFactory` in `pyomo_test.py`, you can try all of these solvers on the simple test problem." ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "### CPLEX\n", "\n", "First load the module:\n", "\n", "```module load cplex```\n", "\n", "This will update your environmental variables and the Gurobi executable should be callable from Pyomo:\n", "\n", "```python\n", "solver=SolverFactory('cplex')\n", "```\n", "\n", "Here is the output for the test problem:\n", "\n", "```\n", "Welcome to IBM(R) ILOG(R) CPLEX(R) Interactive Optimizer 12.7.1.0\n", " with Simplex, Mixed Integer & Barrier Optimizers\n", "5725-A06 5725-A29 5724-Y48 5724-Y49 5724-Y54 5724-Y55 5655-Y21\n", "Copyright IBM Corp. 1988, 2017. All Rights Reserved.\n", "\n", "Type 'help' for a list of available commands.\n", "Type 'help' followed by a command name for more\n", "information on commands.\n", "\n", "CPLEX> Logfile 'cplex.log' closed.\n", "Logfile '/afs/crc.nd.edu/user/a/adowling/Private/tmp103f3a.cplex.log' open.\n", "CPLEX> Problem '/afs/crc.nd.edu/user/a/adowling/Private/tmpdhMJXY.pyomo.lp' read.\n", "Read time = 0.01 sec. (0.00 ticks)\n", "CPLEX> Problem name : /afs/crc.nd.edu/user/a/adowling/Private/tmpdhMJXY.pyomo.lp\n", "Objective sense : Maximize\n", "Variables : 4\n", "Objective nonzeros : 1\n", "Linear constraints : 3 [Less: 1, Greater: 1, Equal: 1]\n", " Nonzeros : 6\n", " RHS nonzeros : 3\n", "\n", "Variables : Min LB: 0.000000 Max UB: all infinite \n", "Objective nonzeros : Min : 1.000000 Max : 1.000000 \n", "Linear constraints :\n", " Nonzeros : Min : 1.000000 Max : 2.000000 \n", " RHS nonzeros : Min : 0.3000000 Max : 1.000000 \n", "CPLEX> CPXPARAM_Read_APIEncoding \"UTF-8\"\n", "Tried aggregator 1 time.\n", "LP Presolve eliminated 1 rows and 1 columns.\n", "Reduced LP has 2 rows, 3 columns, and 5 nonzeros.\n", "Presolve time = 0.00 sec. (0.00 ticks)\n", "Initializing dual steep norms . . .\n", "\n", "Iteration log . . .\n", "Iteration: 1 Dual objective = 0.850000\n", "\n", "Dual simplex - Optimal: Objective = 8.5000000000e-01\n", "Solution time = 0.00 sec. Iterations = 1 (0)\n", "Deterministic time = 0.00 ticks (4.51 ticks/sec)\n", "\n", "CPLEX> Solution written to file '/afs/crc.nd.edu/user/a/adowling/Private/tmp0ryhXG.cplex.sol'.\n", "```" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "### Gurobi\n", "\n", "First load the module:\n", "\n", "```module load gurobi```\n", "\n", "This will update your environmental variables and the Gurobi executable should be callable from Pyomo:\n", "\n", "```python\n", "solver=SolverFactory('gurobi')\n", "```\n", "\n", "Here is the output for the test problem:\n", "```\n", "Optimize a model with 3 rows, 4 columns and 6 nonzeros\n", "Coefficient statistics:\n", " Matrix range [1e+00, 2e+00]\n", " Objective range [1e+00, 1e+00]\n", " Bounds range [0e+00, 0e+00]\n", " RHS range [3e-01, 1e+00]\n", "Presolve removed 1 rows and 1 columns\n", "Presolve time: 0.02s\n", "Presolved: 2 rows, 3 columns, 5 nonzeros\n", "\n", "Iteration Objective Primal Inf. Dual Inf. Time\n", " 0 1.0000000e+00 1.500000e-01 0.000000e+00 0s\n", " 1 8.5000000e-01 0.000000e+00 0.000000e+00 0s\n", "\n", "Solved in 1 iterations and 0.02 seconds\n", "Optimal objective 8.500000000e-01\n", "Freed default Gurobi environment\n", "```" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "### Ipopt\n", "\n", "Two versions (modules) of Ipopt are available to CRC users: `ipopt/3.12.8` and `ipopt/hsl/3.12.8`. The latter supports HSL linear algebra routines whereas the former does not (and relies on the open-source library MUMPS). In general, the HSL linear algebra routines are more stable and are significantly faster for large-scale problems. All IPOPT users are strongly encouraged to use the HSL libraries. To obtain access to `ipopt/hsl/3.12.8`, ND users must apply for a [free HSL academic license](http://www.hsl.rl.ac.uk/download/coinhsl/2015.06.23/) and then forward the approval email to CRCSupport@nd.edu. \n", "\n", "To use either version of Ipopt, first load the module. For example,\n", "\n", "```module load ipopt/hsl/3.12.8```\n", "\n", "This will update your environmental variables and the ipopt executable should be callable from Pyomo:\n", "\n", "```python\n", "solver=SolverFactory('ipopt')\n", "```\n", "\n", "If needed, you can also directly specify the path to the Ipopt executable to Pyomo:\n", "\n", "```python\n", "solver=SolverFactory('ipopt', executable=\"/afs/crc.nd.edu/x86_64_linux/i/ipopt/3.12.8-hsl/bin/ipopt\")\n", "```\n", "\n", "Next, you may want to customize some of the [Ipopt options](https://www.coin-or.org/Ipopt/documentation/node40.html). For example, specify the linear algebra routine (use MA57 from the HSL library):\n", "\n", "```python\n", "solver.options['linear_solver'] = \"ma57\"\n", "```\n", "\n", "Here is the output when using MA57:\n", "\n", "```\n", "Ipopt 3.12.8: linear_solver=ma57\n", "\n", "\n", "******************************************************************************\n", "This program contains Ipopt, a library for large-scale nonlinear optimization.\n", " Ipopt is released as open source code under the Eclipse Public License (EPL).\n", " For more information visit http://projects.coin-or.org/Ipopt\n", "******************************************************************************\n", "\n", "This is Ipopt version 3.12.8, running with linear solver ma57.\n", "\n", "Number of nonzeros in equality constraint Jacobian...: 0\n", "Number of nonzeros in inequality constraint Jacobian.: 5\n", "Number of nonzeros in Lagrangian Hessian.............: 0\n", "\n", "Total number of variables............................: 3\n", " variables with only lower bounds: 3\n", " variables with lower and upper bounds: 0\n", " variables with only upper bounds: 0\n", "Total number of equality constraints.................: 0\n", "Total number of inequality constraints...............: 2\n", " inequality constraints with only lower bounds: 1\n", " inequality constraints with lower and upper bounds: 0\n", " inequality constraints with only upper bounds: 1\n", "\n", "iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls\n", " 0 -9.9999900e-03 2.70e-01 6.00e-01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0\n", " 1 -2.3096613e-02 1.48e-01 3.42e+00 -1.7 1.87e-01 - 1.10e-01 4.70e-01h 1\n", " 2 -7.1865937e-02 0.00e+00 8.39e-01 -1.7 1.42e-01 - 4.87e-01 1.00e+00f 1\n", " 3 -8.1191843e-01 0.00e+00 4.70e-01 -1.7 1.47e+00 - 1.00e+00 5.02e-01f 1\n", " 4 -7.9286713e-01 0.00e+00 2.00e-07 -1.7 1.91e-02 - 1.00e+00 1.00e+00f 1\n", " 5 -8.4402296e-01 0.00e+00 3.48e-03 -3.8 5.61e-02 - 9.40e-01 9.12e-01f 1\n", " 6 -8.4949514e-01 0.00e+00 1.50e-09 -3.8 7.04e-03 - 1.00e+00 1.00e+00f 1\n", " 7 -8.4999437e-01 0.00e+00 1.84e-11 -5.7 4.99e-04 - 1.00e+00 1.00e+00f 1\n", " 8 -8.5000001e-01 0.00e+00 2.51e-14 -8.6 5.65e-06 - 1.00e+00 1.00e+00f 1\n", "\n", "Number of Iterations....: 8\n", "\n", " (scaled) (unscaled)\n", "Objective...............: -8.5000001246787615e-01 -8.5000001246787615e-01\n", "Dual infeasibility......: 2.5143903682766679e-14 2.5143903682766679e-14\n", "Constraint violation....: 0.0000000000000000e+00 0.0000000000000000e+00\n", "Complementarity.........: 2.5342284749259295e-09 2.5342284749259295e-09\n", "Overall NLP error.......: 2.5342284749259295e-09 2.5342284749259295e-09\n", "\n", "\n", "Number of objective function evaluations = 9\n", "Number of objective gradient evaluations = 9\n", "Number of equality constraint evaluations = 0\n", "Number of inequality constraint evaluations = 9\n", "Number of equality constraint Jacobian evaluations = 0\n", "Number of inequality constraint Jacobian evaluations = 9\n", "Number of Lagrangian Hessian evaluations = 8\n", "Total CPU secs in IPOPT (w/o function evaluations) = 0.004\n", "Total CPU secs in NLP function evaluations = 0.000\n", "\n", "EXIT: Optimal Solution Found.\n", "```" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "### Coin-OR\n", "\n", "Several solvers are availabe in the COIN-OR module.\n", "\n", "The first step to using any of these solvers is loading the module:\n", "\n", "```module load coin-or```" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "#### Clp\n", "\n", "The Clp solver executable should now be callable from Pyomo:\n", "\n", "```python\n", "solver=SolverFactory('clp')\n", "```\n", "\n", "If needed, you can explicitly specify the path to the executable:\n", "\n", "```python\n", "solver=SolverFactory('clp', executable=\"/afs/crc.nd.edu/x86_64_linux/c/coin-or/clp/1.16.11/bin/clp\")\n", "```\n", "\n", "Output for the test problem:\n", "```\n", "Coin LP version 1.16.11, build Jun 4 2018\n", "command line - /afs/crc.nd.edu/x86_64_linux/c/coin-or/clp/1.16.11/bin/clp /afs/crc.nd.edu/user/a/adowling/Private/tmpEsGwQH.pyomo.nl -AMPL\n", "```" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "#### Cbc\n", "\n", "The Cbc solver executable should now be callable from Pyomo:\n", "\n", "```python\n", "solver=SolverFactory('cbc')\n", "```\n", "\n", "If needed, you can explicitly specify the path to the executable:\n", "\n", "```python\n", "solver=SolverFactory('cbc', executable=\"/afs/crc.nd.edu/x86_64_linux/c/coin-or/cbc/2.9.9/bin/cbc\")\n", "```\n", "\n", "Output for the test problem:\n", "```\n", "Welcome to the CBC MILP Solver \n", "Version: 2.9.6 \n", "Build Date: Jun 3 2018 \n", "\n", "command line - /afs/crc.nd.edu/x86_64_linux/c/coin-or/cbc/2.9.9/bin/cbc -printingOptions all -import /afs/crc.nd.edu/user/a/adowling/Private/tmp5jMyQq.pyomo.lp -stat=1 -solve -solu /afs/crc.nd.edu/user/a/adowling/Private/tmp5jMyQq.pyomo.soln (default strategy 1)\n", "Option for printingOptions changed from normal to all\n", " CoinLpIO::readLp(): Maximization problem reformulated as minimization\n", "Presolve 2 (-1) rows, 3 (-1) columns and 5 (-1) elements\n", "Statistics for presolved model\n", "\n", "\n", "Problem has 2 rows, 3 columns (1 with objective) and 5 elements\n", "There are 1 singletons with objective \n", "Column breakdown:\n", "3 of type 0.0->inf, 0 of type 0.0->up, 0 of type lo->inf, \n", "0 of type lo->up, 0 of type free, 0 of type fixed, \n", "0 of type -inf->0.0, 0 of type -inf->up, 0 of type 0.0->1.0 \n", "Row breakdown:\n", "0 of type E 0.0, 1 of type E 1.0, 0 of type E -1.0, \n", "0 of type E other, 0 of type G 0.0, 0 of type G 1.0, \n", "1 of type G other, 0 of type L 0.0, 0 of type L 1.0, \n", "0 of type L other, 0 of type Range 0.0->1.0, 0 of type Range other, \n", "0 of type Free \n", "Presolve 2 (-1) rows, 3 (-1) columns and 5 (-1) elements\n", "0 Obj 0 Primal inf 1.299998 (2) Dual inf 0.999999 (1)\n", "2 Obj -0.85\n", "Optimal - objective value -0.85\n", "After Postsolve, objective -0.85, infeasibilities - dual 0 (0), primal 0 (0)\n", "Optimal objective -0.85 - 2 iterations time 0.002, Presolve 0.00\n", "Total time (CPU seconds): 0.00 (Wallclock seconds): 0.01\n", "```" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "#### Bonmin\n", "\n", "**Warning**: Bonmin has been compiled using the HSL linear algebra routines. All users that have access to Ipopt with HSL also have access to Bonmin.\n", "\n", "After you submit your HSL license approval email to CRCsupport@nd.edu, the Bonmin solver executable will be callable from Pyomo:\n", "\n", "```python\n", "solver=SolverFactory('bonmin')\n", "```\n", "\n", "If needed, you can explicitly specify the path to the executable:\n", "\n", "```python\n", "solver=SolverFactory('bonmin', executable=\"/afs/crc.nd.edu/x86_64_linux/c/coin-or/bonmin/1.8.6/bin/bonmin\")\n", "```\n", "\n", "Output for the test problem:\n", "```\n", "Bonmin 1.8.6 using Cbc 2.9.9 and Ipopt 3.12.8\n", "bonmin: \n", "Cbc3007W No integer variables - nothing to do\n", "\n", "******************************************************************************\n", "This program contains Ipopt, a library for large-scale nonlinear optimization.\n", " Ipopt is released as open source code under the Eclipse Public License (EPL).\n", " For more information visit http://projects.coin-or.org/Ipopt\n", "******************************************************************************\n", "\n", "NLP0012I \n", " Num Status Obj It time Location\n", "NLP0014I 1 OPT -0.85000002 6 0.00295\n", "Cbc3007W No integer variables - nothing to do\n", "\n", " \t\"Finished\"\n", "```" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "#### Couenne\n", "\n", "**Warning**: Couenne has been compiled using the HSL linear algebra routines. All users that have access to Ipopt with HSL also have access to Couenne.\n", "\n", "After you submit your HSL license approval email to CRCsupport@nd.edu, the Couenne solver executable will be callable from Pyomo:\n", "\n", "```python\n", "solver=SolverFactory('couenne')\n", "```\n", "\n", "If needed, you can explicitly specify the path to the executable:\n", "\n", "```python\n", "solver=SolverFactory('couenne', executable=\"/afs/crc.nd.edu/x86_64_linux/c/coin-or/couenne/0.5.6/bin/couenne\")\n", "```\n", "\n", "Output for the test problem:\n", "```\n", "Couenne 0.5.6 -- an Open-Source solver for Mixed Integer Nonlinear Optimization\n", "Mailing list: couenne@list.coin-or.org\n", "Instructions: http://www.coin-or.org/Couenne\n", "couenne: \n", "ANALYSIS TEST: Couenne: new cutoff value -8.5000000000e-01 (0.045811 seconds)\n", "NLP0012I \n", " Num Status Obj It time Location\n", "NLP0014I 1 OPT -0.85000002 9 0.004882\n", "Loaded instance \"/afs/crc.nd.edu/user/a/adowling/Private/tmps3yXIf.pyomo.nl\"\n", "Constraints: 2\n", "Variables: 3 (0 integer)\n", "Auxiliaries: 1 (0 integer)\n", "\n", "Coin0506I Presolve 2 (-1) rows, 3 (-1) columns and 5 (-2) elements\n", "Clp0006I 0 Obj -0.849815 Primal inf 0.00018408442 (1) Dual inf 0.999999 (1)\n", "Clp0006I 2 Obj -0.85\n", "Clp0000I Optimal - objective value -0.85\n", "Clp0032I Optimal objective -0.85 - 2 iterations time 0.002, Presolve 0.00\n", "Cbc3007W No integer variables - nothing to do\n", "Clp0000I Optimal - objective value -0.85\n", "\n", " \t\"Finished\"\n", "\n", "Linearization cuts added at root node: 3\n", "Linearization cuts added in total: 3 (separation time: 6.5e-05s)\n", "Total solve time: 0.001362s (0.001362s in branch-and-bound)\n", "Lower bound: -0.85\n", "Upper bound: -0.85 (gap: 0.00%)\n", "Branch-and-bound nodes: 0\n", "Performance of FBBT:\t 2.6e-05s, 3 runs. fix: 0 shrnk: 10.7635 ubd: 0.666667 2ubd: 0 infeas: 0\n", "```" ] }, { "cell_type": "markdown", "metadata": { "pycharm": {} }, "source": [ "### SCIP\n", "\n", "Coming soon." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "pycharm": {} }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.7" } }, "nbformat": 4, "nbformat_minor": 4 }