{ "cells": [ { "cell_type": "code", "execution_count": 6, "id": "2d6f19d8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n", "\\begin{array}{lcrcrcrcrcl}\n", " \\max \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 17 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 12 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 7 x_{3} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 20 x_{4} \\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} 6 x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 7 x_{3} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 7 x_{4} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 20 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 6 x_{1} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 7 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 5 x_{3} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} x_{4} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 16 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 4 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{3} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 2 x_{4} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 14 \\\\\n", "\\end{array} \\\\\n", "x_{1}, x_{2}, x_{3}, x_{4} \\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}}\\frac{8821}{40}$$" ], "text/plain": [ "8821/40" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\left(0,\\,\\frac{69}{20},\\,\\frac{161}{24},\\,\\frac{793}{120}\\right)$$" ], "text/plain": [ "(0, 69/20, 161/24, 793/120)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tipo='max' # max o min\n", "n=4 # número de variables x's\n", "m=3 # número de restricciones (distintas de las de signo)\n", "\n", "c=matrix(QQ,1,n,[17,12,7,20] ) # Vector de costos\n", "\n", "A=matrix(QQ,m,n,[ # coeficientes de las variables x's\n", "[1,6,-7,7],\n", "[6,-7,5,1],\n", "[4,4,2,-2]\n", "])\n", "\n", "b=matrix(QQ,m,1,[20,16,14]) # En miles de unidades. Vector de la derecha\n", "\n", "\n", "######################################################\n", "############### VARIABLES DE HOLGURA ################\n", "\n", "\n", "h=matrix(ZZ,1,m,[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", "#######################################################\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", "\n", "##############################################################################\n", "####### Usando el paquete de programación lineal Pinteractive de Sage ########\n", "##############################################################################\n", "signos=[]\n", "for i in range(m):\n", " if h[0,i] == -1:\n", " signos.append(\">=\")\n", " elif h[0,i] == 1:\n", " signos.append(\"<=\")\n", " elif h[0,i] == 0:\n", " signos.append(\"==\")\n", " \n", "var_nam = []\n", "for i in range(n):\n", " k=i+1\n", " var_nam.append('x_%s' %k)\n", " \n", "PPL = InteractiveLPProblem(A, b, c, var_nam, \n", "constraint_type=signos, variable_type=\">=\", problem_type=tipo) \n", "\n", "show(PPL)\n", "show(PPL.optimal_value())\n", "show(PPL.optimal_solution())" ] }, { "cell_type": "markdown", "id": "470cb86f", "metadata": {}, "source": [ "añadimos x2 >= 4\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "6af27269", "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\begin{array}{l}\n", "\\begin{array}{lcrcrcrcrcl}\n", " \\max \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 17 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 12 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 7 x_{3} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 20 x_{4} \\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} 6 x_{2} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 7 x_{3} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 7 x_{4} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 20 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 6 x_{1} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 7 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 5 x_{3} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} x_{4} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 16 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} 4 x_{1} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 4 x_{2} \\mspace{-6mu}&\\mspace{-6mu} + \\mspace{-6mu}&\\mspace{-6mu} 2 x_{3} \\mspace{-6mu}&\\mspace{-6mu} - \\mspace{-6mu}&\\mspace{-6mu} 2 x_{4} \\mspace{-6mu}&\\mspace{-6mu} \\leq \\mspace{-6mu}&\\mspace{-6mu} 14 \\\\\n", " \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} \\mspace{-6mu}&\\mspace{-6mu} x_{2} \\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} 4 \\\\\n", "\\end{array} \\\\\n", "x_{1}, x_{2}, x_{3}, x_{4} \\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}}\\mathrm{None}$$" ], "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/latex": [ "$$\\newcommand{\\Bold}[1]{\\mathbf{#1}}\\mathrm{None}$$" ], "text/plain": [ "None" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tipo='max' # max o min P2\n", "n=4 # 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,[17,12,7,20] ) # Vector de costos\n", "\n", "A=matrix(QQ,m,n,[ # coeficientes de las variables x's\n", "[1,6,-7,7],\n", "[6,-7,5,1],\n", "[4,4,2,-2],\n", "[0,1,0,0]\n", "])\n", "\n", "b=matrix(QQ,m,1,[20,16,14,4]) # En miles de unidades. 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", "#######################################################\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", "\n", "##############################################################################\n", "####### Usando el paquete de programación lineal Pinteractive de Sage ########\n", "##############################################################################\n", "signos=[]\n", "for i in range(m):\n", " if h[0,i] == -1:\n", " signos.append(\">=\")\n", " elif h[0,i] == 1:\n", " signos.append(\"<=\")\n", " elif h[0,i] == 0:\n", " signos.append(\"==\")\n", " \n", "var_nam = []\n", "for i in range(n):\n", " k=i+1\n", " var_nam.append('x_%s' %k)\n", " \n", "PPL = InteractiveLPProblem(A, b, c, var_nam, \n", "constraint_type=signos, variable_type=\">=\", problem_type=tipo) \n", "\n", "show(PPL)\n", "show(PPL.optimal_value())\n", "show(PPL.optimal_solution())" ] }, { "cell_type": "code", "execution_count": null, "id": "3b25c93d", "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": 5 }