optimización en la distribución de textos escolares · web viewpara esto se utilizó un algoritmo...

27
UNIVERSIDAD DE CHILE

Upload: vannga

Post on 12-Oct-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

Asignatura: IN3701 Modelamiento y Optimización

Profesores: Victor Bucarey L.

Roberto Cominetti C.

Integrantes: Javier Barroso S. (Sección: 1)

Iván Fuentealba C. (Sección: 2)

Juan Guillermo Obando(Sección: 2)

Francisca Riquelme A. (Sección: 2)

Fecha: 17 Abril de 2013

Universidad de Chile

Optimización en la distribución de textos escolares

En todas la comunas del Gran Santiago, para alumnos de 8°básico provenientes de colegios municipales.

IVAN FUENTEALBA

Page 2: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

1. Resumen Ejecutivo

En este documento se plantean y se proponen soluciones en base a la construcción de dos modelos matemáticos a resolver, utilizando el lenguaje de programación AMPL y el solver CPLEX.

Estos problemas son: Flujo de costo mínimo y Problema del Transporte. El contexto es la distribución de textos escolares a través del Gran Santiago. Para ello los textos deben ser entregados a cada municipio del Gran Santiago desde puntos de oferta (bodegas).

Para el primer problema se considera una red compuesta por 90.105 arcos y se busca encontrar la manera más eficiente de trasladar los textos desde un nodo de origen a uno de destino. Esto implica que los nodos recorridos son aquellos que minimizan la distancia recorrida total a través de los arcos.

El Problema de Transporte tiene como restricción el que la demanda sea satisfecha para cada uno de los puntos de destino, todo esto minimizando el costo unitario de traslado, el cual está asociado a la distancia mínima recorrida. Este problema requiere, como dato, que las distancias mínimas sean conocidas. En nuestro caso, dichas distancias eran desconocidas, por lo que tuvo que adaptarse el problema de Flujo de costo mínimo para obtenerlas.

La adaptación consistió en considerar una oferta y demanda de sólo 1 libro, es decir, sólo un municipio tiene demanda y sólo una bodega ofrece dicho libro. Luego, iterando para cada bodega, se obtienen las distancias mínimas desde cada una de ellas con respecto a los nodos de destino.

Todas las actividades desarrolladas y explicadas en éste informe giran en torno a estos dos problemas. En primera instancia se realiza una prueba del modelo con pocos datos (menos de 100) para comprobar la idoneidad del modelo. Luego éste se somete a una cantidad de datos mucho mayor (del orden 300.000) y más cercana a la realidad. Las distancias entre cada nodo (calle) fueron estimadas haciendo uso de la función Haversine que determina la distancia entre dos puntos de una esfera. Finalmente se agregan restricciones al modelo de transporte poniendo cotas superiores sobre los arcos, es decir, hay una capacidad máxima de libros que pueden transportarse con los mismos.

Estos modelos simplifican la solución de problemas muy complejos con una cantidad considerable de datos.

Page 3: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

2. Índice editar

1. RESUMEN EJECUTIVO ………….......................................................................................1

2. ÍNDICE …………………………………………………………………………………………………………………23. INTRODUCCIÓN …………………………………………………………………………………………………..34. DESCRIPCIÓN DEL PROBLEMA …………………………………………………………………………….4

4.1 PLANTEAMIENTO DEL PROBLEMA ………………………………………………………………..44.1.1 PLANTEAMIENTO MODELO DE COSTO MÍNIMO ………………………………..44.1.2 PLANTEAMIENTO MODELO DE TRANSPORTE …………………………………….54.1.1 PLANTEAMIENTO MODELO COSTO MÍNIMO CON

CAPACIDAD MÁXIMA PARA CADA ARCO …………………………………………..65. IMPLEMENTACIÓN ……………………………………………………………………………………………..76. RESULTADOS ……………………………………………………………………………………………………….77. ANALISIS DE LOS RESULTADOS …………………………………………………………………………….8

7.1.1 ANÁLISIS PARTE 2 ……………………………………………………………………………………….87.1.2 ANÁLISIS PARTE 3 ……………………………………………………………………………………...97.1.3 ANÁLISIS PARTE 6 ………………………………………………………………………………………97.1.4 ANÁLISIS PARTE 8 ……………………………………………………………………………………..10

8. CONCLUSIONES ………………………………………………………………………………………………….119. BIBLIOGRAFÍA …………………………………………………………………………………………………….12 10. ANEXOS …………………………………………………………………………………………………..13

10.110.210.310.410.5

OBS: 1 (intro) + 3 (descripción problema) + 1 (implementación resultados) + 3 (análisis resultados) + 1 conclusiones = 9, nos seguimos pasando, por dos.

Page 4: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

3. Introducción

Hoy en día las ciudades han alcanzado un gran nivel de desarrollo urbano, generándose nuevos paradigmas y problemáticas a resolver, una de ellas corresponde a la siguiente pregunta ¿Cómo transportar carga de un lugar a otro, de manera eficiente?. En el presente informe se enfoca en la solución de esta disyuntiva, enfocándonos en la trayectoria de las cargas, los lugares por donde debería pasar la carga, de manera que el recorrido sea el menor posible.

Para esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible del problema, buscar soluciones en los distintos vértices del poliedro formado por las restricciones, comparando los valores de la función objetivo (F.O) correspondiente a cada posible solución (vértices) mediante pivoteos.

Para poder procesar una gran cantidad de datos utilizamos AMPL (A Modeling Language for Mathematical Programming) y CPLEX (un solver), además los fueron preprocesados utilizando Matlabb y excell.

Es muy importante tomar conciencia de estos problemas en la actualidad, las ciudades a medida que van creciendo, aumentan inevitablemente su población, la cantidad de calles, vehículos y semáforos. Factores que son muy importantes para tener en cuenta, al momento de optimizar procesos en zonas urbanas, para evitar congestiones vehiculares, o bien lograr reducir tasa de accidentes en cierta esquina de la ciudad. Es por todo esto que en las próximas páginas, se presentará una solución al problema de transporte de carga (en nuestro caso, de libros para los estudiantes de colegios municipales), tomando en consideración algunos de los factores que influyen, como la distancia de los distintos puntos de la ciudad, la oferta y la demanda, que las municipalidades y las bodegas de almacenamiento, tienen.

Page 5: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

4. Descripción del Problema

La tarea consiste en modelar un problema de distribución de libros desde nodos que ofertan (bodegas), hacia nodos que demandan (37 Municipalidades de Santiago), con el objeto de minimizar los costos de esta distribución (distancias recorridas por cantidad de libros). Para lo anterior se utilizaron dos tipos de modelos, el modelo de costo mínimo, el cual distribuirá los libros recorriendo la mínima distancia y el modelo de transporte, que a partir de las distancias mínimas, distribuirá los libros a las correspondientes municipalidades.

4.1 Planteamiento del Modelo

4.1.1 Planteamiento Modelo Costo Mínimo

El modelo del costo mínimo o de los mínimos costos es un algoritmo desarrollado con el objetivo de resolver problemas de transporte o de distribución. El modelo general que describe este problema es el siguiente:

Minimizar:z=∑i=1

m

∑j=1

n

cij x ij

Sujeto a:

∑j=1

n

x ij ≤ si ∀ j=1 ,…. ,m

∑j=1

n

x ij ≤d j∀ j=1 ,…,n

x ij≥0∀ i=1 ,…,m j=i ,…,n

Para la tarea, este modelo posee algunas variantes ya que hay demandas negativas que representan ofertas, por lo que hay que establecer otras condiciones. Para la tarea se hará uso del siguiente modelo:

Minimizar:

z=∑i=1

m

∑j=1

n

cij x ij

Sujeto a:

Page 6: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

∑j : (k , j) ϵArcos

xkj− ∑i : (i ,k )∈ Arcos

x ik=dk paracada nodoenk

x i j≥0 ∀ i=1 ,…,m j=i ,…,n

Este modelo minimiza los costos de transportar cada libro, que corresponde a minimizar las longitudes por la cantidad de libros, donde las longitudes corresponden a los costos. El óptimo para este modelo corresponde a la distancia mínima que recorre cada libro desde los nodos que ofertan a los que demandan, cumpliendo con la condición de flujo, donde “todo lo que sale menos lo que entra es lo que hay” en cada nodo, y esta condición se modela en la restricción que esta al final del modelo anterior, la que además, distingue de ofertas (demandas negativas) con las demandas. En el anexo se encuentra la programación de este modelo en AMPL.

4.1.2 Planteamiento Modelo de Transporte

En nuestro problema nos encontramos con un conjunto de nodos de origen y un conjunto de nodos de destino, respectivamente:

Origenes= {i / i∈ {1,2 ,…n }} Destinos= { j / j∈{1,2, ..m}}

Cada nodo en el origen i tiene asociada una cantidad conocida de oferta Of(i), mientras que cada nodo j tiene asociada una cantidad demandada Dda(i)

Así, definimos una variable de decisión X ijque nos indica cuántas unidades son trasladadas desde el nodo i al nodo j. Suponiendo conocido el costo unitario de traslado desde i a j, c ij , nos interesa minimizar la función:

Costo total≔∑

i , jX ij cij

Sujeta a las siguientes restricciones:

a) Naturaleza de las variables:X ij ≥0

b) La cantidad total ofertada debe ser mayor o igual a la demanda total (restricción sobre los datos del problema):

∑iOf (i )≥∑

jDda ( j )

c) Sobre la oferta: ∑jX ij≤Of (i ) , para todo i enOrigenes

d) Sobre la demanda: Dda ( j )≤∑

iX ij , para todo j en Destinos

Page 7: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

Si asumimos que los datos proporcionados (Oferta y Demanda) cumplen con la restricción b), el problema se puede escribir como:

Min∑i , j

X ijc ij ; i∈ {1,2 ,…n } , j∈ {1,2 ,..m }

s.a.X ij ≥0 Of ( i )≥∑

jX ij

∑iX ij≥ Dda( j)

4.1.3 Planteamiento Modelo Costo Mínimo con capacidad máxima para cada arco.

Para este modelo se tiene que hay restricción en la capacidad de transporte que posee cada arco, lo cual se modela de la siguiente manera:

Minimizar:z=∑i=1

m

∑j=1

n

cij x ij

Sujeto a:

∑j : (k , j) ϵArcos

xkj− ∑i : (i ,k )∈ Arcos

x ik=dk paracada nodoenk

0≤ xij ≤uij dondeuij correspndea la capacidadmaximade cadaarco .

Para este modelo se tiene que la capacidad máxima de cada arco es fija, dado que corresponde al 50% de la demanda máxima de todas las municipalidades. En el anexo podrá encontrar la programación de este modelo en AMPL.

5. Implementación

Para implementar el modelo matemático explicado anteriormente, en AMPL, ESCRIBIR ESTO MUY BREVEMENTE , PARA QUE ALCANCE A LA RESTRICCION DE LAS 7 PAGINAS MAXIMO,

Page 8: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

6. Resultados

Parte 2

Variante 1 Variante 2Nodo 1 = -5 Nodo 1= -10Nodo 7 = 5 Nodo 7 = 10Óptimo = 72,6865 Óptimo = 71,231Parte 6

Óptimo = 617557

Tiempo de iteración: 12 segundos

Parte 7

Óptimo = 617557

Tiempo de iteración: 5 segundos

Parte 8

Óptimo = No factible

Tiempo iteración: 15 minutos

7. Análisis de los Resultados

7.1.1 Análisis parte 2:

El modelo es correcto debido a que para el caso en que la oferta del nodo 1 es 5 y la demanda del nodo 7 es 5, el modelo entrega un costo mínimo de 72,6865, y para el caso siguiente en que la oferta del nodo 1 aumenta a 10 y la demanda del nodo 7 aumenta a 10, el costo mínimo es de 71,231 lo que se debe a que las distancias recorridas

Page 9: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

disminuyen con el caso anterior, compensando de esta manera el aumento de la oferta y la demanda. Esta afirmación puede ser observada en la imagen 1.1, donde el trazado rojo corresponde al primer caso y el trazado azul corresponde al segundo caso.

Imagen 1.1

7.1.2 Análisis parte 3:

La fórmula Haversine utilizada en esta parte corresponde a:

donde

Page 10: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

d es la distancia entre los dos puntos

r es el radio de la esfera (de la tierra en este caso)

son las latitudes de los puntos 1 y 2

son las longitudes de los puntos 1 y 2.

La cual es utilizada para el cálculo de la distancia de círculo máximo entre dos puntos ubicado en la tierra, para lo cual es necesario conocer las longitudes y latitudes de cada punto. Que para esta tarea estos datos fueron entregados para cada nodo, con los cuales podíamos calcular las distancias entre ellos y buscar los nodos más cercanos a cada municipalidad.

7.1.3 Análisis parte 6:

En la parte número 6 de la tarea, se presenta un problema diferente del anterior (parte número 2), en el sentido de que para esta parte se tiene que la oferta es mayor que la demanda, para lo cual no se cumple la condición de flujo siguiente:

∑j : (k , j) ϵArcos

xkj− ∑i : (i ,k )∈ Arcos

x ik=dk paracada nodoenk

Es decir, al modelo utilizado en la parte 2 se deben añadir ciertas restricciones a los nodos de oferta, es decir a las bodegas, y esta corresponde a:

∑j : (k , j) ϵArcos

xkj− ∑i : (i ,k )∈ Arcos

x ik=dk∀ k∈ {nodos¿}

Esta restricción establece que el flujo se cumple menos para los nodos correspondientes a las bodegas, pero además hay que añadir otra restricción:

dk+ ∑j :( k , j )∈ Arcos

x ik≥ ∑i : (i , k )∈ Arcos

x ik ∀ k∈{bodegas }

Esta señala que los nodos no cumplirán la condición de flujo, debido a que como hay exceso de oferta, estos tienen que quedar con libros.

El resultado obtenido corresponde a un óptimo de 617.557 kilómetros recorridos para satisfacer todas las demandas de todas las municipalidades, que es la suma de los distancias mínimas por cada libro que se transporta.

Page 11: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

7.1.4 Análisis parte 8:

Para esta parte se añadió una restricción sobre la parte 6, la que consiste en restringir la capacidad de cada arco, lo que significa que no puede pasar más de la mitad de libros de la municipalidad que demanda más, este modelo se reduce a:

Minimizar:z=∑i=1

m

∑j=1

n

cij x ij

Sujeto a:

∑j : (k , j) ϵArcos

xkj− ∑i : (i ,k )∈ Arcos

x ik=dk paracada nodo enk

0≤ xij ≤uij dondeuij correspndea la capacidadmaximade cadaarco .

En la última restricción, se ve que la variable de decisión se mantiene siempre bajo una cierta cantidad, lo que restringe que la solución sea óptima. Los resultados esperados para este problema, es que itere una mayor cantidad de veces ya que tiene más restricciones y que el resultado óptimo sea mayor debido a que tendrá que recorrer distancias más largas.

Page 12: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

8. Conclusiones

Las principales conclusiones obtenidas en esta tarea son que, en la parte 2 en que se utilizó el modelo para los datos en los cuales se cambiaban la cantidad de demanda y oferta, es que si bien se aumentaron éstas, el resultado óptimo fue menor debido a la reducción de las distancias recorridas por los libros, lo que compensó este aumento.Para la parte 3 la función haversine y el programa utilizado en Matlab permitieron el cálculo de las distancias entre los nodos y entregó las herramientas necesarias para encontrar los nodos más cercanos a las distintas municipalidades.

En la parte 6, se usó la parte 3 debido a que esta entregaba los datos necesarios para poder calcular las distancias entre los distintos nodos las cuales eran necesarias para resolver el modelo ya que este iteraba para encontrar la distancia mínima entre los nodos de demanda y los nodos de destino, en esta parte de la tarea no se cumplió la restricción de flujo debido a que la oferta era mayor que la demanda, lo que provocó que se modificara el modelo clásico de flujo de costo mínimo (FCM).

Para la parte 7, el modelo de transporte obtuvo una solución óptima igual que el problema anterior, pero en un tiempo de iteración menor, esto se debe a que este modelo no tiene que buscar las distancias mínimas ya que estas fueron calculadas con anterioridad.

En la octava parte, se encontró restricciones para la parte 6 ya que los arcos estaban acotados en la cantidad que podían transportar lo que provocó que este problema no tuviese una solución óptima factible, ya que los libros que salían de las bodegas no eran los suficientes para satisfacer todas las demandas de las municipalidades.

Page 13: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

Anexos:Programación en AMPL:

I. Parte2

Parte2.mod

param n>=o, integer; #aquí se define naturaleza de la variable.

set nodos:=1…n;

set arcos within {nodos, nodos};

param demanda {nodos};

param longitud{arcos}>=0;

var x {(i,j) in arcos}>=0; #variable de decisión

minimize z: sum{(i,j) in arcos} x[i,j]*longitud[i,j]; #se define función objetivo

subject to capacidad{k in nodos}:sum{(k,j) in arcos}x[k,j]-sum{(i,k) in arcos}x[i,k]=demanda[k]; # aqui se establecen las restricciones del problema.

Parte1.dat

param n:=24;

param demanda :=

1 -5.0

2 0.0

……

23 0.0

24 0.0;

param: arcos: longitud :=

1 2 3.0000

1 3 1.0000

Page 14: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

……

24 21 1.0000

24 23 1.0000;

Parte1.run

reset;

option solver cplex;

model parte.mod;

data parte.dat;

solve;

display z;

display x >> 'matriz1.txt'; #guarda los valores de x en un archivo de texto.

Variante parte1.dat es parte1b.dat

parte1b.dat

param n:=24;

param demanda :=

1 -10.0

2 0.0

3 0.0

4 10.0

…..

20 -10.0

21 0.0

22 0.0

23 0.0

Page 15: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

24 0.0;

Parte1.run

reset;

option solver cplex;

model parte.mod;

data parteb.dat;

solve;

display z;

display x >> 'matriz2.txt';

*Este .run hace uso del mismo archivo .mod.

II. Parte6

Parte6.mod

param n>=0, integer;

set nodos:= 1..n;

set arcos within {nodos,nodos};

param demanda {nodos};

param longitud{arcos}>=0;

var x {(i,j) in arcos}>=0; #Naturaleza de la variable

minimize z: sum{(i,j) in arcos} x[i,j]*longitud[i,j]; #Función objetivo

subject to flujo{k in nodos: k!=21085 && k!=30302 && k!=74987}:sum{(k,j) in arcos}x[k,j]-sum{(i,k) in arcos}x[i,k]=demanda[k]; # Restricción de flujo sin considerar las bodegas.

subject to bodegas{k in nodos: k=21085 && k=30302 && k=74987}: demanda[k]+sum{(k,j) in arcos}x[k,j]<=sum{(i,k) in arcos}x[i,k]; #Restricción que permite que las bodegas queden con libros.

Page 16: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

Parte6.dat

param n:=90105;

param demanda :=

1 0.0

2 0.0

…….

90103 0

90104 171

90105 0;

param: arcos: longitud :=

1 3 0.199802514

3 1 0.199802514

……

90104 90090 0.432884745

90104 90102 0.101519316;

Parte6.run

reset;

option solver cplex;

model parte6.mod;

data parte6.dat;

solve;

display z;

display x >> 'matriz3.txt';

Page 17: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

I. Parte7II. Parte8

Parte8.mod

Corresponde al mismo archivo con la parte6 con la diferencia que se añade una cota a la variable x, y hace uso del mismo archivo .dat y .run.

var x {(i,j) in arcos}>=0,<=3686;

Programación en Matlab:

Se pide calcular la longitud de cada arco, para ello se creó en MatLab un algoritmo que implementa la fórmula de Haversine* para calcular la distancia entre dos puntos cualquieras de una esfera.

En el caso dado, se aproxima la tierra a una esfera para aplicar la fórmula.

En lo que sigue, se muetra el código del archivo mfile de Matlab y a continuación una breve explicación.

El algoritmo importa a Matlab los datos desde las hojas de calculo de Excel y los copia dos arreglos llamados Nodos y Arcos, correspondiente a los datos que almacena.

format long gNodos=xlsread('nodos.xlsx');Arcos=xlsread('arcos.xlsx');

Camino=zeros(length(Arcos),4);%Camino tiene en sus columnas nodo de partida y de llegada del arco%Columa 1 latitud de partida%Columa 2 latitud de llegada%Columa 3 longitud de partida%Columa 4 longitud de llegadafor i=1:length(Arcos) A1=Arcos(i,2); A2=Arcos(i,3); Camino(i,1)=Nodos(A1,2); Camino(i,2)=Nodos(A2,2); Camino(i,3)=Nodos(A1,3); Camino(i,4)=Nodos(A2,3);end

Page 18: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

Se creó otro arreglo llamado Camino, que contiene las latitudes y longitudes de partida y llegada de cada arco (Se especifica la distribución en el código)

Esta parte del código se encarga de solucionar un problema causado al importar los datos desde Excel; se pierde el formato original y las coordenadas se muestran como XXXXX en lugar de XX.XXX.

Para ello, se revisa cada coordenada y se divide por 10 hasta que su valor absoluto sea menor a 100, para así asegurar que la coordenada tiene el formato correcto y evitar problemas de cálculo en lo que sigue.

Se crea un nuevo arreglo llamado LongArco, al que se le asigna en la primera columna el número correspondiente a cado arco y en la segunda columna la longitud del arco calculada mediante la fórmula de haversine*.

Para calcular el nodo más cercano a cada municipalidad, se implementó el siguiente código:

LongArco=zeros(length(Arcos),2);for j=1:length(Arcos) LongArco(j,1)=j; LongArco(j,2)=haversine([Camino(j,1) Camino(j,3)],[Camino(j,2) Camino(j,4)]);end xlswrite('LongArco.xlsx',LongArco)

for k2=1:4 k1=1; for k=1:length(Arcos) while abs(Camino(k,k2)) > 100 Camino(k,k2)=Camino(k,k2)./10; end endend

Page 19: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

Se importan las coordenadas correspondientes a la municipalidad de cada comuna desde una hoja de cálculo de Excel, y se asignan el nombre a un arreglo de tipo cell llamado Nomb y las coordenadas a un arreglo llamado Muni.

Al igual que en el caso anterior, se soluciona el problema del formato de las coordenadas dividiendo por 10 hasta que el valor absoluto de cada coordenada sea menor que 100.

Esta parte del código crea un nuevo arreglo llamado Dist, en el que se almacenan las distancias de cada municipalidad a cada nodo.

Para calcular estas distancias se aplica haversine primero a una municipalidad y todos los nodos, una vez obtenidos las distancias, se exportan a un archivo de Excel con el nombre de la municipalidad, y así con todas ellas.

Finalmente, se ordenan los datos de las hojas de Excel de menor a mayor según distancias y así se obtiene el nodo más cercano a cada municipalidad.

[Muni,Nomb]=xlsread('Municipalidades.xlsx');for k2=2:3 for k=1:length(Muni) while abs(Muni(k,k2)) > 100 Muni(k,k2)=Muni(k,k2)./10; end endend for k2=2:3 for k=1:length(Nodos) while abs(Nodos(k,k2)) > 100 Nodos(k,k2)=Nodos(k,k2)./10; end endend

Dist=zeros(length(Nodos),4);for i=1:length(Muni) for j=1:length(Nodos) Dist(j,1)=j; Dist(j,3)=Nodos(j,3); Dist(j,4)=haversine([Muni(i,2) Muni(i,3)],[Nodos(j,2) Nodos(j,3)]); end Nombre=cell2mat(Nomb(i)); xlswrite(strcat(Nombre,'.xlsx'),Dist);end

Page 20: Optimización en la distribución de textos escolares · Web viewPara esto se utilizó un algoritmo de optimización lineal (simplex), el cual consiste en encontrar la región factible

Para calcular los nodos más cercanos a cada bodega, el código funciona de manera análoga al anterior.

[Bodega,Direc]=xlsread('Bodegas.xlsx');for k2=1:2 for k=1:length(Bodega) while abs(Bodega(k,k2)) > 100 Bodega(k,k2)=Bodega(k,k2)./10; end endend for k2=2:3 for k=1:length(Nodos) while abs(Nodos(k,k2)) > 100 Nodos(k,k2)=Nodos(k,k2)./10; end endend Dist2=zeros(length(Nodos),4);for i=1:length(Bodega) for j=1:length(Nodos) Dist2(j,1)=j; Dist2(j,2)=Nodos(j,2); Dist2(j,3)=Nodos(j,3); Dist2(j,4)=haversine([Bodega(i,1) Bodega(i,2)],[Nodos(j,2) Nodos(j,3)]); end Nombre=cell2mat(Direc(i)); xlswrite(strcat(Nombre,'.xlsx'),Dist2);end