Practi04 investigacion operativa_i-2015

17
Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015 Docente:, Ing. Porfirio Chata Página: 1 Práctica N°04: Investigación operativa I Objetivos: Creando una GUI (Graphical User Interfase Development Environment) en Matlab Sentencias en matlab para solucionar problemas de optimización Diagrama de Flujo del método Simplex inicio Datos de programacion Lineal MAX Z=CX AX <=b X>=0 Convertir todas las desiguladades en igualdades agregando variables de holgura Max z-cx=0 AX+S=b X>=0 Construir el tablero con los coeficientes del PL. Condicion de optimalidad Zj-cj>=0 Seleccionese como vector de entrada aquel cuyo Zj-Cj sea el mas negativo Seleccione el vector de salida de la base actual Aplique operaciones matriciales elementales en el pivote con el objetivo de convertir la columna en vector unitario. La solución XB mostrada es optima fin NO SI

Transcript of Practi04 investigacion operativa_i-2015

Page 1: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 1

Práctica N°04: Investigación operativa I Objetivos:

Creando una GUI (Graphical User Interfase Development Environment) en Matlab Sentencias en matlab para solucionar problemas de optimización

Diagrama de Flujo del método Simplex

inicio

Datos de programacion

Lineal

MAX Z=CXAX <=bX>=0

Convertir todas las desiguladades en igualdades agregando variables de

holguraMax z-cx=0

AX+S=bX>=0

Construir el tablero con los coeficientes del PL.

Condicion de optimalidad

Zj-cj>=0

Seleccionese como vector de entrada aquel cuyo Zj-Cj sea el

mas negativo

Seleccione el vector de salida de la base actual

Aplique operaciones matriciales elementales en el pivote con el objetivo de convertir la

columna en vector unitario.

La solución XB mostrada es optima

fin

NO

SI

Page 2: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 2

Según el siguiente enunciado

La codificación propuesta en matlab es la siguiente. % fob=matriz de la función objetivo

% a=matriz de las restricciones

% b=matriz de los recursos

% constantes de la función objetivo

fob=[-300 -100];

% matriz con las inecuaciones

a=[40 8;10 5;0 1];

%% vector de recursos de las desigualdades

b=[800;320;60];

% número máximo de iteraciones

iterm=100;

% número de inecuaciones

in=size(a,1);

%creando la matriz

%concatenación de matrices horizontalmente

m_solucion=((horzcat((horzcat(a,eye(in))),b)))

m_objetivo=[(horzcat(fob,zeros(1,in))),0]

%concatenación de matrices verticalmente.

xsol=vertcat(m_objetivo,m_solucion)

for iter=1:1:iterm

fin=xsol(1,1:end-1)<0;

if fin==0

break

end %end if

% se determina la columna pivote donde a es el valor mínimo y c la columna pivote

%p= el valor mínimo de la primera fila

%q= la posicion de la columna

[p,q]=min(xsol(1,:));

% se divide los recursos entre la columna pivote (punto a punto)

xre=xsol(:,end)./xsol(:,q);

% encuentro de la columna de recursos aquellos negativos o cero

i=xre<=0;

%guarda la columna de recursos en d

d=xre;

% reemplazo los valores negativos y cero de la columna de recursos por valores infinitos

(necesito el valor positivo menor)

d(i)=inf;

% con esta función se encuentra la fila pivote (menor elemento positivo)

Page 3: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 3

[b,f]=min(d);

%b=el menor valor

% f=indica la posición del elemento pivote

% fila pivote dividida el elemento pivote hasta end-1 dado que este elemento fue operado ya

xsol(f,1:end)=xsol(f,1:end)/xsol(f,q);

% hace operación entre filas aplicar eliminación de gauss

for i=1:1:size(xsol,1)

if i~=f

xsol(i,:)=xsol(i,:)- (xsol(i,q)*xsol(f,:))

end%end if

end%end for

end%end for

Definir una carpeta de trabajo en matlab

Crear una carpeta en el directorio de matlab

Page 4: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 4

Agregar la carpeta al Path de matlab

Page 5: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 5

Para ejecutar el programa

Page 6: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 6

Guardar el archivo en la carpeta de trabajo

Page 7: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 7

Última iteración con la matriz optima

Page 8: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 8

Matalab permite hacer una codificación del algoritmo, haciendo uso de un diseñador gráfico (GUI), para hacer uso de esa interfaz, es recomendable definir antes un espacio de trabajo en la computadora, allí se guardaran todos los archivos generados.

Seleccionar el GUI

Page 9: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 9

Opción por defecto (en blanco)

Seleccionar de la barra de herramientas los controles a

usar

Page 10: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 10

Dejar un diseño como se muestra en la imagen, hacer la configuración de los controles en sus opciones según se detallan abajo.

Para poder ingresar matrices en los EDIT, se debe modificar

el valor máximo y mínimo

Page 11: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 11

Configurar los valores del EDIT2

Page 12: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 12

Configurar los valores del EDIT3

Page 13: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 13

Configurar los valores del Text1, en este control no es necesario hacer modificaciones de máximo y minimo, porque solo se usara para mostrar los resultados.

Page 14: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 14

Para poder ingresar el código o visualizar la codificación pulsar

en esa opción “callBAck”

Page 15: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 15

se usara el código propuesto en las primeras hojas de esta práctica, la única diferencia radica en la captura de valores de los controles EDIT, y la transformación a matrices, porque los valores ingresados por los controles están en formato de texto.

El código de esta pestaña, para la captura de valores de los

EDit

Page 16: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 16

La matriz solución se almacena en XSOL, la cual esta en formato de matriz, para lo cual se hace una transformación a tipo texto, haciendo uso de los comandos del GUI de matlab.

El código para visualizar la

matriz solución

Page 17: Practi04 investigacion operativa_i-2015

Universidad Nacional Jorge Basadre Grohmann Facultad de Ingeniería/E.A.P de Ingeniería en Informática y Sistemas Asignatura: Investigación Operativa I año :Tercero-2015

Docente:, Ing. Porfirio Chata Página: 17