{ "cells": [ { "cell_type": "code", "execution_count": 30, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import IFrame\n", "\n", "# Inserta el nombre del archivo PDF en la siguiente línea\n", "archivo_pdf = \"Relojes.pdf\"\n", "\n", "# Cargar el PDF\n", "IFrame(archivo_pdf, width=1000, height=1500)\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/lib/python3/dist-packages/sage/misc/remote_file.py:46: DeprecationWarning: ssl.SSLContext() without protocol argument is deprecated.\n", " content = urlopen(req, timeout=1, context=SSLContext())\n", "/usr/lib/python3/dist-packages/sage/misc/remote_file.py:46: DeprecationWarning: ssl.PROTOCOL_TLS is deprecated\n", " content = urlopen(req, timeout=1, context=SSLContext())\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n", "\\begin{array}{lcrcrcrcl}\n", " \\max \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 250 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 225 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 275 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 4 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 3 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 400 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 5 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 5 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 500 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 3 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 3 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 300 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} x_{1} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 15 \\\\\n", "\\end{array} \\\\\n", "x_{1}, x_{2}, x_{3} \\geq 0\n", "\\end{array}$$" ], "text/plain": [ "LP problem (use 'view(...)' or '%display typeset' for details)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}27250$$" ], "text/plain": [ "27250" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(15,\\,25,\\,65\\right)$$" ], "text/plain": [ "(15, 25, 65)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}$$" ], "text/plain": [ "salto" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\texttt{El dual es:}}$$" ], "text/plain": [ "dual" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n", "\\begin{array}{lcrcrcrcrcl}\n", " \\min \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 400 y_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 500 y_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 300 y_{3} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 15 y_{4} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 4 y_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 5 y_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 y_{3} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} y_{4} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 250 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 3 y_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 y_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 3 y_{3} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 225 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 4 y_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 5 y_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 3 y_{3} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 275 \\\\\n", "\\end{array} \\\\\n", "y_{1} \\geq 0,\\ y_{2} \\geq 0,\\ y_{3} \\geq 0,\\ y_{4} \\leq 0\n", "\\end{array}$$" ], "text/plain": [ "LP problem (use 'view(...)' or '%display typeset' for details)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}27250$$" ], "text/plain": [ "27250" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(0,\\,50,\\,\\frac{25}{3},\\,-\\frac{50}{3}\\right)$$" ], "text/plain": [ "(0, 50, 25/3, -50/3)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}$$" ], "text/plain": [ "salto" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\ \\ \\ Fase\\ I}$$" ], "text/plain": [ "FI" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {\\color{red}{t}}_{4} & {b} \\\\\n", "\\hline\n", " {\\color{green}{s}}_{1} & 4 & 3 & 4 & 1 & 0 & 0 & 0 & 0 & 400 \\\\\n", "{\\color{green}{s}}_{2} & 5 & 4 & 5 & 0 & 1 & 0 & 0 & 0 & 500 \\\\\n", "{\\color{green}{s}}_{3} & 2 & 3 & 3 & 0 & 0 & 1 & 0 & 0 & 300 \\\\\n", "{\\color{red}{t}}_{4} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 1 & 15 \\\\\n", "\\hline\n", " {W_{ind}} & -1 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 15\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4 t4|rhs]\n", "[---+-------------------------------+---]\n", "[ s1| 4 3 4 1 0 0 0 0|400]\n", "[ s2| 5 4 5 0 1 0 0 0|500]\n", "[ s3| 2 3 3 0 0 1 0 0|300]\n", "[ t4| 1 0 0 0 0 0 -1 1| 15]\n", "[---+-------------------------------+---]\n", "[ W| -1 0 0 0 0 0 1 0| 15]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "cambio( 4 , 1 )\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {\\color{red}{t}}_{4} & {b} \\\\\n", "\\hline\n", " {\\color{green}{s}}_{1} & 0 & 3 & 4 & 1 & 0 & 0 & 4 & -4 & 340 \\\\\n", "{\\color{green}{s}}_{2} & 0 & 4 & 5 & 0 & 1 & 0 & 5 & -5 & 425 \\\\\n", "{\\color{green}{s}}_{3} & 0 & 3 & 3 & 0 & 0 & 1 & 2 & -2 & 270 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 1 & 15 \\\\\n", "\\hline\n", " {W_{ind}} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4 t4|rhs]\n", "[---+-------------------------------+---]\n", "[ s1| 0 3 4 1 0 0 4 -4|340]\n", "[ s2| 0 4 5 0 1 0 5 -5|425]\n", "[ s3| 0 3 3 0 0 1 2 -2|270]\n", "[ x1| 1 0 0 0 0 0 -1 1| 15]\n", "[---+-------------------------------+---]\n", "[ W| 0 0 0 0 0 0 0 1| 0]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "El problema de la fase I es óptimo y Wopt=0. Por tanto, el original es factible\n", "Preparemos el cuadro inicial de la fase II\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\ \\ \\ Fase\\ II}$$" ], "text/plain": [ "FII" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {b} \\\\\n", "\\hline\n", " {\\color{green}{s}}_{1} & 0 & 3 & 4 & 1 & 0 & 0 & 4 & 340 \\\\\n", "{\\color{green}{s}}_{2} & 0 & 4 & 5 & 0 & 1 & 0 & 5 & 425 \\\\\n", "{\\color{green}{s}}_{3} & 0 & 3 & 3 & 0 & 0 & 1 & 2 & 270 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 15 \\\\\n", "\\hline\n", " {Z_{ind}} & 0 & 225 & 275 & 0 & 0 & 0 & 250 & 3750\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4| rhs]\n", "[----+----------------------------------+----]\n", "[ s1| 0 3 4 1 0 0 4| 340]\n", "[ s2| 0 4 5 0 1 0 5| 425]\n", "[ s3| 0 3 3 0 0 1 2| 270]\n", "[ x1| 1 0 0 0 0 0 -1| 15]\n", "[----+----------------------------------+----]\n", "[ Z| 0 225 275 0 0 0 250|3750]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "cambio( 1 , 3 )\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {b} \\\\\n", "\\hline\n", " {x}_{3} & 0 & \\frac{3}{4} & 1 & \\frac{1}{4} & 0 & 0 & 1 & 85 \\\\\n", "{\\color{green}{s}}_{2} & 0 & \\frac{1}{4} & 0 & -\\frac{5}{4} & 1 & 0 & 0 & 0 \\\\\n", "{\\color{green}{s}}_{3} & 0 & \\frac{3}{4} & 0 & -\\frac{3}{4} & 0 & 1 & -1 & 15 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 15 \\\\\n", "\\hline\n", " {Z_{ind}} & 0 & \\frac{75}{4} & 0 & -\\frac{275}{4} & 0 & 0 & -25 & 27125\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4| rhs]\n", "[------+------------------------------------------------+------]\n", "[ x3| 0 3/4 1 1/4 0 0 1| 85]\n", "[ s2| 0 1/4 0 -5/4 1 0 0| 0]\n", "[ s3| 0 3/4 0 -3/4 0 1 -1| 15]\n", "[ x1| 1 0 0 0 0 0 -1| 15]\n", "[------+------------------------------------------------+------]\n", "[ Z| 0 75/4 0 -275/4 0 0 -25| 27125]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "cambio( 2 , 2 )\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {b} \\\\\n", "\\hline\n", " {x}_{3} & 0 & 0 & 1 & 4 & -3 & 0 & 1 & 85 \\\\\n", "{x}_{2} & 0 & 1 & 0 & -5 & 4 & 0 & 0 & 0 \\\\\n", "{\\color{green}{s}}_{3} & 0 & 0 & 0 & 3 & -3 & 1 & -1 & 15 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 15 \\\\\n", "\\hline\n", " {Z_{ind}} & 0 & 0 & 0 & 25 & -75 & 0 & -25 & 27125\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4| rhs]\n", "[-----+-----------------------------------------+-----]\n", "[ x3| 0 0 1 4 -3 0 1| 85]\n", "[ x2| 0 1 0 -5 4 0 0| 0]\n", "[ s3| 0 0 0 3 -3 1 -1| 15]\n", "[ x1| 1 0 0 0 0 0 -1| 15]\n", "[-----+-----------------------------------------+-----]\n", "[ Z| 0 0 0 25 -75 0 -25|27125]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "cambio( 3 , 4 )\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {b} \\\\\n", "\\hline\n", " {x}_{3} & 0 & 0 & 1 & 0 & 1 & -\\frac{4}{3} & \\frac{7}{3} & 65 \\\\\n", "{x}_{2} & 0 & 1 & 0 & 0 & -1 & \\frac{5}{3} & -\\frac{5}{3} & 25 \\\\\n", "{\\color{green}{s}}_{1} & 0 & 0 & 0 & 1 & -1 & \\frac{1}{3} & -\\frac{1}{3} & 5 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 15 \\\\\n", "\\hline\n", " {Z_{ind}} & 0 & 0 & 0 & 0 & -50 & -\\frac{25}{3} & -\\frac{50}{3} & 27250\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4| rhs]\n", "[-----+-----------------------------------------+-----]\n", "[ x3| 0 0 1 0 1 -4/3 7/3| 65]\n", "[ x2| 0 1 0 0 -1 5/3 -5/3| 25]\n", "[ s1| 0 0 0 1 -1 1/3 -1/3| 5]\n", "[ x1| 1 0 0 0 0 0 -1| 15]\n", "[-----+-----------------------------------------+-----]\n", "[ Z| 0 0 0 0 -50 -25/3 -50/3|27250]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "El problema es óptimo\n" ] } ], "source": [ "tipo='max' # max o min\n", "\n", "n=3 # número de variables x's\n", "m=4 # número de restricciones (distintas de las de signo)\n", "\n", "c=matrix(QQ,1,n,[250,225,275] ) # vector de costos\n", "\n", "A=matrix(QQ,m,n,[ # coeficientes de las variables x's\n", "[4,3,4],\n", "[5,4,5],\n", "[2,3,3],\n", "[1,0,0]\n", "])\n", "\n", "b=matrix(QQ,m,1,[400,500,300,15]) # vector de la derecha\n", "\n", "\n", "######################################################\n", "############### VARIABLES DE HOLGURA ################\n", "\n", "\n", "h=matrix(ZZ,1,m,[1,1,1,-1]) # variables de holgura: \n", " # Pon 1 si va sumando, \n", " # -1 si va restando y \n", " # 0 si no hay variable de holgura.\n", "\n", "t=matrix(ZZ,1,m,[0,0 ,0,1]) # variables artificiales: \n", " # pon 1 si utilizas variable artificial en la fila i-ésima\n", " # 0 si no utilizas variable artificial en la fila i-ésima\n", "\n", "colId=(4,5,6,8) # posición de la matriz identidad\n", "\n", "\n", "####################################################################\n", "############ HASTA AQUÍ LOS DATOS ################################\n", "####################################################################\n", "\n", "load('https://sage.unex.es/501708/simplex2023Auto.sage')\n", "#load('https://sage.unex.es/501708/simplex2023AutoREVISED.sage')\n", "#load('https://sage.unex.es/501708/simplex2023CompletamenteManual.sage')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Supongamos que esta semana tenemos limitada la producción total a 100 relojes. \n", "Hay que añadir al problema la restricción de que la suma de las variables sea $\\leq 100.$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " " ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}7$$" ], "text/plain": [ "7" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show(nv)\n", "#v=matrix(QQ,1,nv,[1,1,1,1,1,1,0,0,0,0,0] ); R=30;\n", "#añadeRes(v,R)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrr}\n", "0 & 1 & -\\frac{4}{3} & -\\frac{7}{3} \\\\\n", "0 & -1 & \\frac{5}{3} & \\frac{5}{3} \\\\\n", "1 & -1 & \\frac{1}{3} & \\frac{1}{3} \\\\\n", "0 & 0 & 0 & 1\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 0 1 -4/3 -7/3]\n", "[ 0 -1 5/3 5/3]\n", "[ 1 -1 1/3 1/3]\n", "[ 0 0 0 1]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show(BM1)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {\\color{green}{s}}_{5} & {b} \\\\\n", "\\hline\n", " {x}_{3} & 0 & 0 & 1 & 0 & 1 & -\\frac{4}{3} & \\frac{7}{3} & 0 & 65 \\\\\n", "{x}_{2} & 0 & 1 & 0 & 0 & -1 & \\frac{5}{3} & -\\frac{5}{3} & 0 & 25 \\\\\n", "{\\color{green}{s}}_{1} & 0 & 0 & 0 & 1 & -1 & \\frac{1}{3} & -\\frac{1}{3} & 0 & 5 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 0 & 15 \\\\\n", "{\\color{green}{s}}_{5} & 0 & 0 & 0 & 0 & 0 & -\\frac{1}{3} & \\frac{1}{3} & 1 & -5 \\\\\n", "\\hline\n", " {Z_{ind}} & 0 & 0 & 0 & 0 & -50 & -\\frac{25}{3} & -\\frac{50}{3} & 0 & 27250\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4 s5| rhs]\n", "[-----+-----------------------------------------------+-----]\n", "[ x3| 0 0 1 0 1 -4/3 7/3 0| 65]\n", "[ x2| 0 1 0 0 -1 5/3 -5/3 0| 25]\n", "[ s1| 0 0 0 1 -1 1/3 -1/3 0| 5]\n", "[ x1| 1 0 0 0 0 0 -1 0| 15]\n", "[ s5| 0 0 0 0 0 -1/3 1/3 1| -5]\n", "[-----+-----------------------------------------------+-----]\n", "[ Z| 0 0 0 0 -50 -25/3 -50/3 0|27250]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "v=matrix(QQ,1,nv,[1,1,1,0,0,0,0] ); R=100;\n", "añadeRes(v,R)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrrr}\n", "0 & 1 & -\\frac{4}{3} & -\\frac{7}{3} & 0 \\\\\n", "0 & -1 & \\frac{5}{3} & \\frac{5}{3} & 0 \\\\\n", "1 & -1 & \\frac{1}{3} & \\frac{1}{3} & 0 \\\\\n", "0 & 0 & 0 & 1 & 0 \\\\\n", "0 & 0 & -\\frac{1}{3} & -\\frac{1}{3} & 1\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 0 1 -4/3 -7/3 0]\n", "[ 0 -1 5/3 5/3 0]\n", "[ 1 -1 1/3 1/3 0]\n", "[ 0 0 0 1 0]\n", "[ 0 0 -1/3 -1/3 1]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show(BM1)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {\\color{green}{s}}_{5} & {b} \\\\\n", "\\hline\n", " {x}_{3} & 0 & 0 & 1 & 0 & 1 & 0 & 1 & -4 & 85 \\\\\n", "{x}_{2} & 0 & 1 & 0 & 0 & -1 & 0 & 0 & 5 & 0 \\\\\n", "{\\color{green}{s}}_{1} & 0 & 0 & 0 & 1 & -1 & 0 & 0 & 1 & 0 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 0 & 15 \\\\\n", "{\\color{green}{s}}_{3} & 0 & 0 & 0 & 0 & 0 & 1 & -1 & -3 & 15 \\\\\n", "\\hline\n", " {Z_{ind}} & 0 & 0 & 0 & 0 & -50 & 0 & -25 & -25 & 27125\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4 s5| rhs]\n", "[-----+-----------------------------------------------+-----]\n", "[ x3| 0 0 1 0 1 0 1 -4| 85]\n", "[ x2| 0 1 0 0 -1 0 0 5| 0]\n", "[ s1| 0 0 0 1 -1 0 0 1| 0]\n", "[ x1| 1 0 0 0 0 0 -1 0| 15]\n", "[ s3| 0 0 0 0 0 1 -1 -3| 15]\n", "[-----+-----------------------------------------------+-----]\n", "[ Z| 0 0 0 0 -50 0 -25 -25|27125]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cambio(5,6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cómo hacerlo manualmente?" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n", "\\begin{array}{lcrcrcrcl}\n", " \\max \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 250 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 225 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 275 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 4 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 3 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 400 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 5 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 5 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 500 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 3 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 3 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 300 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} x_{1} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 15 \\\\\n", "\\end{array} \\\\\n", "x_{1}, x_{2}, x_{3} \\geq 0\n", "\\end{array}$$" ], "text/plain": [ "LP problem (use 'view(...)' or '%display typeset' for details)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}27250$$" ], "text/plain": [ "27250" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(15,\\,25,\\,65\\right)$$" ], "text/plain": [ "(15, 25, 65)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}$$" ], "text/plain": [ "salto" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\texttt{El dual es:}}$$" ], "text/plain": [ "dual" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n", "\\begin{array}{lcrcrcrcrcl}\n", " \\min \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 400 y_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 500 y_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 300 y_{3} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 15 y_{4} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 4 y_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 5 y_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 y_{3} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} y_{4} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 250 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 3 y_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 y_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 3 y_{3} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 225 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 4 y_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 5 y_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 3 y_{3} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 275 \\\\\n", "\\end{array} \\\\\n", "y_{1} \\geq 0,\\ y_{2} \\geq 0,\\ y_{3} \\geq 0,\\ y_{4} \\leq 0\n", "\\end{array}$$" ], "text/plain": [ "LP problem (use 'view(...)' or '%display typeset' for details)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}27250$$" ], "text/plain": [ "27250" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(0,\\,50,\\,\\frac{25}{3},\\,-\\frac{50}{3}\\right)$$" ], "text/plain": [ "(0, 50, 25/3, -50/3)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}$$" ], "text/plain": [ "salto" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\ \\ \\ Fase\\ I}$$" ], "text/plain": [ "FI" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {\\color{red}{t}}_{4} & {b} \\\\\n", "\\hline\n", " {\\color{green}{s}}_{1} & 4 & 3 & 4 & 1 & 0 & 0 & 0 & 0 & 400 \\\\\n", "{\\color{green}{s}}_{2} & 5 & 4 & 5 & 0 & 1 & 0 & 0 & 0 & 500 \\\\\n", "{\\color{green}{s}}_{3} & 2 & 3 & 3 & 0 & 0 & 1 & 0 & 0 & 300 \\\\\n", "{\\color{red}{t}}_{4} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 1 & 15 \\\\\n", "\\hline\n", " {W_{ind}} & -1 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 15\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4 t4|rhs]\n", "[---+-------------------------------+---]\n", "[ s1| 4 3 4 1 0 0 0 0|400]\n", "[ s2| 5 4 5 0 1 0 0 0|500]\n", "[ s3| 2 3 3 0 0 1 0 0|300]\n", "[ t4| 1 0 0 0 0 0 -1 1| 15]\n", "[---+-------------------------------+---]\n", "[ W| -1 0 0 0 0 0 1 0| 15]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "cambio( 4 , 1 )\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {\\color{red}{t}}_{4} & {b} \\\\\n", "\\hline\n", " {\\color{green}{s}}_{1} & 0 & 3 & 4 & 1 & 0 & 0 & 4 & -4 & 340 \\\\\n", "{\\color{green}{s}}_{2} & 0 & 4 & 5 & 0 & 1 & 0 & 5 & -5 & 425 \\\\\n", "{\\color{green}{s}}_{3} & 0 & 3 & 3 & 0 & 0 & 1 & 2 & -2 & 270 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 1 & 15 \\\\\n", "\\hline\n", " {W_{ind}} & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4 t4|rhs]\n", "[---+-------------------------------+---]\n", "[ s1| 0 3 4 1 0 0 4 -4|340]\n", "[ s2| 0 4 5 0 1 0 5 -5|425]\n", "[ s3| 0 3 3 0 0 1 2 -2|270]\n", "[ x1| 1 0 0 0 0 0 -1 1| 15]\n", "[---+-------------------------------+---]\n", "[ W| 0 0 0 0 0 0 0 1| 0]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "El problema de la fase I es óptimo y Wopt=0. Por tanto, el original es factible\n", "Preparemos el cuadro inicial de la fase II\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{\\ \\ \\ Fase\\ II}$$" ], "text/plain": [ "FII" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$" ], "text/plain": [ "ry" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {b} \\\\\n", "\\hline\n", " {\\color{green}{s}}_{1} & 0 & 3 & 4 & 1 & 0 & 0 & 4 & 340 \\\\\n", "{\\color{green}{s}}_{2} & 0 & 4 & 5 & 0 & 1 & 0 & 5 & 425 \\\\\n", "{\\color{green}{s}}_{3} & 0 & 3 & 3 & 0 & 0 & 1 & 2 & 270 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 15 \\\\\n", "\\hline\n", " {Z_{ind}} & 0 & 225 & 275 & 0 & 0 & 0 & 250 & 3750\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4| rhs]\n", "[----+----------------------------------+----]\n", "[ s1| 0 3 4 1 0 0 4| 340]\n", "[ s2| 0 4 5 0 1 0 5| 425]\n", "[ s3| 0 3 3 0 0 1 2| 270]\n", "[ x1| 1 0 0 0 0 0 -1| 15]\n", "[----+----------------------------------+----]\n", "[ Z| 0 225 275 0 0 0 250|3750]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "cambio( 1 , 3 )\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {b} \\\\\n", "\\hline\n", " {x}_{3} & 0 & \\frac{3}{4} & 1 & \\frac{1}{4} & 0 & 0 & 1 & 85 \\\\\n", "{\\color{green}{s}}_{2} & 0 & \\frac{1}{4} & 0 & -\\frac{5}{4} & 1 & 0 & 0 & 0 \\\\\n", "{\\color{green}{s}}_{3} & 0 & \\frac{3}{4} & 0 & -\\frac{3}{4} & 0 & 1 & -1 & 15 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 15 \\\\\n", "\\hline\n", " {Z_{ind}} & 0 & \\frac{75}{4} & 0 & -\\frac{275}{4} & 0 & 0 & -25 & 27125\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4| rhs]\n", "[------+------------------------------------------------+------]\n", "[ x3| 0 3/4 1 1/4 0 0 1| 85]\n", "[ s2| 0 1/4 0 -5/4 1 0 0| 0]\n", "[ s3| 0 3/4 0 -3/4 0 1 -1| 15]\n", "[ x1| 1 0 0 0 0 0 -1| 15]\n", "[------+------------------------------------------------+------]\n", "[ Z| 0 75/4 0 -275/4 0 0 -25| 27125]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "cambio( 2 , 2 )\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {b} \\\\\n", "\\hline\n", " {x}_{3} & 0 & 0 & 1 & 4 & -3 & 0 & 1 & 85 \\\\\n", "{x}_{2} & 0 & 1 & 0 & -5 & 4 & 0 & 0 & 0 \\\\\n", "{\\color{green}{s}}_{3} & 0 & 0 & 0 & 3 & -3 & 1 & -1 & 15 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 15 \\\\\n", "\\hline\n", " {Z_{ind}} & 0 & 0 & 0 & 25 & -75 & 0 & -25 & 27125\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4| rhs]\n", "[-----+-----------------------------------------+-----]\n", "[ x3| 0 0 1 4 -3 0 1| 85]\n", "[ x2| 0 1 0 -5 4 0 0| 0]\n", "[ s3| 0 0 0 3 -3 1 -1| 15]\n", "[ x1| 1 0 0 0 0 0 -1| 15]\n", "[-----+-----------------------------------------+-----]\n", "[ Z| 0 0 0 25 -75 0 -25|27125]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "cambio( 3 , 4 )\n" ] }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrrr|r}\n", "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {b} \\\\\n", "\\hline\n", " {x}_{3} & 0 & 0 & 1 & 0 & 1 & -\\frac{4}{3} & \\frac{7}{3} & 65 \\\\\n", "{x}_{2} & 0 & 1 & 0 & 0 & -1 & \\frac{5}{3} & -\\frac{5}{3} & 25 \\\\\n", "{\\color{green}{s}}_{1} & 0 & 0 & 0 & 1 & -1 & \\frac{1}{3} & -\\frac{1}{3} & 5 \\\\\n", "{x}_{1} & 1 & 0 & 0 & 0 & 0 & 0 & -1 & 15 \\\\\n", "\\hline\n", " {Z_{ind}} & 0 & 0 & 0 & 0 & -50 & -\\frac{25}{3} & -\\frac{50}{3} & 27250\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ B| x1 x2 x3 s1 s2 s3 s4| rhs]\n", "[-----+-----------------------------------------+-----]\n", "[ x3| 0 0 1 0 1 -4/3 7/3| 65]\n", "[ x2| 0 1 0 0 -1 5/3 -5/3| 25]\n", "[ s1| 0 0 0 1 -1 1/3 -1/3| 5]\n", "[ x1| 1 0 0 0 0 0 -1| 15]\n", "[-----+-----------------------------------------+-----]\n", "[ Z| 0 0 0 0 -50 -25/3 -50/3|27250]" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "El problema es óptimo\n" ] } ], "source": [ "tipo='max' # max o min\n", "\n", "n=3 # número de variables x's\n", "m=4 # número de restricciones (distintas de las de signo)\n", "\n", "c=matrix(QQ,1,n,[250,225,275] ) # vector de costos\n", "\n", "A=matrix(QQ,m,n,[ # coeficientes de las variables x's\n", "[4,3,4],\n", "[5,4,5],\n", "[2,3,3],\n", "[1,0,0]\n", "])\n", "\n", "b=matrix(QQ,m,1,[400,500,300,15]) # vector de la derecha\n", "\n", "\n", "######################################################\n", "############### VARIABLES DE HOLGURA ################\n", "\n", "\n", "h=matrix(ZZ,1,m,[1,1,1,-1]) # variables de holgura: \n", " # Pon 1 si va sumando, \n", " # -1 si va restando y \n", " # 0 si no hay variable de holgura.\n", "\n", "t=matrix(ZZ,1,m,[0,0 ,0,1]) # variables artificiales: \n", " # pon 1 si utilizas variable artificial en la fila i-ésima\n", " # 0 si no utilizas variable artificial en la fila i-ésima\n", "\n", "colId=(4,5,6,8) # posición de la matriz identidad\n", "\n", "\n", "####################################################################\n", "############ HASTA AQUÍ LOS DATOS ################################\n", "####################################################################\n", "\n", "load('https://sage.unex.es/501708/simplex2023Auto.sage')\n", "#load('https://sage.unex.es/501708/simplex2023AutoREVISED.sage')\n", "#load('https://sage.unex.es/501708/simplex2023CompletamenteManual.sage')" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrr|rrrr|r}\n", "4 & 3 & 4 & 1 & 0 & 0 & 0 & 0 \\\\\n", "5 & 4 & 5 & 0 & 1 & 0 & 0 & 0 \\\\\n", "2 & 3 & 3 & 0 & 0 & 1 & 0 & 0 \\\\\n", "1 & 0 & 0 & 0 & 0 & 0 & -1 & 1\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 4 3 4| 1 0 0 0| 0]\n", "[ 5 4 5| 0 1 0 0| 0]\n", "[ 2 3 3| 0 0 1 0| 0]\n", "[ 1 0 0| 0 0 0 -1| 1]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show(Aoriginal)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{rrrrrrr}\n", "4 & 3 & 4 & 1 & 0 & 0 & 0 \\\\\n", "5 & 4 & 5 & 0 & 1 & 0 & 0 \\\\\n", "2 & 3 & 3 & 0 & 0 & 1 & 0 \\\\\n", "1 & 0 & 0 & 0 & 0 & 0 & -1\n", "\\end{array}\\right)$$" ], "text/plain": [ "[ 4 3 4 1 0 0 0]\n", "[ 5 4 5 0 1 0 0]\n", "[ 2 3 3 0 0 1 0]\n", "[ 1 0 0 0 0 0 -1]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "AAA=Aoriginal; AAAA=AAA[:,[0..6]]; show(AAAA)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "ename": "ValueError", "evalue": "sequence too long (expected length 6, got more)", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn [59], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m v\u001b[38;5;241m=\u001b[39m\u001b[43mmatrix\u001b[49m\u001b[43m(\u001b[49m\u001b[43mQQ\u001b[49m\u001b[43m,\u001b[49m\u001b[43mInteger\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43mnv\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[43mInteger\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m[\u001b[49m\u001b[43mInteger\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43mInteger\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43mInteger\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43mInteger\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43mInteger\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43mInteger\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43mInteger\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[43m)\u001b[49m;\n\u001b[1;32m 2\u001b[0m show(BM1[Integer(\u001b[38;5;241m4\u001b[39m),:])\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/matrix/constructor.pyx:643\u001b[0m, in \u001b[0;36msage.matrix.constructor.matrix (build/cythonized/sage/matrix/constructor.c:2796)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 641\u001b[0m \"\"\"\n\u001b[1;32m 642\u001b[0m immutable = kwds.pop('immutable', False)\n\u001b[0;32m--> 643\u001b[0m M = MatrixArgs(*args, **kwds).matrix()\n\u001b[1;32m 644\u001b[0m if immutable:\n\u001b[1;32m 645\u001b[0m M.set_immutable()\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/matrix/args.pyx:667\u001b[0m, in \u001b[0;36msage.matrix.args.MatrixArgs.matrix (build/cythonized/sage/matrix/args.c:8084)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 665\u001b[0m break\n\u001b[1;32m 666\u001b[0m else:\n\u001b[0;32m--> 667\u001b[0m M = self.space(self, coerce=convert)\n\u001b[1;32m 668\u001b[0m \n\u001b[1;32m 669\u001b[0m # Also store the matrix to support multiple calls of matrix()\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/structure/parent.pyx:900\u001b[0m, in \u001b[0;36msage.structure.parent.Parent.__call__ (build/cythonized/sage/structure/parent.c:9549)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 898\u001b[0m return mor._call_(x)\n\u001b[1;32m 899\u001b[0m else:\n\u001b[0;32m--> 900\u001b[0m return mor._call_with_args(x, args, kwds)\n\u001b[1;32m 901\u001b[0m \n\u001b[1;32m 902\u001b[0m raise TypeError(_LazyString(_lazy_format, (\"No conversion defined from %s to %s\", R, self), {}))\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/structure/coerce_maps.pyx:180\u001b[0m, in \u001b[0;36msage.structure.coerce_maps.DefaultConvertMap_unique._call_with_args (build/cythonized/sage/structure/coerce_maps.c:5330)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 178\u001b[0m print(type(C), C)\n\u001b[1;32m 179\u001b[0m print(type(C._element_constructor), C._element_constructor)\n\u001b[0;32m--> 180\u001b[0m raise\n\u001b[1;32m 181\u001b[0m \n\u001b[1;32m 182\u001b[0m \n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/structure/coerce_maps.pyx:170\u001b[0m, in \u001b[0;36msage.structure.coerce_maps.DefaultConvertMap_unique._call_with_args (build/cythonized/sage/structure/coerce_maps.c:5120)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 168\u001b[0m return C._element_constructor(x)\n\u001b[1;32m 169\u001b[0m else:\n\u001b[0;32m--> 170\u001b[0m return C._element_constructor(x, **kwds)\n\u001b[1;32m 171\u001b[0m else:\n\u001b[1;32m 172\u001b[0m if len(kwds) == 0:\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/matrix/matrix_space.py:925\u001b[0m, in \u001b[0;36mMatrixSpace._element_constructor_\u001b[0;34m(self, entries, **kwds)\u001b[0m\n\u001b[1;32m 815\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_element_constructor_\u001b[39m(\u001b[38;5;28mself\u001b[39m, entries, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwds):\n\u001b[1;32m 816\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 817\u001b[0m \u001b[38;5;124;03m Construct an element of ``self`` from ``entries``.\u001b[39;00m\n\u001b[1;32m 818\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 923\u001b[0m \u001b[38;5;124;03m False\u001b[39;00m\n\u001b[1;32m 924\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 925\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43melement_class\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mentries\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/matrix/matrix_rational_dense.pyx:192\u001b[0m, in \u001b[0;36msage.matrix.matrix_rational_dense.Matrix_rational_dense.__init__ (build/cythonized/sage/matrix/matrix_rational_dense.cpp:5027)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 190\u001b[0m ma = MatrixArgs_init(parent, entries)\n\u001b[1;32m 191\u001b[0m cdef Rational z\n\u001b[0;32m--> 192\u001b[0m for t in ma.iter(coerce, True):\n\u001b[1;32m 193\u001b[0m se = t\n\u001b[1;32m 194\u001b[0m z = se.entry\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/matrix/args.pyx:531\u001b[0m, in \u001b[0;36miter (build/cythonized/sage/matrix/args.c:6820)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 529\u001b[0m for j in range(self.ncols):\n\u001b[1;32m 530\u001b[0m sig_check()\n\u001b[0;32m--> 531\u001b[0m x = next(it)\n\u001b[1;32m 532\u001b[0m if convert and self.need_to_convert(x):\n\u001b[1;32m 533\u001b[0m x = self.base(x)\n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/misc/misc_c.pyx:729\u001b[0m, in \u001b[0;36msage.misc.misc_c.sized_iter.__next__ (build/cythonized/sage/misc/misc_c.c:6215)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 727\u001b[0m raise ValueError(f\"sequence too short (expected length {self.size}, got {self.index})\")\n\u001b[1;32m 728\u001b[0m self.index += 1\n\u001b[0;32m--> 729\u001b[0m self.check()\n\u001b[1;32m 730\u001b[0m return x\n\u001b[1;32m 731\u001b[0m \n", "File \u001b[0;32m/usr/lib/python3/dist-packages/sage/misc/misc_c.pyx:719\u001b[0m, in \u001b[0;36msage.misc.misc_c.sized_iter.check (build/cythonized/sage/misc/misc_c.c:5938)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 717\u001b[0m pass\n\u001b[1;32m 718\u001b[0m else:\n\u001b[0;32m--> 719\u001b[0m raise ValueError(f\"sequence too long (expected length {self.size}, got more)\")\n\u001b[1;32m 720\u001b[0m \n\u001b[1;32m 721\u001b[0m def __next__(self):\n", "\u001b[0;31mValueError\u001b[0m: sequence too long (expected length 6, got more)" ] } ], "source": [ "v=matrix(QQ,1,nv,[1,1,1,0,0,0,0] );\n", "show(BM1[4,:])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.5", "language": "sage", "name": "sagemath" }, "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.11.2" } }, "nbformat": 4, "nbformat_minor": 4 }