{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example from Maravelias and Grossmann, 2003\n", "\n", "This is a tiny example in the appendix of a paper by Maravelias and Grossman, 2003. The example provides a simple demonstration of translating a STN diagram into the model that can be solved by the STN Scheduler." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nFjYicwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Image\n", "Image('../images/MarveliasGrossman2003a.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Problem Data\n", "\n", "| task/unit | duration (h) | max batch size (kg) |\n", "| :- | :-: | :-: |\n", "|heater/reactor | 1 | 10 |\n", "|R1/reactor 1 | 3 | 4 |\n", "|R2/reactor 2 | 1 | 2 |\n", "|sep/filter | 2 | 10 |\n", "\n", "### Reference\n", "\n", "Maravelias, C. T., and Grossmann 2003). New General Continuous-Time State−Task Network Formulation for Short-Term Scheduling of Multipurpose Batch Plants. Industrial & Engineering Chemistry Research, 42 (13), 3056-3074." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import sys\n", "sys.path.append('../STN')\n", "from STN import STN" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# ==========================================================\n", "# = Solver Results =\n", "# ==========================================================\n", "# ----------------------------------------------------------\n", "# Problem Information\n", "# ----------------------------------------------------------\n", "Problem: \n", "- Name: unknown\n", " Lower bound: 100.0\n", " Upper bound: 100.0\n", " Number of objectives: 1\n", " Number of constraints: 171\n", " Number of variables: 115\n", " Number of nonzeros: 363\n", " Sense: maximize\n", "# ----------------------------------------------------------\n", "# Solver Information\n", "# ----------------------------------------------------------\n", "Solver: \n", "- Status: ok\n", " Termination condition: optimal\n", " Statistics: \n", " Branch and bound: \n", " Number of bounded subproblems: 1\n", " Number of created subproblems: 1\n", " Error rc: 0\n", " Time: 0.013355016708374023\n", "# ----------------------------------------------------------\n", "# Solution Information\n", "# ----------------------------------------------------------\n", "Solution: \n", "- number of solutions: 0\n", " number of solutions displayed: 0\n" ] } ], "source": [ "# create an empty STN instance\n", "stn = STN()\n", "\n", "# enter any states where there are finite capacity constraints, \n", "# initial inventory, or with an associated price. In this problem\n", "# we're trying to maximize the production of product B, so we\n", "# an arbitrary value for B, and no price for any other state.\n", "\n", "# states with an initial inventory\n", "stn.state('A', init = 100)\n", "\n", "# price data for product states\n", "stn.state('B', price = 10)\n", "\n", "# state -> task arcs\n", "stn.stArc('A', 'Heat')\n", "stn.stArc('hA', 'R1')\n", "stn.stArc('hA', 'R2')\n", "stn.stArc('IB', 'Sep')\n", "\n", "# task -> state arcs with durations\n", "stn.tsArc('Heat', 'hA', dur = 1)\n", "stn.tsArc('R1', 'IB', dur = 3)\n", "stn.tsArc('R2', 'IB', dur = 1)\n", "stn.tsArc('Sep', 'B', dur = 2)\n", "\n", "# unit/task data\n", "stn.unit('Heater', 'Heat', Bmax = 10)\n", "stn.unit('Reactor1', 'R1', Bmax = 4)\n", "stn.unit('Reactor2', 'R2', Bmax = 2)\n", "stn.unit('Filter', 'Sep', Bmax = 10)\n", "\n", "# choose a time horizon, then build and solve model\n", "H = 6\n", "stn.build(range(0,H+1))\n", "stn.solve()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "stn.gantt()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Starting Conditions\n", "\n", " Initial State Inventories are:\n", " hA 0.0 kg\n", " IB 0.0 kg\n", " A 100.0 kg\n", " B 0.0 kg\n", "\n", "Time = 0 hr\n", "\n", " 1. Assign Heater to Heat for 10.00 kg batch for 1.0 hours\n", " 2. Transfer 10.00 from A to Heater\n", "\n", " State Inventories are now:\n", " hA 0.0 kg\n", " IB 0.0 kg\n", " A 90.0 kg\n", " B 0.0 kg\n", "\n", " Unit Assignments are now:\n", " Filter is unassigned\n", " Reactor1 is unassigned\n", " Heater on Heat with 10.00 kg batch for hour 1 of 1\n", " Reactor2 is unassigned\n", "\n", "Time = 1 hr\n", "\n", " 1. Transfer 10.00 kg from Heater to hA\n", " 2. Assign Reactor1 to R1 for 4.00 kg batch for 3.0 hours\n", " 3. Transfer 4.00 from hA to Reactor1\n", " 4. Release Heater from Heat\n", " 5. Assign Reactor2 to R2 for 2.00 kg batch for 1.0 hours\n", " 6. Transfer 2.00 from hA to Reactor2\n", "\n", " State Inventories are now:\n", " hA 4.0 kg\n", " IB 0.0 kg\n", " A 90.0 kg\n", " B 0.0 kg\n", "\n", " Unit Assignments are now:\n", " Filter is unassigned\n", " Reactor1 on R1 with 4.00 kg batch for hour 1 of 3\n", " Heater is unassigned\n", " Reactor2 on R2 with 2.00 kg batch for hour 1 of 1\n", "\n", "Time = 2 hr\n", "\n", " 1. Transfer 2.00 kg from Reactor2 to IB\n", " 2. Release Reactor2 from R2\n", " 3. Assign Reactor2 to R2 for 2.00 kg batch for 1.0 hours\n", " 4. Transfer 2.00 from hA to Reactor2\n", "\n", " State Inventories are now:\n", " hA 2.0 kg\n", " IB 2.0 kg\n", " A 90.0 kg\n", " B 0.0 kg\n", "\n", " Unit Assignments are now:\n", " Filter is unassigned\n", " Reactor1 on R1 with 4.00 kg batch for hour 2 of 3\n", " Heater is unassigned\n", " Reactor2 on R2 with 2.00 kg batch for hour 1 of 1\n", "\n", "Time = 3 hr\n", "\n", " 1. Transfer 2.00 kg from Reactor2 to IB\n", " 2. Release Reactor2 from R2\n", " 3. Assign Reactor2 to R2 for 2.00 kg batch for 1.0 hours\n", " 4. Transfer 2.00 from hA to Reactor2\n", "\n", " State Inventories are now:\n", " hA 0.0 kg\n", " IB 4.0 kg\n", " A 90.0 kg\n", " B 0.0 kg\n", "\n", " Unit Assignments are now:\n", " Filter is unassigned\n", " Reactor1 on R1 with 4.00 kg batch for hour 3 of 3\n", " Heater is unassigned\n", " Reactor2 on R2 with 2.00 kg batch for hour 1 of 1\n", "\n", "Time = 4 hr\n", "\n", " 1. Transfer 4.00 kg from Reactor1 to IB\n", " 2. Transfer 2.00 kg from Reactor2 to IB\n", " 3. Assign Filter to Sep for 10.00 kg batch for 2.0 hours\n", " 4. Transfer 10.00 from IB to Filter\n", " 5. Release Reactor1 from R1\n", " 6. Release Reactor2 from R2\n", "\n", " State Inventories are now:\n", " hA 0.0 kg\n", " IB 0.0 kg\n", " A 90.0 kg\n", " B 0.0 kg\n", "\n", " Unit Assignments are now:\n", " Filter on Sep with 10.00 kg batch for hour 1 of 2\n", " Reactor1 is unassigned\n", " Heater is unassigned\n", " Reactor2 is unassigned\n", "\n", "Time = 5 hr\n", "\n", " State Inventories are now:\n", " hA 0.0 kg\n", " IB 0.0 kg\n", " A 90.0 kg\n", " B 0.0 kg\n", "\n", " Unit Assignments are now:\n", " Filter on Sep with 10.00 kg batch for hour 2 of 2\n", " Reactor1 is unassigned\n", " Heater is unassigned\n", " Reactor2 is unassigned\n", "\n", "Time = 6 hr\n", "\n", " 1. Transfer 10.00 kg from Filter to B\n", " 2. Release Filter from Sep\n", "\n", " State Inventories are now:\n", " hA 0.0 kg\n", " IB 0.0 kg\n", " A 90.0 kg\n", " B 10.0 kg\n", "\n", " Unit Assignments are now:\n", " Filter is unassigned\n", " Reactor1 is unassigned\n", " Heater is unassigned\n", " Reactor2 is unassigned\n" ] } ], "source": [ "stn.trace()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }