{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n",
       "\\begin{array}{lcrcrcl}\n",
       " \\max \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{2} \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 15 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 12 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 10 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 11 \\\\\n",
       "\\end{array} \\\\\n",
       "x_{1}, x_{2} \\geq 0\n",
       "\\end{array}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n",
       "\\begin{array}{lcrcrcl}\n",
       " \\max \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{2} \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 15 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 12 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 10 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 11 \\\\\n",
       "\\end{array} \\\\\n",
       "x_{1}, x_{2} \\geq 0\n",
       "\\end{array}$$"
      ],
      "text/plain": [
       "LP problem (use 'view(...)' or '%display typeset' for details)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\frac{27}{2}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\frac{27}{2}$$"
      ],
      "text/plain": [
       "27/2"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\frac{7}{2},\\,\\frac{3}{2}\\right)</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\frac{7}{2},\\,\\frac{3}{2}\\right)$$"
      ],
      "text/plain": [
       "(7/2, 3/2)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}$$"
      ],
      "text/plain": [
       "salto"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{green}{s}}_{1} & 1 & 4 & 1 & 0 & 0 & 0 & 15 \\\\\n",
       "{\\color{green}{s}}_{2} & 3 & 1 & 0 & 1 & 0 & 0 & 12 \\\\\n",
       "{\\color{green}{s}}_{3} & 2 & 2 & 0 & 0 & 1 & 0 & 10 \\\\\n",
       "{\\color{green}{s}}_{4} & 3 & -1 & 0 & 0 & 0 & 1 & 11 \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 3 & 2 & 0 & 0 & 0 & 0 & 0\n",
       "\\end{array}\\right)</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {\\color{green}{s}}_{3} & {\\color{green}{s}}_{4} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{green}{s}}_{1} & 1 & 4 & 1 & 0 & 0 & 0 & 15 \\\\\n",
       "{\\color{green}{s}}_{2} & 3 & 1 & 0 & 1 & 0 & 0 & 12 \\\\\n",
       "{\\color{green}{s}}_{3} & 2 & 2 & 0 & 0 & 1 & 0 & 10 \\\\\n",
       "{\\color{green}{s}}_{4} & 3 & -1 & 0 & 0 & 0 & 1 & 11 \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 3 & 2 & 0 & 0 & 0 & 0 & 0\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[  B| x1  x2  s1  s2  s3  s4|rhs]\n",
       "[---+-----------------------+---]\n",
       "[ s1|  1   4   1   0   0   0| 15]\n",
       "[ s2|  3   1   0   1   0   0| 12]\n",
       "[ s3|  2   2   0   0   1   0| 10]\n",
       "[ s4|  3  -1   0   0   0   1| 11]\n",
       "[---+-----------------------+---]\n",
       "[  Z|  3   2   0   0   0   0|  0]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tipo ='max'     #   Problema de tipo max o min\n",
    "\n",
    "n=2 #  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,[3,2] )  # vector de costos\n",
    "\n",
    "A=matrix(QQ,m,n,[   # coeficientes de las variables x's\n",
    "[1,4],\n",
    "[3,1],\n",
    "[2,2],\n",
    "[3,-1]\n",
    "])\n",
    "\n",
    "b=matrix(QQ,m,1,[15,12,10,11])  # vector de la derecha\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,0])   # 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=(3,4,5,6) # posición de la matriz identidad\n",
    "\n",
    "\n",
    "    \n",
    "    \n",
    "####################################################################\n",
    "############  HASTA AQUÍ LOS DATOS  ################################\n",
    "####################################################################\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "load('https://sage.unex.es/501708/simplex2023CompletamenteManual.sage')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[    NO]\n",
       "[    NO]\n",
       "[    NO]\n",
       "[11.000]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cocientes(6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\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 & \\frac{13}{3} & 1 & 0 & 0 & -\\frac{1}{3} & \\frac{34}{3} \\\\\n",
       "{\\color{green}{s}}_{2} & 0 & 2 & 0 & 1 & 0 & -1 & 1 \\\\\n",
       "{\\color{green}{s}}_{3} & 0 & \\frac{8}{3} & 0 & 0 & 1 & -\\frac{2}{3} & \\frac{8}{3} \\\\\n",
       "{x}_{1} & 1 & -\\frac{1}{3} & 0 & 0 & 0 & \\frac{1}{3} & \\frac{11}{3} \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 0 & 3 & 0 & 0 & 0 & -1 & 11\n",
       "\\end{array}\\right)</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\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 & \\frac{13}{3} & 1 & 0 & 0 & -\\frac{1}{3} & \\frac{34}{3} \\\\\n",
       "{\\color{green}{s}}_{2} & 0 & 2 & 0 & 1 & 0 & -1 & 1 \\\\\n",
       "{\\color{green}{s}}_{3} & 0 & \\frac{8}{3} & 0 & 0 & 1 & -\\frac{2}{3} & \\frac{8}{3} \\\\\n",
       "{x}_{1} & 1 & -\\frac{1}{3} & 0 & 0 & 0 & \\frac{1}{3} & \\frac{11}{3} \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 0 & 3 & 0 & 0 & 0 & -1 & 11\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[   B|  x1   x2   s1   s2   s3   s4| rhs]\n",
       "[----+-----------------------------+----]\n",
       "[  s1|   0 13/3    1    0    0 -1/3|34/3]\n",
       "[  s2|   0    2    0    1    0   -1|   1]\n",
       "[  s3|   0  8/3    0    0    1 -2/3| 8/3]\n",
       "[  x1|   1 -1/3    0    0    0  1/3|11/3]\n",
       "[----+-----------------------------+----]\n",
       "[   Z|   0    3    0    0    0   -1|  11]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cambio(4,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\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 & 0 & 1 & -\\frac{13}{6} & 0 & \\frac{11}{6} & \\frac{55}{6} \\\\\n",
       "{x}_{2} & 0 & 1 & 0 & \\frac{1}{2} & 0 & -\\frac{1}{2} & \\frac{1}{2} \\\\\n",
       "{\\color{green}{s}}_{3} & 0 & 0 & 0 & -\\frac{4}{3} & 1 & \\frac{2}{3} & \\frac{4}{3} \\\\\n",
       "{x}_{1} & 1 & 0 & 0 & \\frac{1}{6} & 0 & \\frac{1}{6} & \\frac{23}{6} \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 0 & 0 & 0 & -\\frac{3}{2} & 0 & \\frac{1}{2} & \\frac{25}{2}\n",
       "\\end{array}\\right)</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\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 & 0 & 1 & -\\frac{13}{6} & 0 & \\frac{11}{6} & \\frac{55}{6} \\\\\n",
       "{x}_{2} & 0 & 1 & 0 & \\frac{1}{2} & 0 & -\\frac{1}{2} & \\frac{1}{2} \\\\\n",
       "{\\color{green}{s}}_{3} & 0 & 0 & 0 & -\\frac{4}{3} & 1 & \\frac{2}{3} & \\frac{4}{3} \\\\\n",
       "{x}_{1} & 1 & 0 & 0 & \\frac{1}{6} & 0 & \\frac{1}{6} & \\frac{23}{6} \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 0 & 0 & 0 & -\\frac{3}{2} & 0 & \\frac{1}{2} & \\frac{25}{2}\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[    B|   x1    x2    s1    s2    s3    s4|  rhs]\n",
       "[-----+-----------------------------------+-----]\n",
       "[   s1|    0     0     1 -13/6     0  11/6| 55/6]\n",
       "[   x2|    0     1     0   1/2     0  -1/2|  1/2]\n",
       "[   s3|    0     0     0  -4/3     1   2/3|  4/3]\n",
       "[   x1|    1     0     0   1/6     0   1/6| 23/6]\n",
       "[-----+-----------------------------------+-----]\n",
       "[    Z|    0     0     0  -3/2     0   1/2| 25/2]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cambio(2,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\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 & 0 & 1 & \\frac{3}{2} & -\\frac{11}{4} & 0 & \\frac{11}{2} \\\\\n",
       "{x}_{2} & 0 & 1 & 0 & -\\frac{1}{2} & \\frac{3}{4} & 0 & \\frac{3}{2} \\\\\n",
       "{\\color{green}{s}}_{4} & 0 & 0 & 0 & -2 & \\frac{3}{2} & 1 & 2 \\\\\n",
       "{x}_{1} & 1 & 0 & 0 & \\frac{1}{2} & -\\frac{1}{4} & 0 & \\frac{7}{2} \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 0 & 0 & 0 & -\\frac{1}{2} & -\\frac{3}{4} & 0 & \\frac{27}{2}\n",
       "\\end{array}\\right)</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\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 & 0 & 1 & \\frac{3}{2} & -\\frac{11}{4} & 0 & \\frac{11}{2} \\\\\n",
       "{x}_{2} & 0 & 1 & 0 & -\\frac{1}{2} & \\frac{3}{4} & 0 & \\frac{3}{2} \\\\\n",
       "{\\color{green}{s}}_{4} & 0 & 0 & 0 & -2 & \\frac{3}{2} & 1 & 2 \\\\\n",
       "{x}_{1} & 1 & 0 & 0 & \\frac{1}{2} & -\\frac{1}{4} & 0 & \\frac{7}{2} \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 0 & 0 & 0 & -\\frac{1}{2} & -\\frac{3}{4} & 0 & \\frac{27}{2}\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[    B|   x1    x2    s1    s2    s3    s4|  rhs]\n",
       "[-----+-----------------------------------+-----]\n",
       "[   s1|    0     0     1   3/2 -11/4     0| 11/2]\n",
       "[   x2|    0     1     0  -1/2   3/4     0|  3/2]\n",
       "[   s4|    0     0     0    -2   3/2     1|    2]\n",
       "[   x1|    1     0     0   1/2  -1/4     0|  7/2]\n",
       "[-----+-----------------------------------+-----]\n",
       "[    Z|    0     0     0  -1/2  -3/4     0| 27/2]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cambio(3,6)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ... A continuación otro problema ..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n",
       "\\begin{array}{lcrcrcl}\n",
       " \\min \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} x_{2} \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 6 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 8 \\\\\n",
       "\\end{array} \\\\\n",
       "x_{1} \\geq 0\n",
       "\\end{array}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n",
       "\\begin{array}{lcrcrcl}\n",
       " \\min \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} x_{2} \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 6 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 8 \\\\\n",
       "\\end{array} \\\\\n",
       "x_{1} \\geq 0\n",
       "\\end{array}$$"
      ],
      "text/plain": [
       "LP problem (use 'view(...)' or '%display typeset' for details)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}-\\infty</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}-\\infty$$"
      ],
      "text/plain": [
       "-Infinity"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{None}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{None}$$"
      ],
      "text/plain": [
       "None"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}$$"
      ],
      "text/plain": [
       "salto"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{green}{s}}_{1} & 3 & 2 & 1 & 0 & 6 \\\\\n",
       "{\\color{green}{s}}_{2} & 2 & 4 & 0 & 1 & 8 \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 2 & 1 & 0 & 0 & 0\n",
       "\\end{array}\\right)</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{green}{s}}_{1} & 3 & 2 & 1 & 0 & 6 \\\\\n",
       "{\\color{green}{s}}_{2} & 2 & 4 & 0 & 1 & 8 \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 2 & 1 & 0 & 0 & 0\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[  B| x1  x2  s1  s2|rhs]\n",
       "[---+---------------+---]\n",
       "[ s1|  3   2   1   0|  6]\n",
       "[ s2|  2   4   0   1|  8]\n",
       "[---+---------------+---]\n",
       "[  Z|  2   1   0   0|  0]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tipo='min'     #   Problema de tipo max o min\n",
    "\n",
    "n=2 #  número de variables x's\n",
    "m=2 #  número de restricciones (distintas de las de signo)\n",
    "\n",
    "c=matrix(QQ,1,n,[2,1] )  # vector de costos\n",
    "\n",
    "A=matrix(QQ,m,n,[   # coeficientes de las variables x's\n",
    "[3,2],\n",
    "[2,4]\n",
    "])\n",
    "\n",
    "b=matrix(QQ,m,1,[6,8])  # vector de la derecha\n",
    "\n",
    "\n",
    "h=matrix(ZZ,1,m,[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])   # 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=(3,4) # posición de la matriz identidad\n",
    "\n",
    "signosvar=[\">=\", \"\"]\n",
    "    \n",
    "    \n",
    "####################################################################\n",
    "############  HASTA AQUÍ LOS DATOS  ################################\n",
    "####################################################################\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "load('https://sage.unex.es/501708/simplex2023CompletamenteManual2.sage')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{green}{s}}_{1} & 2 & 0 & 1 & -\\frac{1}{2} & 2 \\\\\n",
       "{x}_{2} & \\frac{1}{2} & 1 & 0 & \\frac{1}{4} & 2 \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & \\frac{3}{2} & 0 & 0 & -\\frac{1}{4} & 2\n",
       "\\end{array}\\right)</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{green}{s}}_{1} & 2 & 0 & 1 & -\\frac{1}{2} & 2 \\\\\n",
       "{x}_{2} & \\frac{1}{2} & 1 & 0 & \\frac{1}{4} & 2 \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & \\frac{3}{2} & 0 & 0 & -\\frac{1}{4} & 2\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[   B|  x1   x2   s1   s2| rhs]\n",
       "[----+-------------------+----]\n",
       "[  s1|   2    0    1 -1/2|   2]\n",
       "[  x2| 1/2    1    0  1/4|   2]\n",
       "[----+-------------------+----]\n",
       "[   Z| 3/2    0    0 -1/4|   2]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cambio(2,2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ... A continuación otra versión de este problema ..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n",
       "\\begin{array}{lcrcrcrcl}\n",
       " \\min \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} x_{3} \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 2 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 6 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 4 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 8 \\\\\n",
       "\\end{array} \\\\\n",
       "x_{1}, x_{2}, x_{3} \\geq 0\n",
       "\\end{array}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n",
       "\\begin{array}{lcrcrcrcl}\n",
       " \\min \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} x_{3} \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 2 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 6 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 4 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 8 \\\\\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": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}-\\infty</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}-\\infty$$"
      ],
      "text/plain": [
       "-Infinity"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{None}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{None}$$"
      ],
      "text/plain": [
       "None"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}$$"
      ],
      "text/plain": [
       "salto"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{green}{s}}_{1} & 3 & 2 & -2 & 1 & 0 & 6 \\\\\n",
       "{\\color{green}{s}}_{2} & 2 & 4 & -4 & 0 & 1 & 8 \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 2 & 1 & -1 & 0 & 0 & 0\n",
       "\\end{array}\\right)</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{green}{s}}_{1} & 3 & 2 & -2 & 1 & 0 & 6 \\\\\n",
       "{\\color{green}{s}}_{2} & 2 & 4 & -4 & 0 & 1 & 8 \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 2 & 1 & -1 & 0 & 0 & 0\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[  B| x1  x2  x3  s1  s2|rhs]\n",
       "[---+-------------------+---]\n",
       "[ s1|  3   2  -2   1   0|  6]\n",
       "[ s2|  2   4  -4   0   1|  8]\n",
       "[---+-------------------+---]\n",
       "[  Z|  2   1  -1   0   0|  0]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tipo='min'     #   Problema de tipo max o min\n",
    "\n",
    "n=3 #  número de variables x's\n",
    "m=2 #  número de restricciones (distintas de las de signo)\n",
    "\n",
    "c=matrix(QQ,1,n,[2,1, -1] )  # vector de costos\n",
    "\n",
    "A=matrix(QQ,m,n,[   # coeficientes de las variables x's\n",
    "[3,2,-2],\n",
    "[2,4,-4]\n",
    "])\n",
    "\n",
    "b=matrix(QQ,m,1,[6,8])  # vector de la derecha\n",
    "\n",
    "\n",
    "h=matrix(ZZ,1,m,[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])   # 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) # posición de la matriz identidad\n",
    "\n",
    "\n",
    "    \n",
    "    \n",
    "####################################################################\n",
    "############  HASTA AQUÍ LOS DATOS  ################################\n",
    "####################################################################\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "load('https://sage.unex.es/501708/simplex2023CompletamenteManual.sage')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Otro"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n",
       "\\begin{array}{lcrcrcrcl}\n",
       " \\min \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 7 x_{3} \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 2 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 6 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 4 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 8 \\\\\n",
       "\\end{array} \\\\\n",
       "x_{1}, x_{2}, x_{3} \\geq 0\n",
       "\\end{array}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n",
       "\\begin{array}{lcrcrcrcl}\n",
       " \\min \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 7 x_{3} \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 3 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 2 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 6 \\\\\n",
       " \\mspace{-6mu}&\\mspace{-6mu}  \\mspace{-6mu}&\\mspace{-6mu} 2 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 4 x_{3} \\mspace{-6mu}&\\mspace{-6mu} \\geq \\mspace{-6mu}&\\mspace{-6mu} 8 \\\\\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": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}3</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}3$$"
      ],
      "text/plain": [
       "3"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(0,\\,3,\\,0\\right)</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(0,\\,3,\\,0\\right)$$"
      ],
      "text/plain": [
       "(0, 3, 0)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{}$$"
      ],
      "text/plain": [
       "salto"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}{===================================}$$"
      ],
      "text/plain": [
       "ry"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\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{red}{t}}_{1} & {\\color{red}{t}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{red}{t}}_{1} & 3 & 2 & -2 & -1 & 0 & 1 & 0 & 6 \\\\\n",
       "{\\color{red}{t}}_{2} & 2 & 4 & -4 & 0 & -1 & 0 & 1 & 8 \\\\\n",
       "\\hline\n",
       " {W_{ind}} & -5 & -6 & 6 & 1 & 1 & 0 & 0 & 14\n",
       "\\end{array}\\right)</script></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{red}{t}}_{1} & {\\color{red}{t}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{red}{t}}_{1} & 3 & 2 & -2 & -1 & 0 & 1 & 0 & 6 \\\\\n",
       "{\\color{red}{t}}_{2} & 2 & 4 & -4 & 0 & -1 & 0 & 1 & 8 \\\\\n",
       "\\hline\n",
       " {W_{ind}} & -5 & -6 & 6 & 1 & 1 & 0 & 0 & 14\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[  B| x1  x2  x3  s1  s2  t1  t2|rhs]\n",
       "[---+---------------------------+---]\n",
       "[ t1|  3   2  -2  -1   0   1   0|  6]\n",
       "[ t2|  2   4  -4   0  -1   0   1|  8]\n",
       "[---+---------------------------+---]\n",
       "[  W| -5  -6   6   1   1   0   0| 14]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tipo='min'     #   Problema de tipo max o min\n",
    "\n",
    "n=3 #  número de variables x's\n",
    "m=2 #  número de restricciones (distintas de las de signo)\n",
    "\n",
    "c=matrix(QQ,1,n,[2,1, -1+8] )  # vector de costos\n",
    "\n",
    "A=matrix(QQ,m,n,[   # coeficientes de las variables x's\n",
    "[3,2,-2],\n",
    "[2,4,-4]\n",
    "])\n",
    "\n",
    "b=matrix(QQ,m,1,[6,8])  # vector de la derecha\n",
    "\n",
    "\n",
    "h=matrix(ZZ,1,m,[-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,[1,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=(6,7) # posición de la matriz identidad\n",
    "\n",
    "\n",
    "    \n",
    "    \n",
    "####################################################################\n",
    "############  HASTA AQUÍ LOS DATOS  ################################\n",
    "####################################################################\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "load('https://sage.unex.es/501708/simplex2023CompletamenteManual.sage')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\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{red}{t}}_{1} & {\\color{red}{t}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{red}{t}}_{1} & 2 & 0 & 0 & -1 & \\frac{1}{2} & 1 & -\\frac{1}{2} & 2 \\\\\n",
       "{x}_{2} & \\frac{1}{2} & 1 & -1 & 0 & -\\frac{1}{4} & 0 & \\frac{1}{4} & 2 \\\\\n",
       "\\hline\n",
       " {W_{ind}} & -2 & 0 & 0 & 1 & -\\frac{1}{2} & 0 & \\frac{3}{2} & 2\n",
       "\\end{array}\\right)</script></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{red}{t}}_{1} & {\\color{red}{t}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{red}{t}}_{1} & 2 & 0 & 0 & -1 & \\frac{1}{2} & 1 & -\\frac{1}{2} & 2 \\\\\n",
       "{x}_{2} & \\frac{1}{2} & 1 & -1 & 0 & -\\frac{1}{4} & 0 & \\frac{1}{4} & 2 \\\\\n",
       "\\hline\n",
       " {W_{ind}} & -2 & 0 & 0 & 1 & -\\frac{1}{2} & 0 & \\frac{3}{2} & 2\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[   B|  x1   x2   x3   s1   s2   t1   t2| rhs]\n",
       "[----+----------------------------------+----]\n",
       "[  t1|   2    0    0   -1  1/2    1 -1/2|   2]\n",
       "[  x2| 1/2    1   -1    0 -1/4    0  1/4|   2]\n",
       "[----+----------------------------------+----]\n",
       "[   W|  -2    0    0    1 -1/2    0  3/2|   2]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cambio(2,2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\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{red}{t}}_{1} & {\\color{red}{t}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {x}_{1} & 1 & 0 & 0 & -\\frac{1}{2} & \\frac{1}{4} & \\frac{1}{2} & -\\frac{1}{4} & 1 \\\\\n",
       "{x}_{2} & 0 & 1 & -1 & \\frac{1}{4} & -\\frac{3}{8} & -\\frac{1}{4} & \\frac{3}{8} & \\frac{3}{2} \\\\\n",
       "\\hline\n",
       " {W_{ind}} & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0\n",
       "\\end{array}\\right)</script></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{red}{t}}_{1} & {\\color{red}{t}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {x}_{1} & 1 & 0 & 0 & -\\frac{1}{2} & \\frac{1}{4} & \\frac{1}{2} & -\\frac{1}{4} & 1 \\\\\n",
       "{x}_{2} & 0 & 1 & -1 & \\frac{1}{4} & -\\frac{3}{8} & -\\frac{1}{4} & \\frac{3}{8} & \\frac{3}{2} \\\\\n",
       "\\hline\n",
       " {W_{ind}} & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[   B|  x1   x2   x3   s1   s2   t1   t2| rhs]\n",
       "[----+----------------------------------+----]\n",
       "[  x1|   1    0    0 -1/2  1/4  1/2 -1/4|   1]\n",
       "[  x2|   0    1   -1  1/4 -3/8 -1/4  3/8| 3/2]\n",
       "[----+----------------------------------+----]\n",
       "[   W|   0    0    0    0    0    1    1|   0]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cambio(1,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {x}_{1} & 1 & 0 & 0 & -\\frac{1}{2} & \\frac{1}{4} & 1 \\\\\n",
       "{x}_{2} & 0 & 1 & -1 & \\frac{1}{4} & -\\frac{3}{8} & \\frac{3}{2} \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 0 & 0 & 8 & \\frac{3}{4} & -\\frac{1}{8} & \\frac{7}{2}\n",
       "\\end{array}\\right)</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {x}_{1} & 1 & 0 & 0 & -\\frac{1}{2} & \\frac{1}{4} & 1 \\\\\n",
       "{x}_{2} & 0 & 1 & -1 & \\frac{1}{4} & -\\frac{3}{8} & \\frac{3}{2} \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & 0 & 0 & 8 & \\frac{3}{4} & -\\frac{1}{8} & \\frac{7}{2}\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[   B|  x1   x2   x3   s1   s2| rhs]\n",
       "[----+------------------------+----]\n",
       "[  x1|   1    0    0 -1/2  1/4|   1]\n",
       "[  x2|   0    1   -1  1/4 -3/8| 3/2]\n",
       "[----+------------------------+----]\n",
       "[   Z|   0    0    8  3/4 -1/8| 7/2]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "tt=(0,0); faseII(0,tt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<html><script type=\"math/tex; mode=display\">\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{green}{s}}_{2} & 4 & 0 & 0 & -2 & 1 & 4 \\\\\n",
       "{x}_{2} & \\frac{3}{2} & 1 & -1 & -\\frac{1}{2} & 0 & 3 \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & \\frac{1}{2} & 0 & 8 & \\frac{1}{2} & 0 & 3\n",
       "\\end{array}\\right)</script></html>"
      ],
      "text/latex": [
       "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(\\begin{array}{r|rrrrr|r}\n",
       "{Basic} & {x}_{1} & {x}_{2} & {x}_{3} & {\\color{green}{s}}_{1} & {\\color{green}{s}}_{2} & {b} \\\\\n",
       "\\hline\n",
       " {\\color{green}{s}}_{2} & 4 & 0 & 0 & -2 & 1 & 4 \\\\\n",
       "{x}_{2} & \\frac{3}{2} & 1 & -1 & -\\frac{1}{2} & 0 & 3 \\\\\n",
       "\\hline\n",
       " {Z_{ind}} & \\frac{1}{2} & 0 & 8 & \\frac{1}{2} & 0 & 3\n",
       "\\end{array}\\right)$$"
      ],
      "text/plain": [
       "[   B|  x1   x2   x3   s1   s2| rhs]\n",
       "[----+------------------------+----]\n",
       "[  s2|   4    0    0   -2    1|   4]\n",
       "[  x2| 3/2    1   -1 -1/2    0|   3]\n",
       "[----+------------------------+----]\n",
       "[   Z| 1/2    0    8  1/2    0|   3]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cambio(1,5)"
   ]
  },
  {
   "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
}
