{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Linear Programming" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "# Construct lines\n", "# x > 0\n", "x = np.linspace(0, 20, 2000)\n", "# y >= 2\n", "y1 = (x*0) + 2\n", "# 2y <= 25 - x\n", "y2 = (25-x)/2.0\n", "# 4y >= 2x - 8 \n", "y3 = (2*x-8)/4.0\n", "# y <= 2x - 5 \n", "y4 = 2 * x -5\n", "\n", "# Make plot\n", "plt.plot(x, y1, label=r'$y\\geq2$')\n", "plt.plot(x, y2, label=r'$2y\\leq25-x$')\n", "plt.plot(x, y3, label=r'$4y\\geq 2x - 8$')\n", "plt.plot(x, y4, label=r'$y\\leq 2x-5$')\n", "plt.xlim((0, 16))\n", "plt.ylim((0, 11))\n", "plt.xlabel(r'$x$')\n", "plt.ylabel(r'$y$')\n", "\n", "# Fill feasible region\n", "y5 = np.minimum(y2, y4)\n", "y6 = np.maximum(y1, y3)\n", "plt.fill_between(x, y5, y6, where=y5>y6, color='grey', alpha=0.5)\n", "plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)" ] } ], "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.4" } }, "nbformat": 4, "nbformat_minor": 2 }