{
"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
}