domingo, 13 de abril de 2014

RESOLUCION DE EJERCICIOS DE PROGRAMACIÓN LINEAL EN MAXIMA

RESOLUCION DE EJERCICIOS DE PROGRAMACIÓN LINEAL EN MAXIMA
Ing. Luis Manfredo Reyes

Maxima es un sistema de cálculo simbólico, que fue desarrollado inicialmente   en el lenguaje de programación  Lisp.

Maxima es un software que se derivó del sistema original Macsyma, desarrollado en el MIT (Massachusetts Institute of Technology) entre los años 1968 y 1982 como parte de un proyecto de investigación en computación simbólica  llamado “MAC”.



En un gesto digno de agradecimiento, el MIT otorgó  una copia del código fuente original del software  al DOE (Department of Energy) en 1982, en una versión conocida como DOE-Macsyma.

Una de estas copias fue custodiada por el Profesor William F. Schelter de la Universidad de Texas desde el año 1982 hasta su lamentable fallecimiento en 2001.

En 1998 gracias a las gestiones y perseverancia de Schelter, se  logró obtener el permiso del Departamento de Energía para distribuir el programa bajo la llamada licencia GNU-GPL, iniciando en el año 2000 el proyecto Maxima en SourceForge con el fin de mantener y seguir desarrollando DOE-Macsyma, ahora con el nombre de Maxima.

El Software puede descargarse, instalarse, utilizarse en forma gratuita, siempre que no se use con fines comerciales, ni se cobre por su uso. El sitio es:
http://sourceforge.net/projects/maxima/files/latest/download?source=files

Maxima posee un  amplio conjunto de funciones para hacer manipulación simbólica de polinomios, matrices, funciones racionales, integración, derivación, manejo de gráficos en 2D y 3D, manejo de números de punto flotante y grandes, expansión en series de potencias y de Fourier, entre otras funcionalidades.
Se asume que el lector tiene conocimientos del uso básico del programa

Maxima no posee un comando específico para programación lineal, pero sí un paquete contribuído llamado SIMPLEX, el cual debe cargarse antes de ingresar los datos
Para ello se ingresa la orden:
load("simplex")$

NO HAY RESTRICCION EN LA CANTIDAD DE VARIABLES O DE RESTRICCIONES

SI SE DESEAN SÓLO SOLUCIONES POSITIVAS, SE INGRESA LA SIGUIENTE ORDEN LUEGO DE CARGAR EL MÓDULO :
Variable opcional: nonegative_lp
Valor por defecto: false
Si nonegative_lp vale true todas las variables de decisión pasadas a minimize_lp y a maximize_lp se suponen positivas.
Véase también minimize_lp.
Solamente se carga el módulo simplex una vez y se puede usar para varios ejemplos.
se puede maximizar o minimizar una función objetivo

La siguiente información proviene del manual de Maxima:
Función: maximize_lp (obj, cond, [pos])
Maximiza la función objetivo lineal obj sujeta a ciertas restricciones lineales cond. Véase minimize_lp para una descripción detallada de los argumentos y de la respuesta dada por esta función.
Función: minimize_lp (obj, cond, [pos])
Minimiza la función objetivo lineal obj sujeta a ciertas restricciones lineales cond, siendo ésta una lista de ecuaciones o inecuaciones lineales. En las inecuaciones estrictas se reemplaza > por >= y < por <=. El argumento opcional pos es una lista de variables de decisión que se suponen positivas.
Si el mínimo existe, minimize_lp devuelve una lista que contiene el valor mínimo de la función objetivo y una lista de valores para las variables de decisión con los que se alcanza el mínimo. Si el problema no está acotado, devuelve el mensaje "Problem not bounded!" y si el problema no es factible, devuelve el mensaje "Problem not feasible!".
Las variables de decisión no se suponen no negativas. Si todas las variables de decisión son no negativas, asígnese el valor true a la variable nonegative_lp. Si sólo algunas de las variables de decisión son positivas, lístense en el argumento opcional pos, lo cual es más eficiente que añadir restricciones.
La función minimize_lp utiliza el algoritmo simplex implementado en la función linear_program de Maxima.

Los ejercicios que se usan en el presente documento fueron tomados de la siguiente publicación: http://www.slideshare.net/renevive/manual-programacion-lineal-julio-20
Muchas gracias!!

EJEMPLO 1:



Luego de cargar el paquete simplex, se ingresa:
maximize_lp(4000*x+6000*y, [2*x+y<=180,x+2*y<=160,x+y<=100]);
y la solución es:


 
EJERCICIO 2:





La orden para Maxima es





No hay comentarios:

Publicar un comentario