Post on 01-May-2022
Estudio de Modelos de Apoyo al Proceso de
Asignacion de Cupos Escolares en el Sistema de
Educacion Publica del Distrito.
Trabajo de Tesispresentado al
Departamento de Ingenierıa Industrial
por
Pablo Andres Maya Duque
Asesor: Dr. Fernando Palacios Gomez
Para optar al tıtulo deMaster en Ingenieria Industrial
Ingenierıa IndustrialUniversidad de Los Andes
Enero 2006
Estudio de Modelos de Apoyo al Proceso de
Asignacion de Cupos Escolares en el Sistema de
Educacion Publica del Distrito.
Aprobado por:
Dr. Fernando Palacios Gomez, Asesor
Fecha de Aprobacion
Dedico este trabajo a mi familia por su constate apoyo; a mis companeros,
verdaderos amigos, por haber sido mi soporte, aliento y companıa en esta nueva
etapa y a mis profesores por brindarme su orientacion.
iii
Tabla de Contenido
Dedicatoria III
Lista de Tablas VII
Lista de Figuras VIII
Resumen IX
I. Introduccion 1
II. Descripcion de la Situacion Problematica 4
2.1. Descripcion del Proceso de Asignacion . . . . . . . . . . . . . . . . . 4
2.2. Identificacion de la Situacion Problematica . . . . . . . . . . . . . . 7
2.3. Planteamiento del Problema . . . . . . . . . . . . . . . . . . . . . . 10
2.3.1. Requerimientos de Informacion . . . . . . . . . . . . . . . . . 10
2.3.2. Formulacion del Problema . . . . . . . . . . . . . . . . . . . 11
III. Estrategia de Solucion: Algoritmo de Subasta 14
3.1. Descripcion del Algoritmo de Subastas . . . . . . . . . . . . . . . . . 14
3.1.1. El Algoritmo de Subastas Raso . . . . . . . . . . . . . . . . . 16
3.1.2. El algoritmo de Subasta, ε -condiciones de Holgura Comple-mentaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2. El Algoritmo de Subasta para el Problema de Estudio . . . . . . . . 19
3.3. Implementacion del Algoritmo . . . . . . . . . . . . . . . . . . . . . 21
IV. Estrategia de Solucion: Generacion de Columnas 25
4.1. Descomposicion de Dantzing-Wolfe . . . . . . . . . . . . . . . . . . . 25
4.2. Algoritmo de Generacion de Columnas . . . . . . . . . . . . . . . . . 27
iv
4.2.1. Definicion del Problema Maestro Restringido Inicial . . . . . 29
4.2.2. Definicion del Problema Auxiliar (Pricing Problem) . . . . . 29
4.3. Consideraciones Respecto a la Implementacion del Algoritmo . . . . 31
4.3.1. Adicion y Borrado de Columnas . . . . . . . . . . . . . . . . 32
4.3.2. Convergencia del Algoritmo . . . . . . . . . . . . . . . . . . . 33
4.3.3. Estrategias de Estabilizacion . . . . . . . . . . . . . . . . . . 34
4.3.4. Uso de Cotas para la Terminacion Anticipada del Algoritmo 40
4.4. Solucion del Problema Entero (no relajado) P2. . . . . . . . . . . . 42
V. Consideracion de extra restricciones 43
5.1. Extra-Restricciones en el Algoritmo de Subasta . . . . . . . . . . . . 43
5.2. Extra-Restricciones en el Algoritmo de Generacion de Columnas . . 45
5.2.1. Algoritmo de Branch-and-Price . . . . . . . . . . . . . . . . . 45
5.2.2. Consideracion de Extra Restricciones . . . . . . . . . . . . . 51
VI. Consideraciones para la Aplicacion de las Estrategias de Solucional Problema de Asignacion de Estudiantes. 53
6.1. Definicion de la Funcion de Beneficios . . . . . . . . . . . . . . . . . 53
6.2. Proceso de Asignacion de Cupos . . . . . . . . . . . . . . . . . . . . 59
6.2.1. Alternativa de Aplicacion 1 . . . . . . . . . . . . . . . . . . . 60
6.2.2. Alternativa de Aplicacion 2 . . . . . . . . . . . . . . . . . . . 62
VII.Conclusiones 65
7.1. Conclusiones Respecto a la Contextualizacion del Proceso de Asig-nacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
7.2. Conclusiones Respecto a las Estrategias de Solucion . . . . . . . . . 66
7.3. Conclusiones Respecto a la Aplicabilidad en el Proceso de Asignacion 68
Apendice A. — Implementacion del Algoritmo de Subasta 70
v
Apendice B. — Implementacion del Algoritmo de Generacion deColumnas 79
Apendice C. — Demostraciones 98
Referencias 103
vi
Lista de Tablas
1. Composicion de la matrıcula (Abril de 2005) . . . . . . . . . . . . . . 8
2. Inscripcion, asignacion y matrıcula de alumnos nuevos . . . . . . . . 9
3. Resultados Corridas Instancia 1000 Estudiantes 10 Colegios . . . . . 22
4. Ejemplo del calculo de las distancias . . . . . . . . . . . . . . . . . . 55
5. Ejemplo del calculo de las distancias afectadas poor la prioridad . . . 56
6. Resultados de Ejecucion de Instancias de Prueba . . . . . . . . . . . 58
vii
Lista de Figuras
1. Elementos Importantes del Proceso de Asignacion de Cupos Escolares 6
2. Estrategias de Asignacion de Cupos . . . . . . . . . . . . . . . . . . . 8
3. Demanda de alumnos nuevos por grado . . . . . . . . . . . . . . . . . 9
4. Algoritmo de Subasta para problemas de Asignacion . . . . . . . . . 18
5. Valor de Epsilon y Numero de Iteraciones por Ronda . . . . . . . . . 23
6. Valor de la Funcion Objetivo en cada Ronda (subasta) . . . . . . . . 24
7. Generacion de Columnas. Resultados de ejecucion . . . . . . . . . . . 34
8. Generacion de Columnas. Comparacion de Formulaciones . . . . . . . 36
9. Generacion de Columnas. Estabilizacion del algoritmo . . . . . . . . . 39
10. Generacion de Columnas. Estabilizacion del algoritmo y restriccionesde desigualdad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
11. Algoritmo Branch and Price . . . . . . . . . . . . . . . . . . . . . . . 48
12. Alternativa de Aplicacion 1 . . . . . . . . . . . . . . . . . . . . . . . 61
13. Alternativa de Aplicacion 2 . . . . . . . . . . . . . . . . . . . . . . . 63
viii
Resumen
Este trabajo presenta la descripcion del proceso de asignacion de cupos escolares
en los colegios publicos del distrito, identificando en dicho proceso la problematica
asociada a la asignacion de cupos a nuevos estudiantes que ingresan al sistema edu-
cativo. El problema de asignar cupos a los estudiantes, en un entorno en el que la
oferta educativa aun no es suficiente para cubrir toda la demanda, incrementa su
complejidad ante la existencia de factores de priorizacion en la asignacion ası como
el gran numero de estudiantes que se encuentran involucrados en este proceso para
cada grado, lo cual convierte este en un problema de optimizacion de gran escala
cuya solucion no es posible a traves de la sola implementacion en algun paquete de
optimizacion. En el desarrollo de este trabajo, se plantean modelos que permitirıan
enfrentar este problema de asignacion desde la perspectiva de la programacion ma-
tematica, contrario a la forma como actualmente se da solucion a este problema,
la cual es similar a las heurısticas greedy usadas en problemas de Binpacking o de
Asignacion, que no siempre proveen soluciones cercanas al optimo. Los modelos pre-
sentados son, principalmente, el Algoritmo de Subastas y el algoritmo de Generacion
de Columnas o en su forma mas general el algoritmo Branch-and-Price.
ix
Para los modelos considerados, se describe la forma como podrıan usarse para abor-
dar el problema de asignacion de cupos, identificando ası mismo las limitaciones y
algunas alternativas para superarlas. La implementacion de los algoritmos permite
observar como podrıan desempenarse las alternativas presentadas, en la solucion de
instancias reales del problema de asignacion de estudiantes nuevos a los colegios
distritales. Se plantea ademas, la forma como estos modelos pueden ser modificados
o ampliados para considerar posibles restricciones adicionales al problema de asig-
nacion lo que permitirıa modelar de mejor forma el problema real.
El desarrollo de este trabajo permitio observar en la practica, consideraciones que
comunmente se senalan en la literatura en relacion con los algoritmos estudiados.
Es ası como fue posible interactuar y visualizar conceptos como ε − scaling en el
algoritmo de Subastas o los problemas de convergencia en el algoritmo de Genera-
cion de Columnas. Fue posible ademas identificar, en el proceso que actualmente se
desarrolla para asignar los cupos escolares en el distrito, una oportunidad de mejo-
ra, la cual solo podra ser realmente evaluada disponiendo de la informacion que el
Distrito recopila durante el desarrollo de dicho proceso.
x
Capıtulo I
Introduccion
La Educacion es considerada un servicio publico con una clara funcion social, siendo
por esto consagrado como un derecho fundamental, por el cual deben velar el Es-
tado, la Sociedad y la familia. El reconocimiento de la funcion social desempenada
por la educacion como elemento basico en el esfuerzo de sobrepasar las desigualda-
des sociales, otorga gran importancia a la manera como se permite acceder a este
servicio de manera equitativa a los distintos grupos de la poblacion, en particular
aquellos mas vulnerables. La cobertura alcanzada por la oferta de cupos escolares
en instituciones publicas se ha incrementado, considerando el ideal de una cobertu-
ra total, sin embargo la disponibilidad de cupos no es suficiente para satisfacer la
demanda existente, la cual se ve aumentada por fenomenos como la violencia y el
desplazamiento entre otros. En este contexto toma importancia la manera como se
definen y trazan los procedimientos, criterios y lineamientos que determinan el pro-
ceso de asignacion de cupos escolares, en particular para las instituciones publicas, en
las cuales estos procesos deben estar regidos por criterios de justicia y equidad social.
Con el objeto de garantizar el cumplimiento del plan de Desarrollo 2002-2006, en
particular en materia educativa, el Ministerio de Educacion Nacional reconoce la
necesidad de establecer procesos claros y estandarizados para la asignacion de cupos
escolares y matrıcula de los estudiantes, que permitan optimizar el acceso al servicio
educativo en condiciones de eficiencia y equidad.
1
La Resolucion 1515 de julio 3 de 2003 establece las directrices, criterios, procedi-
mientos y cronograma para la organizacion del proceso de asignacion de cupos y
matrıcula para los niveles de Preescolar, Basica y Media de las instituciones de edu-
cacion formal de caracter oficial en las entidades territoriales.1
En cumplimiento, entre otras disposiciones, del Plan de Desarrollo Economico, social
y de Obras Publicas para Bogota 2004-2008 “Bogota sin Indiferencia”, corres-
ponde a la Secretaria de Educacion Distrital la organizacion del servicio publico
educativo, en particular aquel que es prestado a traves del sistema oficial de educa-
cion formal.2 Bajo esta consideracion, el Distrito Capital mediante la Resolucion
4040 del 28 de Septiembre de 2004, establece las polıticas, directrices, criterios, pro-
cedimientos y el cronograma para el proceso de atencion de la demanda educativa
para el ano 2005.
El proceso de atencion de la demanda educativa establecido tiene entre otros ob-
jetivos: “Implantar la Renovacion Automatica y el Registro Unico de Matrıcula.
Garantizar el acceso al servicio educativo oficial de la poblacion en edad escolar y
adultos que se encuentran fuera del sistema educativo. Priorizar la asignacion de
cupos escolares hacia los grupos poblacionales vulnerables y los grados de mayor
demanda. Mantener la transparencia en la asignacion de cupos escolares. ”Median-
te la misma resolucion la Secretaria de Educacion Distrital define los criterios y
prioridades considerados para las asignacion de cupos escolares disponibles en las
Instituciones y Centros Educativos Distritales, con el objeto de atender la demanda
educativa, garantizando que la asignacion de cupos escolares se realizara atendiendo
a principios de transparencia, equidad y objetividad y priorizando las poblaciones
pertenecientes a los niveles 1 y 2 del SISBEN y de l estrato socioeconomico 1 y 2.
Este trabajo corresponde a una mirada crıtica del proceso de asignacion de cupos
escolares que se desarrolla en el distrito, pretendiendo identificar aspectos en los
1Resolucion 1515 de julio 3 de 2003 del Ministerio de Educacion.2Resolucion 4040 del 28 de Septiembre de 2004
2
cuales el uso de modelos matematicos, particularmente del area de investigacion
de operaciones, podrıan contribuir a su desarrollo. Sin bien no se trata de estudio
mancomunado con la Secretaria de Educacion, puesto que no fue posible obtener
la informacion real de la que disponen en el sistema de informacion, los resultados
obtenidos en su desarrollo pueden contribuir y ser de utilidad para resaltar aspecto
claves dentro del proceso de asignacion de cupos.
Este documento esta organizado de la siguiente manera. El Capıtulo 2 Describe el
proceso de asignacion de cupos en el distrito e identifica la situacion problematica
y el problema de estudio. El Capıtulo 3 presenta una aplicacion particular de algo-
ritmo de subastas (disenado por el profesor Dimitri Bertsekas) para la solucion del
problema basico de asignacion presente en el proceso de asignacion de cupos escola-
res. El Capıtulo 4 aborda el mismo problema de asignacion mediante una estrategia
de solucion basada en el algoritmo de generacion de columnas, explorando las limita-
ciones y dificultades en su solucion ası como planteando posibles soluciones a estas.
El Capıtulo 5 presenta la forma como podrıan usarse las estrategias de solucion
del problema de asignacion basico planteado, descritas en los dos capıtulos anterio-
res, para hacer frente a restricciones adicionales que permitan aproximar mejor el
problema real. Una vez descritas las estrategias de solucion y la forma de abordar
problemas mas complejos, pero mas ajustados a la realidad, el Capıtulo 6 plantea la
metodologıa que podrıa seguirse para emplear las estrategias propuestas dentro del
proceso de asignacion de cupos escolares del distrito. Finalmente el Capıtulo 7 pre-
senta las conclusiones mas relevantes del trabajo desarrollado, planteando ademas
recomendaciones y consideraciones para futuros trabajos relacionados.
3
Capıtulo II
Descripcion de la Situacion Problematica
2.1. Descripcion del Proceso de Asignacion
La Secretaria de Educacion define claramente el proceso de matrıculas para los
establecimientos educativos distritales. Con base en la definicion de este proceso, el
conjunto de estudiantes cubiertos por el sector oficial es caracterizado de la siguiente
forma1 :
A. Estudiantes Antiguos: Estudiantes que se hayan matriculado para el ano
2004 en las IED, CED, los colegios distritales en consecion y los colegios pri-
vados en convenio.
B. Estudiantes Nuevos: Se consideran estudiantes nuevos aquellos que deseen
acceder al servicio, que no se encuentran registrados como matriculados en la
base de datos del sistema de la SED. Dentro de este conjunto de estudiantes
podrıan distinguirse
i.) Estudiantes Nuevos transicion y primero: Conjunto de estudian-
tes que aspiran a ingresar al sistema educativo publico del distrito en el
grado cero (0◦ o Transicion) y primer grado (1◦). El distrito garantizara el
cupo escolar para los estudiantes de este grupo. Se consideran como es-
tudiantes nuevos, los ninos y ninas que han estado vinculados al DABS
y el ICBF durante el ano lectivo anterior y que desean ingresar al grado
de transicion en el sector oficial.
1Basado en la Resolucion 4040 y 5578 de 2004
4
iii.) Estudiantes Inscritos Contra Oferta Educativa : Estudiantes in-
teresados en ingresar al sistema educativo oficial para cualquiera de los
grados o niveles ofrecidos. Esta poblacion se denomina inscritos contra
oferta educativa disponible.
Dentro de cada uno de estos conjuntos de estudiantes es importante distin-
guir aquellos pertenecientes a Grupos Vulnerables (desvinculados del conflicto
armado, desplazados, hijos de desmovilizados, hijos de vıctimas del secuestro
y desaparicion forzada entre otros.) a los cuales se otorgara prioridad en la
asignacion de cupos.
Las etapas para desarrollar la asignacion de cupos estan definidas para cada uno
de estos grupos de estudiantes. Para los estudiantes antiguos el proceso esta regido
principalmente por la estrategia de continuidad mediante la Renovacion Automati-
ca. Sin embargo, para los estudiantes que son transferidos del DABS y del ICBF
es necesario emplear un modelo que permita asignarlos de la mejor forma posible.
Para Los estudiantes Nuevos la situacion es similar, deben asignarse de acuerdo
con las capacidades disponibles para atender la demanda y bajo la consideracion
de criterios de priorizacion y demas restricciones definidas. La Figura 1 presenta de
manera esquematica los elementos mas importantes del proceso de asignacion de
cupos escolares.
El proceso de asignacion fluye de la manera indicada por la flecha inferior en la
grafica. Para una gran parte del conjunto de estudiantes antiguos la asignacion de
cupos se hace automaticamente mediante la estrategia de Renovacion Automatica y
los procedimientos definidos para el traslado de estudiantes ya vinculados al sistema
de educacion publico. Por otra parte, la asignacion de los estudiantes provenientes
del DABS y el ICBF ası como los estudiantes Nuevos, son instancias particulares
del problema de asignacion que se desea abordar y estudiar, para las cuales debe
desarrollarse dicho proceso bajo la consideracion de limitaciones de capacidad y res-
tricciones adicionales.
5
Figura 1: Elementos Importantes del Proceso de Asignacion de Cupos Escolares
El proceso de asignacion para el conjunto de estudiantes que no es posible abarcar
mediante Renovacion Automatica, define las estrategias y lineamientos a seguir para
su desarrollo. De manera general el proceso se desarrolla de acuerdo con el siguiente
lineamiento:
“La SED asignara los cupos escolares preferiblemente en las opciones seleccionadas
por el padre, madre o acudiente. De no existir cupo en las opciones solicitadas, se
asignara en las instituciones cercanas a su lugar de residencia (de acuerdo con la
direccion suministrada en el formulario). Si una vez surtido este proceso, no es posi-
ble asignar un cupo, la SED recurrira a otras estrategias de cobertura”(Resolucion
4040 de 2004)
La Asignacion de cupos se lleva a cabo en concordancia con el orden estipulado, de
acuerdo cronograma del proceso de matrıculas se asignan primero los estudiantes
del DABS y el ICBF, luego los estudiantes vulnerables y de Transicion y 1◦ y por
ultimo los estudiantes inscritos contra la oferta educativa.
6
En cada una de estas etapas se desarrollan las estrategias definidas para la asigna-
cion de cupos a los estudiantes, las cuales se presentan en la parte derecha de la
Figura 2. En primer lugar, se desarrolla la asignacion por Opciones, la cual asig-
na a los estudiantes con respecto a las opciones presentadas en el Formulario y
considerando para ello las prioridades en la asignacion2 ; para ello ordena los es-
tudiantes con respecto a su prioridad para en este orden desarrollar el proceso de
asignacion. Postriormente, aquellos estudiantes que no fueron asignados en alguna
de las opciones seleccionadas en el formulario, son asignados por georeferenciacion,
es decir nuevamente se recorre en orden de acuerdo a las prioridades, el conjunto de
estudiantes asignando cada uno de ellos tan cerca como sea posible a su residencia.
Por ultimo, la asignacion por Bloques, pretende generar estrategias de asignacion
para aquellos estudiantes a los que no fue posible asignarles un cupo mediante las
dos estrategias anteriores, haciendo uso para ello de las distintas herramientas para
ampliar la cobertura que disene la secretaria.
La Figura 2 presenta la secuencia en la cual se desarrollan las estrategias de asig-
nacion, ası como el orden en el cual se cubren los conjuntos de estudiantes que
deben asignarse, presenta tambien el orden y las prioridades que se siguen para la
asignacion de los estudiantes.
2.2. Identificacion de la Situacion Problematica
El proceso de asignacion de matrıcula involucra un gran numero de estudiantes, la
gran mayorıa de estos son estudiantes antiguos, para los cuales la asignacion de cupos
esta determinada por la polıtica de continuidad a traves de la renovacion automatica;
un problema mas complejo esta representado por la asignacion de estudiantes nuevos,
(conjunto que se definio anteriormente), la Tabla 1 presenta la composicion de la
matrıcula que se presentaba en Abril de 2005, en donde puede observarse el numero
2Estas prioridades son el resultado de la evaluacion que hace la Secretaria de Educacion delas diferentes caracterısticas del estudiante; por ejemplo, el estrato socio economico y el tipo depoblacion al cual pertenecen. Como resultado de la evaluacion se asigna al menor un cierto nivelde prioridad para su asignacion.
7
Figura 2: Estrategias de Asignacion de Cupos
de estudiantes en cada uno de los dos grupos (Antiguos y Nuevos).
INSTITUCIONES ANTIGUOS NUEVOS TOTALOFICIALES 623.250 150.402 773.652
81 % 19 % 100%
CONCESION 27.107 8.303 35.41077 % 23 % 100%
SUBSIDIOS 105.629 20.105 125.73484 % 16 % 100%
TOTAL 755.986 178.810 934.796
Tabla 1: Composicion de la matrıcula (Abril de 2005)
Dentro del proceso de asignacion de estudiantes descrito anteriormente, genera in-
teres particular el proceso desarrollado para la asignacion de cupos a los estudiantes
nuevos. De acuerdo con la informacion suministrada por la Secretaria de educa-
cion Distrital el total de estudiantes nuevos inscritos hasta marzo de 2005 ascendıa
223,537 de los cuales cerca de 170,753 se encontraban matriculados (para abril de
2005 este numero era cercano a 178,810). La Tabla 2 presenta la distribucion de estos
estudiantes dentro de las distintas categorıas de estudiantes nuevos; Adicionalmente
la Figura 3 presenta la distribucion de la demanda generada por los alumnos nuevos
8
CONCEPTO INSCRITOS ASIGNADOS MATRICULADOSDABS-ICBF 35.578 35.578 31.428Vulnerables 55.869 55.869 42.741
Contra oferta 64.069 64.069 38.958Sub Total 155.516 155.516 113.127
No inscritos 68.021 68.021 57.626Total Demanda 223.537 223.537 170.753
Tabla 2: Inscripcion, asignacion y matrıcula de alumnos nuevos
en cada uno de los grados.3
Figura 3: Demanda de alumnos nuevos por grado
Puede observarse como para los primeros grados, particularmente 0◦ y 1◦ esta de-
manda es mayor, haciendo que el problema de asignacion involucrado en este proceso
deba considerar en algunos casos mas de 30,000 estudiantes simultaneamente. Este
hecho genera una complejidad importante dentro del proceso de asignacion y otorga
mayor importancia a su estudio y analisis.
Dentro de este proceso de asignacion de cupos en el distrito, la asignacion como tal
se constituye en una de los aspectos que ameritan ser estudiados; la forma como
3Construidas a partir de l informacion suministrada por la Secretaria de Educacion
9
actualmente se desarrolla podrıa compararse con los algoritmos “greedy” disenados
para problemas similares. Si bien, permite encontrar una solucion factible al proble-
ma, podrıa perjudicar en el objetivo de encontrar una asignacion que favorezca a un
mayor numero de estudiantes, respecto a la asignacion de colegios mas cercanos y
convenientes a sus necesidades y sus expectativas.
2.3. Planteamiento del Problema
Una vez descrita brevemente la situacion problematica y la manera particular en
la que actualmente se desarrolla el proceso de asignacion, es de interes describir el
problema especıfico dentro de este proceso que sera el objeto de investigacion en el
desarrollo de este proyecto.
Se pretende abarcar el problema de la asignacion de cupos escolares para el conjunto
de estudiantes nuevos (DABS-ICBF, Transicion y 1◦ e inscritos contra la oferta edu-
cativa) para el sistema de educacion oficial del distrito. De manera bastante general,
el problema puede enunciarse de la siguiente forma:
Dado un conjunto de estudiantes que aspiran a un cupo, en determinado grado, en
alguno de los colegios distritales, y dado un conjunto de colegios, con una capacidad
(oferta) determinada (por grado); deben asignarse los estudiantes a los colegios, de
modo que se maximice una funcion del beneficio (en terminos de la distancia y
prioridades, entre otras) para dicha asignacion.
2.3.1. Requerimientos de Informacion
El desarrollo del proceso de asignacion hace uso de la informacion que la Secretaria
de Educacion recopila respecto a los estudiantes y las instituciones que ofrecen cupos
para que estos sean asignados. Alguna de la informacion empleada es:
A. Respecto a los Estudiantes: Para cada estudiante, diferenciando segun
pertenezcan a cada instancia (DABS-ICBF, Transicion y 1◦ o inscritos contra
la oferta educativa) es importante disponer de la siguiente informacion.
10
i.) Ubicacion del estudiante (georeferenciacion, coordenadas de la direccio-
nan reportada en el formulario)
ii.) Informacion del nivel de SIBEN y estrato socio-economico.
ii.) Opciones de instituciones de preferencia reportadas en el formulario.
iv.) Grado para en el cual el estudiante espera le sea asignado cupo.
v.) Si es del caso, indicador del colegio en el cual estan asignados el o los
hermanos del estudiante.
vi.) Institucion a la cual fue asignado el estudiante al finalizar el proceso
actual de matrıculas
B. Respecto a las Instituciones: Para cada institucion es importante disponer
de la siguiente informacion.
i.) Oferta de cupos escolares por cada grado, despues de los procesos de
renovacion automatica y traslado de estudiantes.
ii.) Ubicacion geografica de las instituciones educativas del distrito que tie-
nen oferta de cupos para el proceso de asignacion. (georeferenciacion,
coordenadas de la direccion reportada en el directorio de instituciones)
2.3.2. Formulacion del Problema
El problema basico de Asignacion que se encuentra involucrado en el proceso de
asignacion de cupos del distrito puede formularse como se presenta en el problema
P1, que en adelante se denominara formulacion estandar
Sea:
I: Conjunto de Estudiantes que deben asignarse. Indexado con i, |I| = n
J : Conjunto de Instituciones. Indexado con j, |J | = m
cij: Beneficio de Asignar el estudiante i a la institucion j
bj: Oferta de cupos (para el grado especıfico) de la institucion j
11
xij =
1, si el estudiante i es asignado a la institucion j
0, de lo contrario
(P1)
Maximizar∑i∈I
∑j∈J
cijxij∑j∈J
xij = 1 ∀i ∈ I (1)∑i∈I
xij = bj ∀j ∈ J (2)
xij ∈ {0, 1} ∀i ∈ I, ∀j ∈ J (3)
El conjunto de restricciones (1) y (2) garantizan, respectivamente, que cada estu-
diante sera asignado a algun colegio y que el numero de estudiantes asignados a un
colegio particular no sobrepasara la capacidad de cupos de este. Note que se asume
que el problema es balanceado, es decir, que el numero de estudiantes que deben
asignarse es igual al numero de cupos en los colegios; de hecho, en este problema
particular esta condicion no se satisface, Sin embargo puede modificarse ligeramente
el problema para satisfacerla. En los casos en los cuales la demanda de cupos es
mayor que la oferta puede definirse un colegio ficticio con una capacidad de cupos
igual al exceso de demanda y cuyo costo de asignacion para cada estudiante es un
valor negativo −M suficientemente pequeno. Para aquellos casos en los cuales la
oferta es mayor a la demanda pueden generarse un numero de estudiantes ficticios,
igual a la diferencia entre estas dos cantidades, cada uno de ellos con un beneficio
de asignacion a cada colegio suficientemente pequeno −M .
Es importante resaltar algunos aspectos respecto al problema basico presente en el
proceso de asignacion de cupos escolares (P1)
1. La estructura particular de este problema puede asemejarse a algunos proble-
mas tıpicos y bien estudiados.[1] y [3] Este hecho determinara los distintos
12
algoritmos que se estudien para su solucion. Especıficamente el problema en
(P1) se asemeja a un Problema de Asignacion Generalizada (GAP), en este
caso el costo o consumo de la asignacion de cada estudiante i (item) al cole-
gio j (recurso)es de una unidad. De igual forma, el problema en (P1) puede
ser visto como un caso particular de un problema de transporte en el cual la
demanda de cada uno de los nodos de demanda es unitaria, o como el caso
particular de un problema de asignacion, asumiendo que existen para cada
colegio un numero, igual a su capacidad, de cupos (objetos) iguales.
2. El problema en (P1) es bastante general, en el se asume que cualquier estudian-
te puede ser asignado a cualquier colegio y que las restricciones de asignacion
para todos los colegios son iguales. Sin embargo, podrıa ser necesario conside-
rar restricciones adicionales respecto a los colegios a los cuales un estudiante
dado puede ser asignado, por ejemplo la asignacion considerando el genero del
estudiante y el tipo de genero que atiende cada institucion. De igual forma,
podrıa ser necesario considerar restricciones adicionales para las asignaciones
factibles de cada colegio; por ejemplo, en terminos de balancear el genero o es-
trato socio economico de los ninos asignados en cada colegio. Incluso, podrıan
existir restricciones particulares para distintos conjuntos de instituciones.
3. El valor cij que representa el beneficio de asignar el estudiante i a la institucion
j, es en realidad el resultado de una funcion que involucra aspectos como la
prioridad de asignacion (este valor se considerarıa de acuerdo a como se estima
por la Secretaria de Educacion, en funcion del estrato socio economico, el
SISBEN y el tipo de poblacion al cual pertenece el estudiante), las preferencias
expresadas por los padres y la ubicacion (distancia) del estudiante respecto a
la institucion.
Estos aspectos, entre otros, se desarrollan en los siguientes capıtulos, en los cuales
se pretende abordar el problema desde su forma mas simple e ir adicionando los
elementos que permiten aproximarse mas al problema real.
13
Capıtulo III
Estrategia de Solucion: Algoritmo de Subasta
Este capıtulo describe la generalizacion del algoritmo de subasta (Auction algo-
rithm) para problemas de asignacion, de modo que permita la solucion del problema
particular en (P1). El algoritmo de Subastas fue creado por el profesor Dimitri Bert-
sekas [4] y su generalizacion para problemas de transporte fue una modificacion del
algoritmo original realizada por el profesor Bertsekas y el profesor Castanon [6]. Es
un algoritmo sencillo de comprender y puede ser explicado en terminos de conceptos
de competencia economica.[5]
3.1. Descripcion del Algoritmo de Subastas
En el problema clasico de asignacion hay n personas (estudiantes) y n objetos (cu-
pos) que deben serles asignados. la asignacion del cupo j al estudiante i genera un
beneficio cij, se pretende asignar los cupos a los estudiantes de modo que se maxi-
mice el beneficio total obtenido.
Sea S una asignacion, es decir el conjunto de pares estudiante-cupo (i, j), de modo
que cada estudiante i y cada cupo j esta presente en maximo un par en S. si el
numero de pares en S es n entonces se dice que S es factible, en caso contrario se
dice que no es factible. Se pretende entonces encontrar una asignacion S factible, la
cual sea optima, es decir que maximice∑n
i=1 ciji∀(i, j) ∈ S
Definiendo este como el problema de asignacion primal, puede observarse la equiva-
lencia con un problema de flujo en redes de Programacion Lineal.
14
Maximizar∑i∈I
∑j∈J
cijxij∑j∈J
xij = 1 ∀i ∈ I (4)∑i∈I
xij = 1 ∀j ∈ J (5)
xij ∈ {0, 1} ∀i ∈ I, ∀j ∈ J (6)
Para comprender intuitivamente el algoritmo es importante destacar un problema de
equilibrio economico equivalente al problema de asignacion. Considere la asignacion
de n objetos a n personas a traves de un mecanismo de mercado, donde cada per-
sona corresponde a un agente economico que busca su maximo beneficio personal.
Suponiendo que cada objeto j tiene un precio pj y que la persona a la cual le sea
asignado el objeto pagarıa este precio por el, el valor del objeto j para la persona i
es cij − pj y cada persona i pretendera que le sea asignado el objeto ji con maximo
valor, es decir:
cij − pj = maxj∈J
{cij − pj} ∀(i, j) ∈ S (7)
El sistema estarıa entonces en equilibrio, debido a que ninguna persona deberıa te-
ner algun incentivo para actuar unilateralmente, para buscar otro objeto diferente
al que le ha sido asignado.[5]
Si bien la interpretacion economıa del algoritmo da cierta comprension intuitiva,
una relacion fundamental existe entre el equilibrio economico senalado y el pro-
grama lineal correspondiente: una asignacion S que genera dicho equilibrio, ofrece
el maximo beneficio total, resolviendo el problema de asignacion, mientras que el
correspondiente conjunto de precios pj resuelve el problema dual asociado. Es decir,
una asignacion factible S y un vector de precios pj son primal y dual optimos si-
multaneamente si y solo si cada persona logra su maximo beneficio (utilidad) siendo
asignada al objeto que le ofrece mayor valor, puede mostrarse que este hecho corres-
ponde a las condiciones de holgura complementaria. En [5] y [6] se demuestra esta
15
relacion.
3.1.1. El Algoritmo de Subastas Raso
Corresponde a un primer algoritmo para encontrar una asignacion S que genere el
equilibrio y el vector de precios asociado. El algoritmo se desarrolla en iteraciones
y genera una secuencia de vectores de precios y asignaciones. Al comenzar cada
iteracion las condiciones de holgura complementaria (7) son satisfechas por todos
los pares (i, j) ∈ S; si todas las personas han sido asignadas el algoritmo termina,
en caso contrario una de las personas que no ha sido asignada es seleccionada y se
desarrolla una nueva iteracion. Cada una de las iteraciones esta compuesta de dos
fases:
1. Fase de Oferta Para una persona i en el conjunto de personas no asignadas,
se determina el objeto que genera el mayor valor j∗i
j∗i ∈ arg maxj∈J
{cij − pj} = vij∗i(8)
Se calcula ademas la oferta de la persona i por el objeto j∗i , dada por,
bij∗i= pj∗i
+ vij∗i− wi (9)
En donde wi es el mejor valor (cij − pj) para cualquier otro objeto diferente
de j∗i
2. Fase de Asignacion Se asigna el objeto j∗i a la persona i, dado el caso en
el cual este objeto ya estaba asignado a otra persona, entonces esta entra a
formar parte del conjunto de personas no asignadas. Por ultimo se incrementa
el precio del objeto de modo que este se haga igual a la oferta hecha por i, es
decir, el nuevo precio del objeto sera, bij∗i
El algoritmo continua hasta que el conjunto de personas a las cuales no se ha asig-
nado algun objeto esta vacio. Es importante notar que dado que para todos los
casos vij∗i− wi ≥ 0, el precio de los objetos tiende a crecer. La version del algorit-
mo descrita corresponde a la denominada Gauss-Seidel, en la cual una sola persona
16
ofrece por un objeto en cada iteracion, una version alternativa, denominada Jacobi
corresponde al caso en el cual en cada iteracion cada persona no asignada, ofrece
por un objeto, esta version podrıa ser mas apropiada en el caso en el cual se trabaje
en procesadores en paralelo.[6]
3.1.2. El algoritmo de Subasta, ε -condiciones de Holgura Complemen-taria
El algoritmo descrito tiene una dificultad importante, podrıa generarse un ciclo in-
finito, lo cual no garantiza la terminacion del algoritmo; esta situacion se presenta
cuando mas de un objeto ofrece la maxima valoracion, lo cual genera que el precio de
los objetos no cambie y el algoritmo se atasque.[15] Para salir de el ciclo generado,
se introduce un mecanismo de perturbacion1
Sea ε un valor escalar fijo positivo, se dice que una asignacion S y un vector de precios
p satisface las ε-condiciones de holgura complementaria (ε− CS), si se satisface:
cij − pj ≥ maxj∈J
{cij − pj} − ε ∀(i, j) ∈ S (10)
Es decir, se satisfacen (ε−CS), si todas las personas pueden ser asignadas a objetos
que estan a una cantidad ε de ser las mas valoradas.
Puede entonces reformularse el algoritmo modificando unicamente la fase de oferta,
de modo que esta siempre incremente el precio de los objetos, para ello, la oferta de
la persona i por el objeto j∗i que genera mayor valoracion sera:
bij∗i= pj∗i
+ vij∗i− wi + ε (11)
Dos aspectos adicionales son de interes para definir completamente el algoritmo:2
1. El algoritmo, reformulado segun se senalo anteriormente, termina en un nume-
ro finito de iteraciones, generando como resultado una asignacion S factible y
1Motivado en las Subastas reales, en las cuales cada oferta por un objeto debe incrementar elprecio actual del objeto [5]
2En [4] y [5] se presentan las demostraciones de estos dos aspectos
17
un vector de precios p que satisfacen ε − CS. Adicionalmente, el tiempo de
ejecucion del algoritmo es O(n2 maxi,j |cij|/ε)
2. Para un problema de asignacion con beneficios cij enteros, si ε < 1n, el algoritmo
de subastas termina en un numero finito de iteraciones con una asignacion
optima S.
bajo estas consideraciones, el algoritmo de subasta para el problema de asignacion
opera bajo la consideracion de un concepto denominado ε− scaling, el cual consiste
en aplicar el algoritmo en repetidas ocasiones, comenzando con un valor de ε sufi-
cientemente grande y reducir iterativamente este valor hasta que se logre el valor
crıtico que garantice la optimalidad de la solucion encontrada. La Figura 4 presenta
la forma como se desarrolla el algoritmo.
Figura 4: Algoritmo de Subasta para problemas de Asignacion
18
3.2. El Algoritmo de Subasta para el Problema de Estudio
El algoritmo de Subastas que se describio funciona apropiadamente para problemas
de asignacion, sin embargo, debe notarse que el problema basico descrito en el ca-
pitulo anterior (P1), no corresponde exactamente a un problema de asignacion.
El problema que se pretende estudiar puede asimilarse a un problema de asigna-
cion en el cual para cada uno de los colegios puede definirse un numero igual a su
capacidad de cupos (objetos) identicos, es decir, dado un colegio con capacidad bj
existiran bj cupos que generan el mismo beneficio de asignacion cij para el estu-
diante i. Podrıa entonces aplicarse el mismo algoritmo descrito anteriormente a este
problema, sin embargo, la dimension del problema crecerıa considerablemente y la
estructura del problema modificado seria tal que la guerra de precios seria inevita-
ble, generando atascamientos en el algoritmo.[5] Dadas estas circunstancias, toma
importancia la modificacion realizada por los profesores Bertsekas y Castanon al al-
goritmo original, de modo que permita considerar la existencia de objetos similares.3
El algoritmo de Subasta para problemas de asignacion con objetos similares, tiene
en cuenta las siguientes consideraciones.
1. Se entiende que dos objetos j y j′ son similares, pertenecen a la misma clase
M(j), si para todas las personas i ∈ I se tiene que aij = aij′
2. Dado un vector de precios p se define el precio de la clase M(j) de un objeto
j como pj = mınk∈M(j){pk}
Puede ahora describirse el algoritmo empleado para la solucion del problema de asig-
nacion de estudiantes a los colegios, problema basico (P1), descrito anteriormente,
considerando para ello n estudiantes y n cupos en donde los n cupos son el resultado
de definir para cada colegio una clase de objetos similares con tantos elementos como
cupos disponga el colegio.
3Esta modificacion del algoritmo, junto con las consideraciones para permitir personas similares,son la base del algoritmo de subasta para problemas de transporte presentado en [6]
19
Algoritmo de Asignacion de Estudiantes
Para la mejor comprension del algoritmo es necesario definir los siguientes conceptos:
Iteracion. Corresponde a el procedimiento en el cual para un estudiante al que
no le ha sido asignado cupo se realizan las dos fases basicas del algoritmo:
Oferta y Asignacion.
Subasta. Tambien podrıa denominarse Ronda, corresponde al conjunto de ite-
raciones necesarias hasta lograr un asignacion que satisfaga las ε − CS para
un valor de epsilon dado. Una subasta recoge todas las iteraciones, ofertas y
asignaciones, hasta que se ha logrado la asignacion optima para el valor de
epsilon dado.
El algoritmo se desarrolla entonces mediante rondas, de modo que cada ronda tiene
un valor de epsilon menor que la ronda inmediatamente anterior y en cada ronda se
recogen cuantas iteraciones, ofertas y asignaciones, sean necesarias hasta satisfacer
las condiciones ε − CS. El algoritmo termina cuando de epsilon alcanza el valor
que permite determinar la optimalidad de la asignacion encontrada. El algoritmo
desarrolla los siguientes pasos:
1. Inicializar. Inicialice ε en un valor suficientemente grande. considere una asig-
nacion inicial S y un vector de precios p que satisfagan las condiciones ε−CS.
El conjunto S = ∅ y el vector de precios p = 0 satisfacen estas condiciones.
2. Subasta. Encuentre la asignacion optima que maximiza el beneficio y satisface
las condiciones ε− CS, para ello desarrolle iterativamente, hasta que a todos
los estudiantes les haya sido asignado un cupo
i.) Fase de Oferta . Para una persona i en el conjunto de personas no
asignadas, se determina el objeto que genera el mayor valor j∗i
j∗i ∈ arg maxj∈J
{cij − pj} = vij∗i(12)
Se calcula ademas la oferta de la persona i por el objeto j∗i , dada por,
bij∗i= pj∗i
+ vij∗i− wi + ε (13)
20
En donde wi es el mejor valor (cij−pj) para cualquier otro objeto pertene-
ciente a una clase diferente de la de j∗i , es decir wi = maxj /∈M(j∗i ) {cij − pj}
ii.) Fase de Asignacion . Se asigna el objeto j∗i a la persona i, dado el caso
en el cual este objeto ya estaba asignado a otra persona, entonces esta
entra a formar parte del conjunto de personas no asignadas. Por ultimo
se incrementa el precio del objeto de modo que este se haga igual a la
oferta hecha por i, es decir, el nuevo precio del objeto sera, bij∗i
3. Prueba de optimalidad. Verifique si se satisface la condicion de optimalidad
ε < 1Numero de clases
.4 De no ser ası, reduzca el valor de ε y vuelva al paso 2.5
3.3. Implementacion del Algoritmo
La implementacion del algoritmo descrito, que permite resolver el problema basico
de asignacion de estudiantes a los colegios distritales (P1), se desarrollo en el len-
guaje JAVA, en el Anexo A se presentan las clases y el codigo desarrollado para
ello. Haciendo uso de esta implementacion, se pretende evidenciar la incidencia de
los distintos parametros de ejecucion del modelo en la eficiencia de su desempeno;
para ello se empleo el algoritmo para resolver una instancia del problema con 1000
estudiantes y 10 colegios, con beneficios de asignacion generados mediante una dis-
tribucion uniforme entre 0 y 200. Se efectuaron distintas corridas en cada una de
las cuales se utilizaron distintas combinaciones de parametros, particularmente del
valor de epsilon inicial y el factor de reduccion de epsilon para cada iteracion. Los
experimentos generados presentaron las siguientes caracterısticas.
1. Se consideraron tres valores iniciales para epsilon.
i.) El valor de ε inicial en el mismo orden de magnitud del mayor de los
beneficios, es decir 200 en este caso.
ii.) El valor de ε inicial en un orden de magnitud menor que el mayor de los
beneficios, en este caso se empleo ε = 20.
4Para el caso de Objetos similares, esta condicion de optimalidad es equivalente a la expuestapara el algoritmo de subasta para problemas de asignacion.[6]
5Factores de reduccion tıpicos de ε son del orden de 4 a 10. [5]
21
ii.) El valor de ε inicial considerablemente mas grande que el mayor de los
beneficios, en este caso se empleo ε = 500.
2. Se consideraron tres valores para el factor de reduccion de ε. En cada ronda o
subasta, el valor de epsilon se divide por dicho factor. Los valores considerados
fueron 4, 6 y 10
Es importante senalar que la aplicacion de este algoritmo de manera mas precisa
para alguna instancia particular, deberıa estar acompanada de un diseno de experi-
mentos apropiado, que permita determinar de manera mas rigurosa los parametros
que permitirıan mayor eficiencia en la solucion; Los resultados de las distintas corri-
das realizadas, se presentan en la Tabla 3.
epsilon Factor Max. Iterc Prom Iterac Total Iterac.200 4 6.233.227 1.940.713,3 13.584.993
6 9.122.522 2.645.464,5 15.872.78710 10.786.088 3.186.277,2 15.931.386
20 4 10.967.917 3.559.022,7 21.354.1366 12.949.869 4.188.911,0 20.944.555
10 10.781.926 3.878.714,8 15.514.859500 4 8.193.556 2.154.001,8 17.232.014
6 17.056.954 3.868.593,6 27.080.15510 32.011.981,0 6.952.164 41.712.985
Tabla 3: Resultados Corridas Instancia 1000 Estudiantes 10 Colegios
La Tabla 3 presenta el valor de los parametros empleados, el numero maximo de
iteraciones que fue necesario realizar hasta hallar el equilibrio en alguna de las
subastas, el numero promedio de las iteraciones por subasta y el numero total de
iteraciones, suma de las iteraciones de cada una de las subastas, hasta satisfacer la
condicion de optimalidad. Con base en esta informacion puede observarse que:
i.) Para esta instancia particular el algoritmo parece desempenarse mas eficien-
temente cuando el valor inicial de epsilon es del mismo orden de magnitud
que el mayor de los beneficios de asignacion estudiante-colegio considerados,
22
puesto que se requieren un menor numero total de iteraciones hasta encontrar
la solucion optima.
ii.) Al incrementarse el factor de reduccion de epsilon, el numero maximo de ite-
raciones en una ronda tiene a hacerse mayor en la mayorıa de los casos, sin
embargo es importante notar que el el incremento de dicho factor implica un
menor numero de rondas o subastas.
iii.) Iniciar el algoritmo con valores de epsilon considerablemente grandes, aumenta
el rondas o subastas necesarias, aun mas si se considera un factor de reduccion
menor, sin embargo esta combinacion parece generar mejores resultados que
valores de epsilon y factores de reduccion grandes.
Con propositos ilustrativos se empleo el algoritmo para resolver una instancia del
problema de asignacion con 50,000 estudiantes, en 200 colegios, con beneficios de
asignacion de cada estudiante a cada colegio generados como una distribucion uni-
forme entre 0 y 200; para ello se utilizo un valor inicial de epsilon de 200 y un factor
de reduccion de 4. La Figura 5 presenta la forma como decrece el valor de epsilon a
medida que se efectua cada ronda, ası como se incrementa el numero de iteraciones
que es necesario para encontrar el equilibrio en cada una de las rondas (subastas) a
medida que avanza el numero de rondas (decrece el valor de epsilon).
Figura 5: Valor de Epsilon y Numero de Iteraciones por Ronda
La Figura 6 presenta la forma como evoluciona el valor de la funcion objetivo,
beneficio total de la asignacion, a medida que se desarrollan las rondas o subastas.
Puede observarse como para esta instancia particular se obtienen buenas soluciones,
23
proximas al valor optimo, a partir de la 5 ronda; este hecho sugiere que el algoritmo
puede ser utilizado incluso como una heurıstica para generar buenas soluciones,
deteniendo su ejecucion despues de un numero dado de iteraciones o mediante la
comparacion con alguna cota superior de la solucion optima.
Figura 6: Valor de la Funcion Objetivo en cada Ronda (subasta)
24
Capıtulo IV
Estrategia de Solucion: Generacion de Columnas
En este capıtulo se describe una forma alternativa de abordar la solucion del proble-
ma basico de optimizacion inmerso en el proceso de asignacion de cupos escolares
(P1), formulado de manera particular en capıtulos anteriores. La estrategia de solu-
cion que se expone se fundamenta en el principio de descomposicion y en el uso del
esquema de generacion de columnas, ideas que fueron desarrolladas por Dantzing
and Wolfe y Gilmore y Gomory respectivamente. [10], [16]
4.1. Descomposicion de Dantzing-Wolfe
El problema de Asignacion presente en el proceso de asignacion denominado ante-
riormente formulacion estandar P1, puede reformularse de modo que pueda hacerse
uso del esquema de generacion de columnas para su solucion. Para ello y con el fin
de hacer mas comprensible la presentacion, considere nuevamente la formulacion del
problema.
Sea:
I: Conjunto de Estudiantes que deben asignarse. Indexado con i, |I| = n
J : Conjunto de Instituciones. Indexado con j, |J | = m
cij: Beneficio de Asignar el estudiante i a la institucion j
bj: Oferta de cupos (para el grado especıfico) de la institucion j
25
xij =
1, si el estudiante i es asignado a la institucion j
0, de lo contrario
Maximizar∑i∈I
∑j∈J
cijxij∑j∈J
xij = 1 ∀i ∈ I (14)∑i∈I
xij = bj ∀j ∈ J (15)
xij ∈ {0, 1} ∀i ∈ I, ∀j ∈ J (16)
El Problema puede ser entendido como la particion del conjunto de estudiantes en
subconjuntos que pueden ser asignados a cada institucion maximizando en dicha
particion el beneficio de la asignacion.[13] Bajo esta optica el problema puede refor-
mularse de una forma alterna considerando:
i.) Kj = {xj1, x
j2, ..., x
jkj}: Conjunto de las asignaciones factibles para la institucion
j.
ii.) xjk = {xj
1k, xj1k, ..., x
jnk}, corresponde a la k-esima asignacion factible para la
institucion j si:
∑i∈I
xjik = bj xj
ik ∈ {0, 1} (17)
Note que las asignaciones factibles para la institucion j, definidas en (17),
han sido limitadas en este caso solo a aquellas que asignan a la institucion
un numero de estudiantes igual a su capacidad. Dado que se ha ajustado la
capacidad, adicionando una institucion ficticia, haciendola igual a la demanda,
solo este tipo de asignaciones podrıan considerarse en la solucion del problema.
26
iii.) Se define yjk para todo j ∈ J y k ∈ Kj como:
yjk =
1, Si la asignacion factible xjk es seleccionada para la institucion j
0, en caso contrario
Ası el problema se puede formular como:
(P2)
Maximizar∑j∈J
∑k∈Kj
(∑i∈I
cijxjik
)yj
k (18)
∑j∈J
∑k∈Kj
xjiky
jk = 1 ∀i ∈ I (19)
∑k∈Kj
yjk = 1 ∀j ∈ J (20)
yjk ∈ {0, 1} ∀j ∈ J , ∀k ∈ Kj (21)
La formulacion en (P2) se denominara en adelante formulacion desagregada. En
esta formulacion, la restriccion (19) garantiza que cada estudiante es asignado a una
institucion. La restriccion (20) asegura que para cada institucion es seleccionada
una asignacion factible.1 Esta formulacion corresponde a la Descomposicion de
Dantzing-Wolfe para la formulacion estandar (P1), donde las restricciones de capa-
cidad han sido definidas para el subproblema,(Pricing Problem), en el algoritmo de
generacion de columnas. [17]
4.2. Algoritmo de Generacion de Columnas
El algoritmo que se describe brevemente a continuacion permite resolver la relajacion
lineal del problema presentado en la formulacion desagregada(P2) que para efectos
del algoritmo se denomina Problema Maestro Lineal. Es decir permite resolver el
problema resultante de no considerar las restricciones de integralidad para los yjk. Si
bien el interes recae en la solucion del problema entero, posteriormente, al final de
1En este caso particular en el que se ajusta la oferta para ser exactamente igual a la demanda,adicionando un colegio ficticio con capacidad igual al exceso de demanda existente, tiene mayorsentido la restriccion de igualdad.
27
este capıtulo, se evidenciara la utilidad que el algoritmo de solucion de la relajacion
lineal tiene para este fin, ademas de algunas consideraciones respecto a la solucion
de este problema particular a traves de dicho algoritmo.
La idea del algoritmo es resolver el problema lineal por medio de la aplicacion del
Metodo Simplex; sin embargo, dada la enorme cantidad de columnas (asignaciones
factibles) para cada colegio, el paso correspondiente a la determinacion de la colum-
na, variable, que debe adicionarse a la base debe ser modificado. En lugar de evaluar
todas las columnas, una por una respecto a su costo reducido, el problema de en-
contrar la columna con el mayor costo reducido es en si mismo un conjunto de m
problemas de optimizacion. Para ello el procedimiento desarrollado en el algoritmo
puede describirse de la siguiente forma.2
1. Inicializacion. Debe disponerse de un subconjunto de columnas que provean
el Problema Lineal Maestro Restringido (PLMR) para el cual sea posible de-
terminar una solucion basica factible, de modo que cualquier solucion basica
factible del problema restringido lo es tambien para el problema no restringido.
2. Prueba de Optimalidad para el Problema no Restringido. Debe de-
terminarse si la solucion factible encontrada es optima para el problema no
restringido, para ello se determina con base en los precios duales asociados a
la solucion del problema restringido, si es posible hallar una columna con cos-
to reducido positivo para adicionar a la base. De no existir dicha columna la
solucion actual de problema restringido es optima, y tambien lo es para el pro-
blema no restringido. La determinacion de la existencia de dicha columna no
se efectua mediante la evaluacion una por una de todas las posibles columnas
que se encuentran fuera de la base, sino mediante la consideracion implıcita
de todas ellas en la solucion de uno o varios subproblemas de optimizacion.
3. Generacion de una Nueva Columna. En caso de no satisfacerse las con-
diciones de optimalidad, la columna que genera el costo reducido positivo
2Basado en [14]. Una mejor descripcion, con mayor nivel de detalle, del algoritmo de generacionde columnas se presenta en [7]
28
debe ser adicionada al conjunto de columnas actual generandose ası un nuevo
Problema Maestro Restringido, el cual puede ser reoptimizado para volver al
segundo paso del algoritmo.
A continuacion se describen algunos de los elementos mas importantes del algoritmo
de generacion de columnas para la instancia del problema de asignacion que se
pretende abordar.
4.2.1. Definicion del Problema Maestro Restringido Inicial
El algoritmo debe comenzar con un conjunto de columnas que provean una solucion
basica factible para la relajacion lineal problema original, este conjunto de columnas
c0onstituyen el Problema Maestro Restringido Inicial. Un alternativa valida, que de
hecho corresponde a la empleada en la implementacion del algoritmo, consiste en
construir una asignacion factible para cada colegio y adicionar a este conjunto de m
columnas una columna artificial adicional con beneficio de asignacion suficientemente
negativo. La columna para cada institucion podrıa corresponder a la solucion del
problema knapsack asociado, es decir a asignar los bj estudiantes con mayor beneficio
de asignacion a dicho colegio. La columna artificial es de tal forma que sus primeros
n elementos son 1 y los m restantes son 0 de esta forma esta columna junto con
las columnas asociadas a cada colegio permite siempre construir una solucion basica
factible. El beneficio de la columna artificial debera ser−M donde M es una constate
suficientemente grande (por ejemplo, la suma de todos los beneficios)
4.2.2. Definicion del Problema Auxiliar (Pricing Problem)
A partir del Problema Maestro Restringido se generan las columnas que vayan siendo
necesarias hasta resolver optimamente el problema. La generacion de las columnas
se hace por medio de un problema auxiliar denominado Pricing Problem, el cual
pretende determinar, si existe, la o las columnas que deben ser consideradas en la
base para hallar la solucion optima del problema Maestro.
La columna asociada a yjk, es decir
{xj
1k, xj2k, ..., x
jn,k, ej
}que se adiciona a la base
29
debe satisfacer:3
i.) Debe tener costo reducido positivo, es decir cjk > 0
ii.) Debe corresponder a una asignacion factible para alguna institucion, es decir∑i∈I xj
ik = bj
Bajo estas consideraciones la columna que debe adicionarse se determina como,4
maxj∈J
{z(KPj)− νj} (22)
En donde, νj representa el precio dual asociado con la restriccion de convexidad para
la institucion j, restriccion(20), en la solucion optima del Problema Maestro Res-
tringido. Z(KPj) corresponde al valor de la solucion optima del problema Knapsack
asociado a la institucion j, (P3).
(P3)
Maximizar∑i∈I
(cij − µi)xji∑
i∈I
xji = bj
xji ∈ {0, 1} ∀i ∈ I
(23)
En este Problema µi corresponde al valor optimo de la variable dual asociada con la
restriccion de particion para el estudiante i, restriccion (19), en la solucion optima
del Problema Maestro Restringido.
Es necesario observar que la solucion del problema auxiliar que determina la colum-
na a adicionar, Pricing Problem, implica resolver m Problemas Knapsack con un
maximo de n estudiantes cada uno de ellos; bajo esta consideracion parecerıa que la
3Los primeros n elementos de esta columna indican si el estudiante i es o no asignado a laInstitucion j; el vector ej es un vector de ceros con una unica componente igual a uno en la filacorrespondiente a la restriccion de convexidad asociada a la institucion j
4La obtencion de esta expresion se presenta en el Anexo C.1
30
solucion del Problema Maestro a traves del esquema de generacion de columnas re-
sultarıa ineficiente, puesto que ademas deberıa repetirse este procedimiento cuantas
veces fuese necesario para hallar una solucion optima. Sin embargo, es importante
observar que para la estructura particular de esta instancia, la solucion de cada
uno de estos problemas Knapsack tiene una complejidad menor; cada uno de los m
problemas Knapsack se resuelve asignando en orden decreciente respecto al valor
(cij − µi), los estudiantes que son factibles de ser asignados a la institucion, hasta
completar la capacidad de cupos de esta.
Adicionalmente, es importante senalar que no es indispensable que la columna adi-
cionada sea aquella con el mayor costo reducido, bastarıa con identificar una columna
cuyo costo reducido sea positivo. Podrıa tambien modificarse el algoritmo de modo
que puedan adicionarse simultaneamente varias columnas a la base. Estos y otros
aspectos han sido objeto de estudios por distintos autores con el fin de determinar
de que manera inciden en al eficiencia del algoritmo, sin embargo aun no parece
haber un consenso al respecto.
4.3. Consideraciones Respecto a la Implementacion del Al-goritmo
El algoritmo de generacion de columnas fue implementado para dar solucion a instan-
cias del problema objeto de estudio. Su implementacion se desarrollo en Xpress-MP,
el codigo generado puede consultarse en el Anexo B. 5 Algunos aspectos relevantes
abordados durante la implementacion ası como consideraciones y conclusiones obte-
nidas por medio de la ejecucion del modelo, que ameritan ser detallados se presentan
a continuacion.
5Alguna de la documentacion que fue empleada como soporte para dicha implementacion puedeser consultada en [9], [22], [24], [23], [26] y [25]
31
4.3.1. Adicion y Borrado de Columnas
Varias estrategias a seguir en el algoritmo de generacion de columnas pueden ser im-
plementadas, con el fin de determinar la o las columnas para adicionar. Asumiendo
que en cada iteracion una unica columna es adicionada, pueden plantearse al menos
dos estrategias distintas: Adicionar la columna que genere el mayor costo reducido
o adicionar la primera columna con costo reducido positivo encontrada.
La primera estrategia requiere resolver m = |J | problemas Knapsack en cada itera-
cion, lo cual puede hacer que el tiempo para realizar cada una de estas se incremente,
sin embargo, esta estrategia genera la disminucion mas grande posible en el valor
de la funcion objetivo, para cada iteracion. La segunda estrategia resuelve cuando
mas m = |J | problemas Knapsack por iteracion, en la practica el numero de pro-
blemas resueltos en cada iteracion es considerablemente menor que m, este hecho
puede contribuir a reducir el tiempo de solucion, aunque posiblemente el numero
de iteraciones requeridas sea mayor. El algoritmo implementado para este problema
particular, hace uso de la primera estrategia, esto debido principalmente a que como
se menciono anteriormente la solucion de cada uno de los problemas Knapsack es
de menor complejidad, puesto que para resolverlos deben seleccionarse, en orden
decreciente respecto al beneficio generado, los estudiantes que son asignados a un
colegio determinado.
Otro aspecto importante considerado en la implementacion del algoritmo es el gran
numero de columnas que posiblemente deben adicionarse hasta encontrar la solu-
cion optima de la relajacion lineal del problema en (P2), pues esto puede afectar la
eficiencia del algoritmo e incluso aumentar los requerimientos computacionales para
su solucion. Con el fin de atenuar el efecto de este aspecto, se implemento un pro-
cedimiento para eliminar, cada cierto numero de iteraciones, aquellas columnas con
costo reducido negativo, lo cual puede implicar que en algunos casos que columnas
que ya habıan sido generadas vuelvan a ser consideradas en iteraciones posteriores,
pero alivia en parte el rapido incremento del numero de columnas consideradas y
32
por ende del tiempo de solucion de cada iteracion.
4.3.2. Convergencia del Algoritmo
Para el algoritmo de generacion de columnas en programacion Lineal es reconoci-
do el problema de su convergencia lenta. Generalmente, pueden hallarse soluciones
cercanas a la solucion optima rapidamente, sin embargo el progreso obtenido en la
funcion objetivo cuando se esta cerca del valor optimo no es significativo [8]; este
hecho puede generar que el algoritmo requiera de un tiempo considerable hasta ob-
tener la optimalidad de la solucion e incluso tarde en decretar la optimalidad de
soluciones optimas degeneradas. Este hecho se conoce como el efecto Tailing-off, de-
nominado ası desde el trabajo realizado por Gilmore y Gomory (1963), en alusion a
que el proceso de solucion presenta una cola respecto al tiempo.[16]
Dos aspectos se destacan en la literatura respecto a el problema de convergencia
del algoritmo de generacion de columnas y su aplicacion particular al problema de
asignacion o transporte. En primer lugar el problema presenta una notoria degene-
racion, lo cual puede afectar la eficiencia del algoritmo, dado que un gran numero
de los pivotes realizados dan como resultado la adicion de columnas con costo redu-
cido positivo, pero que no mejoran el valor de la funcion objetivo, es decir pivotes
degenerados [3]. El segundo aspecto que reviste gran importancia en la literatura
relacionada es el comportamiento del valor de las variables duales durante el proce-
so de solucion; estas variables presentan grandes oscilaciones durante el proceso y
su convergencia no es suave, este comportamiento es considerado como uno de los
aspectos principales en relacion con la convergencia y la ausencia de dicho compor-
tamiento es vista como una propiedad deseable [16].
La Figura 7, presenta la forma como evoluciona la solucion primal y la solucion
dual6 para una instancia de prueba pequena del problema.
Es importante resaltar algunos aspectos que pueden observarse en esta figura.
6En realidad el valor presentado constituye a la cota de la relajacion lagrangiana que hace usode los valores duales y la cual sera discutida posteriormente en este capıtulo
33
Figura 7: Generacion de Columnas. Resultados de ejecucion
La solucion primal del problema se aproxima rapidamente al valor optimo,
sin embargo es necesario un numero considerablemente grande de iteraciones
hasta lograr la optimalidad de dicha solucion.
Puede observarse como existe una gran variabilidad en el valor de la solucion
dual, esta variacion se hace particularmente notoria en las primeras iteraciones
del algoritmo.
Puede observarse como se genera un salto notorio en el valor de la solucion dual
cada cierto numero de iteraciones (200 en este caso). Este salto se presenta
cada vez que el algoritmo aplica el procedimiento para eliminar columnas (para
el ejemplo particular que se corrio, este procedimiento se ejecuta cada 200
iteraciones)
4.3.3. Estrategias de Estabilizacion
Con el fin de atenuar el problema de convergencia lenta y degeneracion en la apli-
cacion del algoritmo de generacion de columnas, distintos autores han propuesto
diferentes procedimientos, principalmente enfocados a la estabilizacion de los va-
lores duales, los cuales podrıan clasificarse en cuatro grandes grupos respecto al
mecanismo que ellos usan.7
7El lector interesado en profundizar en estos procedimientos puede consultar en [11] y las refe-rencias que al respecto allı se citan.
34
i.) Definir limites para los precios duales
ii.) Suavizar los valores duales que retorna el subproblema (pricing problem), ge-
neralmente mediante combinaciones lineales de los valores retornados y algun
otro valor definido.
ii.) Penalizar la desviacion de las variables duales respecto a un centro de estabi-
lizacion, el cual generalmente corresponde al conjunto de precios duales que
genera la mejor cota lagrangiana.
iv.) Trabajar con soluciones duales interiores en lugar de soluciones duales extre-
mas.
Una estrategia de simple aplicacion, que podrıa clasificarse dentro del primer grupo,
sugiere formular el problema de modo que contribuya a una mejor convergencia. De
manera particular una formulacion en la cual las restricciones de igualdad puedan
ser sustituidas por desigualdades, sin alterar el valor de la solucion optima, puede
contribuir con este fin. El hecho de sustituir las restricciones de igualdad por des-
igualdades restringe el valor de las variables duales a ser bien sea no negativas o no
positivas en lugar de ser variables libres en signo, este hecho reduce la oscilacion de
dichas variables. En el problema particular la formulacion desagregada (P2) puede
modificarse sin alterar el valor de la solucion optima, cambiando para ello el conjun-
to de restricciones de asignacion de los estudiantes, (19), empleando desigualdades
en lugar de igualdades, de la siguiente forma:
∑j∈J
xij ≤ 1 ∀i ∈ I (24)
Observe como por tratarse de un problema balanceado, en el cual la oferta de cupos
es igual a la demanda de los mismos, los cambios sugeridos en las restricciones no al-
teran el valor de la solucion optima. En la solucion optima cada estudiante podra ser
asignado cuando mas a un colegio, pues de lo contrario se violarıa la restriccion de
capacidad, mientras que para cada colegio debera ser seleccionada exactamente una
asignacion de estudiantes pues de lo contrario los cupos faltantes de los colegios para
35
los que no se selecciono ninguna asignacion no permitirıan que cada estudiante haya
sido asignado a un colegio. La Figura 8 presenta el resultado de correr con cada
una de las dos formulaciones, con restricciones de igualdad y con restricciones de
desigualdad, la misma instancia de prueba empleada anteriormente, la parte derecha
de la figura corresponde a una vista en detalle de las primeras 400 iteraciones.
Figura 8: Generacion de Columnas. Comparacion de Formulaciones
De esta figura puede observarse como el cambio en las restricciones de asignacion de
los estudiantes, contribuye a disminuir ostensiblemente la variabilidad de los valores
duales, principalmente en las primeras iteraciones; la lınea naranja corresponde a
la solucion dual en el problema con restricciones de igualdad, mientras que la lınea
verde corresponde a esta misma solucion en el problema con restricciones de des-
igualdad. Sin embargo, la solucion de ambas formulaciones aun presenta una fuerte
evidencia del efecto de ”tailing-off ”, el cual ocasiona un gran numero de iteraciones
hasta alcanzar la solucion optima, lo cual sugiere la necesidad del uso de otras es-
trategias de estabilizacion para mejorara la convergencia del algoritmo.
Para este problema en particular se decidio hacer uso de un metodo de estabilizacion
y aceleracion del algoritmo de generacion de columnas cuya principal caracterıstica
es permitir su implementacion en el marco de la programacion lineal, es decir permi-
te hacer uso del algoritmo de generacion de columnas implementado anteriormente.
36
La estrategia empleada se describe detalladamente en [20].8 De manera general
este procedimiento pretende atenuar la degeneracion mediante la perturbacion del
poliedro, al mismo tiempo que intenta reducir la variabilidad de las variables duales
mediante el uso de penalizaciones cuando estas se alejan de cierto valor determinado,
el cual se actualiza en el desarrollo del algoritmo. A continuacion se presentan los
aspectos mas relevantes del procedimiento implementado:
Considere el siguiente programa lineal (P), factible y acotado, y su correspondiente
dual (D), en donde (P) tiene un numero considerable de variables y se hace uso del
algoritmo de generacion de columnas para su solucion.
Problema Primal
(P)
Maximizar cTx
Ax = b
x ≥ 0
Problema Dual
(D)
Minimizar bT π
AT π ≥ c
Una forma de atenuar la degeneracion en la solucion es mediante la perturbacion de
(P), adicionando variables de holgura y de exceso acotadas, originando el siguiente
problema:
(Pε) : max(x,y−,y+)>0
{cTx : Ax− y− + y+ = b,y− ≤ ε,y+ ≤ ε
}(25)
Alternativamente, podrıa usarse penalizaciones explıcitas para las variables duales;
ası resolver (P) es equivalente a resolver el siguiente problema, con un valor de δ ≥ 0
determinado.
(Pδ) : max(x,y−,y+)>0
{cTx + δy− + δy+ : Ax− y− + y+ = b
}(26)
8Una implementacion particular de esta estrategia para la solucion del problema GAP puedeconsultarse en [27]
37
La estrategia propuesta en [20] combina el metodo de perturbacion y de penaliza-
ciones explıcitas, de la siguiente forma:
Se define el programa lineal (P) y su correspondiente dual (D)
Problema Primal
(P )
Max cT x− δTy− + δTy+
Ax− y− + y+ = b
y− ≤ ε−
y+ ≤ ε+
x,y−,y+ ≥ 0
Problema Dual
(D)
Min bT π + ε−v + ε+w
AT π ≥ c
−π + v ≥ −δ
π + w ≥ δ
En el problema primal (P), y− y y+ son vectores de variables de exceso y holgura,
con cotas superiores ε− y ε+, respectivamente. En el problema Dual (D), las dos
ultimas restricciones pueden reescribirse como δ−w ≤ π ≤ δ +v, la cual cuantifica
la penalizacion de las variables duales π.[20]. Observe que la solucion de los dos
problemas,P y P, son iguales cuando se satisface que ε− = ε+ = 0, lo cual motiva
el algoritmo de solucion.
El algoritmo empleado es esencialmente el mismo planteado anteriormente en este
capıtulo, el cual se usa para dar solucion al problema en (P), sin embargo es ne-
cesario adicionar a dicho algoritmo dos aspectos diferenciadores relacionados con la
actualizacion de los nuevos parametros considerados (δ, ε− y ε+).
i.) Actualizacion de δ. El valor de δ se ajusta a lo largo del algoritmo haciendose
igual al vector de valores duales π que genere la mejor cota dual haste ese
momento encontrada.
ii.) Actualizacion de ε− y ε+. Cada cierto numero de iteraciones el valor de
ε− y ε+ debe disminuirse de modo que llegue a cero en un numero finito de
38
iteraciones, lo cual situarıa el problema en su equivalente P, garantizando que
el algoritmo tiene terminacion en un numero finito de iteraciones.
En la segunda parte del Anexo B se presenta el codigo en Mosel que implementa esta
estrategia de estabilizacion para el algoritmo de generacion de columnas. Haciendo
uso de dicha implementacion se corrio la misma instancia de prueba solucionada
anteriormente, los resultados se presentan en las Figuras 9 y 10
Figura 9: Generacion de Columnas. Estabilizacion del algoritmo
Figura 10: Generacion de Columnas. Estabilizacion del algoritmo y restricciones dedesigualdad
La Figura 9 presenta el resultado de aplicar la estrategia de estabilizacion en la for-
mulacion en la cual la restriccion de asignacion de cada estudiante es de igualdad,
mientras que la Figura 10 presenta este mismo resultado para la formulacion en la
cual dicha restriccion se cambio por desigualdad. En ambas figuras, la imagen de la
39
derecha representa un detalle de las primeras iteraciones, hasta alcanzar optimalidad
en el algoritmo estabilizado.
Es posible observar como el numero de iteraciones requerido hasta encontrar la so-
lucion optima se reduce considerablemente, pasando en este caso de mas de 1200
iteraciones a cerca de 250 iteraciones. Adicionalmente, puede verse como la variabi-
lidad de la solucion dual se reduce ostensiblemente, de manera particular a partir de
cierto numero de iteraciones iniciales. La generacion de columnas irrelevantes, que
aportan poca informacion para ajustar los valores duales, en las primeras iteraciones
del algoritmo es conocida como el efecto “heading-in”[11]; si bien el algoritmo puede
iniciarse con valores arbitrarios para δ, como de hecho se efectuo en la implementa-
cion presentada, deberıan preferirse “buenas”estimaciones de los valores optimos de
las variables duales, los cuales podrıan provenir de la aplicacion de heurısticas.
4.3.4. Uso de Cotas para la Terminacion Anticipada del Algoritmo
Ante los problemas de convergencia senalados para el algoritmo de generacion de
columnas, parcialmente atenuados con las estrategias presentadas en el apartado
anterior, una alternativa existente es terminar anticipadamente la ejecucion del al-
goritmo, particularmente al haber alcanzado cierto nivel de proximidad a la solucion
optima. Para ello en lugar de resolver el programa lineal hasta optimalidad, es decir
generar columnas hasta cuando sea posible encontrar una columna promisoria para
entrar a la base, es posible terminar anticipadamente el proceso de generacion de
columnas cuando el Gap existente entre la cota inferior, dada por la solucion actual
del problema maestro, y la cota superior, construida por ejemplo, por relajacion
lagrangiana, alcanza un nivel determinado.[2]
Detener anticipadamente el algoritmo de generacion de columnas, haciendo uso de
cotas respecto al valor de la solucion optima, puede ser de gran utilidad para dos
estrategias de solucion diferentes. En primer lugar, detener el algoritmo de genera-
cion de columnas y obtener los valores duales, puede permitir construir soluciones a
40
partir de los resultados hasta allı obtenidos. si bien no existe un criterio claro res-
pecto a como construir buenas soluciones enteras a partir de una solucion no entera,
pueden generarse heurısticas que construyan soluciones al problema a partir de los
valores duales observados al momento de detener el algoritmo. Para esta instancia
particular dichas heurısticas pueden basarse en algunos de los aspectos resaltados
por el algoritmo de subastas que se presento en el capıtulo 3. En dicha descripcion
se evidencio el hecho de que la solucion optima de la instancia basica del problema
(P1)debe satisfacer que: Una asignacion factible S y un vector de precios pj son
primal y dual optimos simultaneamente si y solo si cada persona logra su maximo
beneficio (utilidad) siendo asignada al objeto que le ofrece mayor valor. Este hecho
puede ser empleado para construir soluciones aproximadas.
La segunda estrategia de solucion para la cual es relevante usar cotas para detener
anticipadamente el algoritmo de generacion de columnas, es el caso en el cual se
hace uso del algoritmo de Branch and Price para la solucion del problema. Este
algoritmo sera presentado posteriormente, sin embargo es importante senalar que
el uso de dichas cotas, puede contribuir a explorar de manera eficiente el arbol de
busqueda que esta tras el algoritmo Branch-and-Price.
Una cota superior para el valor optimo de la funcion objetivo del problema en (P2),
puede construirse resolviendo la Relajacion Lagrangiana resultante de dualizar las
restricciones de asignacion, la cual esta dada por:[19]
Maximizar∑j∈J
∑k∈Kj
(∑i∈I
cijxjik
)yj
k +∑i∈I
µi
1−∑j∈J
∑k∈Kj
xjiky
jk
∑k∈Kj
yjk = 1 ∀j ∈ J (27)
Mediante operaciones matematicas simples, puede mostrarse que el problema en
41
(27) es equivalente a:9 ∑j∈J
(Z(KPj)) +∑i∈I
µi (28)
Puede notarse como una vez solucionados el problema auxiliar, Pricing Problem, en
una iteracion tıpica del algoritmo de generacion de columnas, se dispone de toda
la informacion necesaria para construir una cota superior respecto al valor de la
solucion optima
4.4. Solucion del Problema Entero (no relajado) P2.
Al comienzo de este capıtulo se senalo que el algoritmo de generacion de columnas
permitirıa solucionar la relajacion lineal del problema en la formulacion desagregada
(P2), sin embargo un aspecto de importancia respecto a la solucion del problema
entero, es decir el problema no relajado, esta relacionado con el hecho de que la
solucion de ambos problemas, la relajacion lineal y el problema entero, coinciden.
En el Anexo C.3 se demuestra esta afirmacion.
Dada esta consideracion, el algoritmo de generacion de columnas puede usarse para
determinar la solucion del problema basico de optimizacion inmerso en el proceso de
asignacion de cupos escolares, sin hacerse necesario la consideracion del algoritmo
Branch-and-Bound; es decir, que la solucion del problema corresponde a explorar
solamente el primer nodo del arbol de busqueda en un algoritmo Branch-and-Price.
Sin embargo, es importante senalar, que la solucion de instancias con restricciones
adicionales, es decir que no correspondan a la forma basica del problema presentado,
no necesariamente satisfacen que la solucion del problema relajado sea entera, en
cuyos casos sera necesario recurrir a algoritmos como el de Branch-and-Price, el cual
se describe posteriormente.
9En el Anexo C.2 se presenta la forma como se obtiene esta ecuacion
42
Capıtulo V
Consideracion de extra restricciones
En los capıtulos anteriores se ha planteado la forma de abordar el problema basico
de asignacion, (P1), que se presenta en el proceso de asignacion de cupos escola-
res. De modo general, dicho problema corresponde a las asignacion de un conjunto
de estudiantes, de modo que se maximice el beneficio de dicha asignacion mientras
se cumplen restricciones respecto a la asignacion de cada estudiante a un colegio
y la capacidad de los mismos. Sin embargo, como se senalo anteriormente, el pro-
blema real podrıa considerar algunas otras restricciones para la asignacion, estas
restricciones podrıan clasificarse en dos grupos:
i.) Restricciones propias de los estudiantes, en particular respecto a los colegios
a los cuales puede ser asignado un estudiante particular
ii.) Restricciones propias de los colegios, en relacion con condiciones particulares
respecto a los estudiantes que pueden serle asignados o la seleccion de las
asignaciones factibles a dichos colegios.
Este capıtulo presenta propuestas respecto a la forma de abordar este nuevo proble-
ma, incluyendo algunas restricciones adicionales, haciendo uso de las estrategias de
solucion presentadas en capıtulos anteriores.
5.1. Extra-Restricciones en el Algoritmo de Subasta
El Algoritmo de Subastas descrito en el Capıtulo 3, particularmente la aplicacion
al caso de estudio (Algoritmo de subastas con objetos similares), pretende dar solu-
cion a la version densa del problema, es decir a aquella en la cual se asume que cada
43
estudiante puede ser asignado a cualquiera de los colegios disponibles. La implemen-
tacion de la version densa del algoritmo implica la consideracion de un arreglo de
n×m donde se almacenan los beneficios de la asignacion de cada estudiante a cada
colegio. Sin embargo, el algoritmo puede modificarse facilmente para dar solucion a
la version dispersa del problema;1 para ello considere:
A(i) = {j ∈ J |∃(i, j)}, es decir el conjunto de Asignaciones posibles, o colegios
a los cuales puede ser asignado, el estudiante i
Dada esta consideracion el algoritmo descrito en el capıtulo 3, puede ser modificado
en la Fase de Oferta para que cada estudiante ofrezca solo por aquellos colegios en
los cuales puede ser asignado. Esta modificacion del algoritmo permitirıa considerar,
entre otras, las siguientes restricciones adicionales:
Restringir la asignacion de cada estudiante a colegios que esten en su localidad
o a cierta distancia maxima de su residencia.
Permitir la asignacion de estudiantes que ingresan al sistema y que tienen her-
manos dentro del mismo, a los colegios en los cuales actualmente se encuentra
asignado el hermano.
Permitir la asignacion de los estudiantes considerando su genero y limitaciones
ası como la clasificacion de las instituciones en femeninas, masculinas, mixtas
o de educacion especial
Observe que la consideracion de cualquiera de estas extra restricciones involucra un
preprocesamiento de la informacion, este preprocesamiento debe permitir identifi-
car los colegios a los cuales puede ser asignado cada estudiante ası como el valor
de la funcion de beneficio de la asignacion, considerando para ello los parametros
determinados por la Secretaria de Educacion Distrital.
1Observe que la implementacion de la version densa del problema puede usarse directamentepara dar solucion a la version dispersa, considerando para ello los beneficios de las asignaciones noposibles para un estudiante dado como un valor suficientemente pequeno; sin embargo, desde elpunto de vista de eficiencia resulta mas apropiado considerar la estructura particular de la versiondispersa al momento de almacenar la informacion y de ejecutar el algoritmo
44
5.2. Extra-Restricciones en el Algoritmo de Generacion deColumnas
En el Capıtulo 4 se presento el algoritmo de Generacion de Columnas como estrategia
de solucion al problema basico (P1), sin embargo como allı mismo se senalo, este
algoritmo por si solo no basta para la obtencion de soluciones enteras en casos mas
generales en los que la relajacion lineal de la formulacion desagregada no corresponda
a la solucion entera. Se presenta entonces en este apartado el Algoritmo de Branch-
and-Price, el cual hace uso del algoritmo de generacion de columnas y del algoritmo
de Branch-and-Bound para programacion entera, indicando ademas la forma como
podrıa abordarse la existencia de restricciones adicionales.
5.2.1. Algoritmo de Branch-and-Price
Branch-and-Price (B-P) corresponde a una extension del algoritmo de Branch and
Bound, la idea fundamental es la integracion de este algoritmo con el algoritmo de
generacion de columnas.
Debido a que la formulacion desagregada, (P2), tiene un gran numero de colum-
nas y para la mayorıa de estas la variable asociada en la solucion optima toma el
valor de cero, el algoritmo B-P considera una relajacion del problema con solo un
subconjunto de estas. Mediante la implementacion de el problema auxiliar (Pricing
Problem) se generan las columnas que deben adicionarse a la base hasta dar solucion
a la relajacion del problema. La ramificacion (Branching) ocurre cuando no pueden
hallarse columnas para adicionar a la base y la solucion del problema relajado no
satisface las condiciones de integralidad.
5.2.1.1. Descripcion del Algoritmo
El algoritmo inicia considerando la relajacion lineal del problema planteado en la
formulacion desagregada (P2), esta relajacion se denomina Problema Maestro. Sin
embargo, dada la gran cantidad de variables que involucra esta formulacion, (lo
que implica un gran numero de columnas en la matriz A), se considera solo un
45
subconjunto de estas, definiendose ası el Problema Maestro Restringido Inicial. Es-
te problema considera un conjunto de columnas iniciales que conforman una base
factible para la relajacion lineal de la formulacion desagregada, es decir una S.B.F
para el Problema Maestro. El Problema Maestro se resuelve mediante el esquema de
generacion de columnas, haciendo uso del problema auxiliar (Pricing Problem) para
generar dichas columnas.
En el caso en el cual la solucion optima del Problema Maestro Inicial es entera,
esta corresponde tambien a la solucion optima del problema no relajado, es decir
para el problema de la formulacion desagregada. Esta solucion tambien correspon-
de a la solucion optima de la formulacion estandar (P1) del problema de asignacion.
En el caso en el cual la solucion de la relajacion del Problema Maestro Inicial no
satisface las restricciones de integralidad, el problema debe ramificarse en dos o mas
subproblemas (de acuerdo con algun esquema de ramificacion especıfico), que entran
a formar parte del conjunto de subproblemas activos, los cuales deben evaluarse con
el objeto de construir cotas para el valor de la funcion objetivo del problema no
relajado que puede obtenerse a partir del subproblema explorado.
El algoritmo avanza iterativamente seleccionando, con algun criterio definido, al-
guno de los subproblemas del conjunto de subproblemas activos, ramificando este
subproblema y hallando el valor optimo de la relajacion lineal de los problemas
obtenidos al ramificar (o una cota de estos). Para la evaluacion de los distintos sub-
problemas se hace uso del esquema de generacion de columnas. Es necesario definir
en cada nodo (subproblema) explorado el Problema Maestro Restringido (PMRt)
con el cual comienza el algoritmo de generacion de columnas ademas del problema
auxiliar (Pricing Problem) que permitira generar las columnas necesarias para en-
contrar la solucion al Problema Maestro en ese nodo particular.
Cada vez que se explora un nodo del arbol de busqueda, (raimificar y evaluar) alguno
de los subproblemas activos, es posible encontrarse en uno de dos casos.
46
i.) Se encuentra una solucion entera, lo cual implica que en adelante este nodo no
debe considerarse. En caso de que la solucion encontrada sea mejor que la me-
jor solucion disponible hasta ese momento (incumbente), se actualiza el valor
de mejor solucion conocida y se depura el conjunto de subproblemas activos
eliminando aquellos que tienen peores cotas con respecto al incumbente.
ii.) No se encuentra una solucion entera. En este caso los subproblemas generados
se adicionan al conjunto de subproblemas activos si las cotas para la funcion
objetivo encontradas no son peores que la mejor solucion conocida. En caso
contrario el subproblema seria descartado, podando ası el arbol de busqueda.
La Figura 11 presenta de modo esquematico la forma como se desarrolla el algoritmo
de Branch-and-Price. 2
5.2.1.2. Estrategias de Ramificacion y Acotamiento
Aun cuando la solucion del Problema Maestro Restringido sea tal que todas las yik
sean enteras, esto no garantiza que corresponda a la solucion optima del Problema
Original (P1), el nodo correspondiente a dicha solucion estara resuelto y solo se
podra verificar su optimalidad una vez se haya explorado y acotado apropiadamen-
te el arbol de busqueda. Esto hace necesario ramificar el problema y explorar los
distintos subproblemas activos, empleando para ello el esquema de generacion de
columnas, con el fin de acotar la solucion del Problema Entero original.
Debe seleccionarse una regla de ramificacion que sea compatible con el Problema que
debe resolverse para la generacion de columnas, es decir una regla de ramificacion
que permita modificar el Pricing Problem de modo que las columnas que no son
factibles debido a las restricciones impuestas por las distintas ramificaciones no sean
generadas y que la solucion de dicho problema siga siendo eficiente.
2Esta figura es basada en la presentada en [12]
47
Figura 11: Algoritmo Branch and Price
48
La idea basica es desarrollar la ramificacion usando la formulacion estandar (P1)
mientras se procede en la solucion del problema con la formulacion desagregada(P2).
Deben resaltarse dos aspectos importantes para el desarrollo de esta idea.[18]
i.) Es posible mostrar que cualquier solucion factible para la formulacion desagre-
gada (P2) corresponde a una solucion factible para la formulacion estandar
(P1). Adicionalmente si la solucion para la formulacion desagregada es fraccio-
nal, entonces la correspondiente solucion para la formulacion estandar tambien
es fraccional.
ii.) Las estrategias de ramificacion en programas lıneales binarios se basa en fijar
el valor de una o varias variables. Fijar una o varias variables en la formulacion
estandar (P1) tiene un equivalente en la formulacion desagregada (P2) y el
esquema de ramificacion resultante es compatible con el problema auxiliar
(Pricing Problem).
En la formulacion estandar fijar la variable xij en cero (xij = 0) impide que el
estudiante i sea asignado a la institucion j, mientras que fijar la variable xij en
uno (xij = 1) implica que el estudiante i sea asignado a la institucion j. En la
formulacion desagregada (P2) esto puede ser implementado de la siguiente forma:
Para impedir la asignacion del estudiante i a la institucion j, todas las varia-
bles yjk asociadas a columnas, asignaciones factibles, para la institucion j que
contengan un uno en la fila correspondiente al estudiante i son fijadas en cero.
Es decir, si xjik = 1 entonces yj
k = 0 para todo k ∈ Kj
Asignar el estudiante i a la institucion j, correponde a hacer todas las variables
yjk asociadas a columnas , soluciones factibles, para la institucion j que no
contengan un uno en la posicion correspondiente al estudiante i iguales a cero
y todas las columnas que no esten asociadas con la institucion j que contengan
un uno en la posicion i son fijadas en cero. Es decir, si xjik = 0 entonces yj
k = 0
para todo k ∈ Kj y si xjik = 1 entonces yj
k = 0 para l ∈ I, l 6= j y k ∈ Kj
49
El esquema de ramificacion tambien es compatible con el problema auxiliar (Pricing
Problem), este involucra la solucion de un Problema Knapsack para cada institucion.
Para impedir la asignacion del estudiante i a la institucion j el estudiante i no es
considerado en el Knapsack para dicha institucion. Para Asignar el estudiante i a la
institucion j, el estudiante i no es considerado en el Knapsack para ninguna de las
instituciones y se reduce la capacidad la institucion j en un cupo.
5.2.1.3. Estrategia de Exploracion
La estrategia de exploracion se refiere a la forma como se determina cual de los
subproblemas, en el conjunto de subproblemas activos, se selecciona para ser explo-
rado. Dos de las estrategias de exploracion frecuentemente usadas en el algoritmo
de Branch and Bound son la estrategia de busqueda profunda y la estrategia de me-
jor cota, las cuales tambien son implementables en el algoritmo de Branch and Price.
La estrategia de busqueda profunda selecciona para explorar el subproblema mas
recientemente creado, en caso de empates generalmente se considera la cota respec-
to al valor de la funcion objetivo para decidirlo. Esta estrategia esperarıa encontrar
buenas soluciones rapidamente, asumiendo que es mas probable encontrar buenas
soluciones en lo profundo del arbol que en los nodos proximos a la raız. Disponer de
buenas soluciones permitirıa podar eficientemente el arbol y ası hacer mas eficiente
la solucion del problema.
La estrategia de mejor cota, selecciona para ser explorado aquel subproblema que
posee una mejor cota respecto al valor de la funcion objetivo. Esta estrategia esta
motivada por el hecho de que el subproblema que provee la mejor cota deberıa ser
considerado para probar la optimalidad, por lo tanto deberıa ser explorado primero.
5.2.1.4. Consideraciones Respecto a la Implementacion del Algoritmo B-P
Los aspectos senalados anteriormente, en relacion con la convergencia del algoritmo
de generacion de columnas, cobran importancia en la implementacion del algoritmo
50
de Branch-and-Price, puesto que este requiere de la solucion de multiples problemas
lineales por medio de generacion de columnas. Es asi como las estrategias descritas
para mejorar la convergencia del algoritmo y el uso de cotas para su terminacion
anticipada, deben ser tenidas en consideracion.
5.2.2. Consideracion de Extra Restricciones
Una de las caracterısticas mas importantes de la formulacion desagregada, (P2),
es que en el problema auxiliar se incorporan las restricciones relacionadas con las
asignaciones factibles de cada colegio; por este motivo, las restricciones adicionales,
que afectan directamente el conjunto de posibles asignaciones de cada institucion,
solo afectan el problema auxiliar por lo que pueden ser mas facilmente incorporadas
que en la formulacion estandar del problema.[13] De esta forma, pueden considerarse
para la solucion del problema mediante el algoritmo de Branch-and-Price, entre
otros, los siguientes tipos de restricciones.
Considerar restricciones de equilibrio de genero, de estrato socioeconomico, o
de otros factores, en la asignacion de estudiantes para cada institucion.
Considerar restricciones que determinen las asignaciones factibles para distin-
tos conjuntos de colegios, es decir, definir las asignaciones factibles de formas
diferentes para distintos grupos de colegios segun sea necesario.
Adicionalmente, es importante notar que tambien es posible considerar restricciones
adicionales respecto a las instituciones a las cuales puede ser asignado cada estudian-
te; para ello, debe determinarse una definicion apropiada de la funcion de beneficio
de la asignacion de cada estudiante a cada colegio, que recoja las particularidades
de la instancia que desea resolverse.
El algoritmo de Branch-and-Price puede ser implementado en alguno de los paquetes
existentes para la solucion de programas mixtos y enteros. Uno de estos programas,
usualmente referido en la literatura es MINTO (Mixed INTeger Optimizer), el cual
es un software para la solucion de programas mixtos y enteros por medio de el
algoritmo de Branch-and-Bound con relajacion lineal; este software tambien provee
51
herramientas para la clasificacion automatica de restricciones, preprocesamiento y
heurısticas primales entre otras.[18], [21]
52
Capıtulo VI
Consideraciones para la Aplicacion de las
Estrategias de Solucion al Problema de
Asignacion de Estudiantes.
Han sido descritas en el desarrollo de este documento, las estrategias para abordar
el problema de asignacion presente en el proceso que para este fin desarrolla la Se-
cretaria de Educacion del Distrito, ası mismo se han senalado formas de considerar
restricciones adicionales al modelo de modo que pueda ajustarse mas a la situacion
real. Por ultimo, en este capıtulo se analiza la definicion de la funcion de beneficios,
la cual define los beneficios de asignacion de cada estudiante a cada colegio y que
se considero dada para el estudio de las distintas estrategias de solucion. Adicional-
mente se plantea como las estrategia de solucion descritas en los capıtulos anteriores
podrıan ser usadas dentro del proceso definido por el distrito.
6.1. Definicion de la Funcion de Beneficios
La forma como se calculan los beneficios de la asignacion de cada estudiante a cada
colegio, toma importancia en la aplicacion de las dos estrategias de solucion presen-
tadas a lo largo de este documento. La funcion definida para calcular estos beneficios
puede variar dependiendo de las condiciones particulares y los interes del decisor en
la instancia a solucionar, sin embargo, se pretende definir una funcion que este acor-
de con las especificaciones del problema descrito en el Capıtulo 2 y satisfaga las
condiciones del proceso de asignacion allı planteado.
53
La funcion de beneficio para el problema que se pretende solucionar debera satisfacer
por lo menos las siguientes condiciones.
i.) El proceso de asignacion debera favorecer a aquellos estudiantes con mayor
prioridad,1 intentando que para ellos se logre la asignacion en alguno de los
colegios presentados como opciones o lo mas cerca posible de su residencia. De
esta forma, la funcion debe considerar el ındice de prioridad asignado a cada
estudiante.
ii.) En la definicion de los beneficios deben considerarse las opciones de colegios
presentadas por cada padre para la asignacion de sus hijos, de modo que para
estas instituciones el hecho de ser de predileccion de los padres se vea reflejado
en el beneficio.
iii.) La definicion de beneficios debera considerar la posible existencia de un colegio
o nodo ficticio, de modo que el beneficio de la asignacion de cada estudiante a
este tipo de institucion se vea desfavorecido.
Dadas estas consideraciones, la funcion de beneficio que se propone para esta ins-
tancia particular, se define mediante el siguiente procedimiento.
1. Se calcula la distancia de cada estudiante a cada colegio
i.) La distancia de asignacion de los estudiantes a los colegios seleccionados
por los padres como opciones se realiza de la siguiente forma:
• Sera 0 si el estudiante presenta maxima prioridad (prioridad 1)
• Sera igual a la menor distancia del estudiante a cualquiera de los
colegios si la prioridad del estudiante no es la maxima. Ası, si el
padre selecciono una institucion ubicada a 2 km de su casa, pero la
institucion mas cercana esta a un kilometro, entonces la distancia a
los colegios seleccionados como opcion sera 1 km
1El ındice de prioridad se encuentra ordenado de menor a mayor en donde 1 corresponde a losestudiantes con mayor prioridad en la asignacion.
54
ii.) La distancia de un estudiante a cualquier colegio que no corresponda a
los colegios seleccionados, sera igual a la distancia real medida en las
unidades que se considere convenientes (Km o Mts)
Por ejemplo, la Tabla 2 presenta las distancias calculadas para una instancia
con n estudiantes y seis colegios. Observe que para el segundo estudiante, el
cual tiene prioridad cero, las distancias a los colegios seleccionados (colegios 1
y 6) como opciones son cero. Para el primer estudiante, cuya prioridad es 2,
la distancia a los colegios seleccionados como opciones (colegios 2 y 3) es igual
a la menor distancia del estudiante a cualquier colegio; en este caso la menor
distancia corresponde a la distancia hasta el colegio 6 la cual es de 2 unidades,
por este motivo la distancia a los colegios 2 y 3 tambien es 2 unidades.
Estudiante 1 2 3 · · · nPrioridad 2 1 1 3Opcion 1 2 1 1 2Opcion 2 3 6 4 3
Colegio DISTANCIAS1 4 0 0 22 1 1 4 23 1 3 2 24 10 5 0 45 5 5 1 66 1 0 1 1
Tabla 4: Ejemplo del calculo de las distancias
2. La distancia calculada se afecta por la prioridad del estudiante. Para cada es-
tudiante, todas las distancias a cada uno de los colegios, excepto las correspon-
dientes a aquellos seleccionados como opciones por los padres, se multiplican
por el ındice de prioridad del estudiante. Recuerde que los indices estan orde-
nados de menor a mayor, representando 1 los estudiantes con mayor prioridad.
Por ejemplo, considerando los datos de la Tabla , las distancias afectadas por
la prioridad del estudiante serıan:
55
Estudiante 1 2 3 · · · nPrioridad 2 1 1 3Opcion 1 2 1 1 2Opcion 2 3 6 4 3
Colegio COSTOS1 8 0 0 62 1 1 4 23 1 3 2 24 20 5 0 125 10 5 1 186 2 0 1 3
Tabla 5: Ejemplo del calculo de las distancias afectadas poor la prioridad
3. Se calcula la distancia de cada estudiante al colegio ficticio (nodo con capacidad
igual a la demanda en exceso). Para ello, se selecciona la mayor de todas las
distancias afectadas, Llamese D, calculadas en el paso 2, y se multiplica por un
factor determinado previamente, con el fin de hacerla suficientemente grande
para desmotivar su seleccion. Para cada estudiante la distancia al nodo ficticio
sera igual D multiplicado por un factor relacionado con la prioridad. Ası, el
costo de asignacion al colegio ficticio sera:
D × (k + 1− prioridadi) (29)
En donde,
k: Numero de niveles de prioridad
prioridadi: ındice de prioridad asignada al estudiante i.
Note que esta definicion pretende que el valor de la distancia de los estudiantes
de mas prioridad al colegio ficticio sea mas alto pues estos no deberıan quedarse
sin asignar (es decir, ser asignados al colegio ficticio), mientras que para los
estudiantes con menos prioridad este valor va a ser mas bajo y probablemente
sea quienes queden sin asignar. Por ejemplo, para el primer estudiante en la
Tabla 2 el costo de asignacion al colegio ficticio sera igual a D × (k + 1− 2).
Asumiendo que el factor por el cual se multiplica el mayor costo calculado en el
56
paso 2 es 5 y que el nivel de prioridad de los estudiantes esta entre 1 y 5; el costo
de asignacion del estudiante 1 al colegio ficticio es c = 5×20×(5+1−2) = 400
4. Calcular el beneficio. hasta el momento se ha estimado un costo de asigna-
cion, sin embargo como se pretende maximizar el beneficio, estos se calculan
sustrayendo a cada uno de los costos el maximo de todos ellos. De modo que
aquellas asignaciones (estudiante-colegio) con menor costo, se convertiran en
las de mayor beneficio, mientras que las de mayor costo generaran un menor
beneficio.
Con el fin de observar como podrıa comportarse una definicion similar de los be-
neficios para ser empleada en alguna de las estrategias de solucion, se efectuaron
9 corridas en instancias de asignacion de 10,000 estudiantes a 100 colegios. Estas
instancias fueron generadas bajo las siguientes condiciones.
i.) Las capacidades de los colegios se generaron como una distribucion uniforme
entre 50 y 150, siendo la capacidad del colegio ficticio igual a la diferencia
entre el numero de estudiantes y la suma de las capacidades de los 99 colegios
restantes (la capacidad del colegio ficticio es 0 si la diferencia es negativa)
ii.) Las distancias de cada estudiante a cada colegio se generan como una distribu-
cion uniforme entre 0 y 20. Ası mismo, las prioridad asignada a cada estudiante
se genera como una distribucion uniforme entre 1 y 5.
iii.) Las opciones de preferencia de cada estudiante (2 opciones) se generan de la
siguiente forma:
• Existe una probabilidad dada de que el estudiante desee ser asignado a
un conjunto especıfico de colegios (25 colegios), y la probabilidad restante
de que seleccione como opcion un colegio de los 75 restantes.
• Aleatoriamente se identifica a cual de los dos conjuntos de colegios desea
ser asignado el estudiante y se genera mediante una distribucion uniforme
la institucion particular, dentro del conjunto, en la que desea obtener un
cupo. De igual manera se efectua para la segunda opcion.
57
• Se emplearon tres valores diferentes para la probabilidad de que el estu-
diante desee un cupo en el conjunto de 25 colegios (colegios mas deman-
dados), estos valores fueron 0,6, 0,5 y 0,4, efectuandose tres corridas para
cada uno de ellos.
El procedimiento descrito para determinar las opciones de colegio seleccionadas
por el estudiante busca reflejar la situacion en la cual existen colegios con
mayor demanda que otros, lo cual puede dificultar el proceso de asignacion.
Algunos de los resultados mas importantes de la ejecucion de estas instancias se
presentan en la Tabla 6:
Probabilidad 0,6 0,5 0,4Instancia 1 2 3 1 2 3 1 2 3
A (%) 99,5 99,8 99,3 99,1 98,8 99,6 100,0 98,3 98,2B (%) 30,1 30,0 30,1 30,7 29,3 30,3 30,2 30,6 31,2
C (%) 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0 100,0DISTANCIA
entre 0 y 1 (%) 19,5 19,9 19,3 20,2 19,3 19,4 19,5 20,2 20,5entre 0 y 2 (%) 86,0 83,0 84,3 81,5 86,5 85,0 86,0 84,6 83,3entre 0 y 3 (%) 93,0 90,1 91,4 88,4 92,9 91,8 93,3 91,7 90,2entre 0 y 4 (%) 95,6 92,8 93,9 90,7 95,5 94,5 96,0 94,2 92,7entre 0 y 5 (%) 97,2 94,3 95,4 92,3 97,0 96,2 97,7 95,9 94,6entre 0 y 6 (%) 97,7 94,7 95,9 92,9 97,5 96,8 98,2 96,6 95,1entre 0 y 7 (%) 97,9 94,8 96,0 93,1 97,7 96,9 98,3 96,7 95,2entre 0 y 8 (%) 97,9 95,0 96,1 93,2 97,8 97,0 98,4 96,7 95,3entre 0 y 9 (%) 0,0 0,0 0,0 0,0 0,0 97,1 98,4 96,8 95,3A:Procentaje de Estudiantes de prioridad 1 asignados a una OpcionB:Procentaje Total de Estudiantes asignados a una OpcionC:Procentaje de estud. no asignados pertenecientes a prioridad 5
Tabla 6: Resultados de Ejecucion de Instancias de Prueba
De los resultados presentados es importante observar como:
En todas las corridas realizadas, mas del 98 % de los estudiantes con prioridad
1, fueron asignados a alguno de los colegios considerados por los padres como
la opcion de su preferencia.
58
En la mayorıa de los casos mas del 30 % de los estudiantes fue asignado a una
de las instituciones consideradas por los padres como de su preferencia.
En todas las corridas realizadas, todos los estudiantes que no pudieron ser
asignados pertenecıan al menor nivel de prioridad, 5 en este caso.
En la mayorıa de las corridas realizadas mas del 90 % de los estudiantes fue
asignado a instituciones ubicadas a una distancia de tres o menos unidades de
medida de su hogar, esto es aun mas importante si se recuerda que el parametro
empleado para la distribucion de la distancia genero distancia maximas de 20
unidades.
Puede observarse como dependiendo de las caracterısticas particulares de la instancia
del problema de asignacion que se pretende resolver, puede formularse una funcion
para calcular los beneficio que han de ser usados en alguna de las estrategias de
solucion al problema y que permitan satisfacer muchas de las condiciones deseables
en la asignacion obtenida.
6.2. Proceso de Asignacion de Cupos
En el capıtulo 2 fue descrito el proceso desarrollado por la Secretaria de Educa-
cion para la asignacion de cupos en el sistema de educacion del distrito, dandose
particular interes a la asignacion de estudiantes nuevos. Se senalo tambien como la
situacion problematica de estudio, precisamente la asignacion de este conjunto de
estudiantes, formulandose matematicamente el problema allı inmerso. Las estrate-
gias de solucion planteadas en los capıtulos anteriores se enmarcan en una etapa, la
asignacion misma, dentro del proceso completo de matrıcula Se presentan a conti-
nuacion al menos de dos formas diferentes, de como pueden ser usados los modelos
descritos en el desarrollo de este trabajo dentro de dicho proceso, particularmente
para contribuir a la asignacion de los estudiantes.
59
6.2.1. Alternativa de Aplicacion 1
Como se planteo en el capıtulo 2, la asignacion de los estudiantes nuevos se fun-
damenta en dos procesos: la asignacion por opciones y la asignacion por georefe-
renciacion. Brevemente, puede describirse este proceso como, la asignacion de los
estudiantes ordenados por sus prioridades,2 de manera que los estudiantes van
siendo asignados a las opciones para las cuales presentaron solicitud en orden de su
prioridad, aquellos para los que no es posible satisfacer la asignacion por opciones,
son ubicados mediante un sistema de georrefernciacion al colegio mas cercano, con-
servando nuevamente para esta asignacion el orden determinado por las prioridades
definidas.
La primera alternativa de aplicacion o forma como pueden usarse las estrategias de
solucion del problema de asignacion, es mas cercena al proceso actualmente seguido.
El procedimiento de asignacion podrıa desarrollarse siguiendo los siguientes pasos.
PASO 1. Se asigna a cada estudiante, de igual manera a como actualmente
se desarrolla, la prioridad que le corresponde dentro del proceso de asignacion
PASO 2. Se identifica el conjunto de estudiantes con mayor prioridad, que aun
no haya sido asignado, se determina la mejor asignacion, respecto al beneficio
total de la asignacion , para todo el conjunto de estudiantes simultaneamente,
para ello se emplea alguna de las estrategias de solucion presentadas anterior-
mente.
PASO 3. Se determina si existen aun estudiantes sin asignar, pertenecientes
a otros niveles de prioridad, y si existen cupos disponibles en algunas institu-
ciones, de ser ası se regresa al paso 2. En caso contrario, si existen estudiantes
sin asignar, pero no hay cupos disponibles, el proceso debe continuar con la
exploracion de estrategias de ampliacion de cobertura que disponga el distrito
2Es importante recordar que la prioridad asignada a cada estudiante es determinada por lasecretaria de educacion en funcion del estrato socio-economico del estudiante, su nivel del SISBEN,el tipo de poblacion al que pertenece (Vulnerables, desplazados, etc)
60
para intentar asignar cupos a los estudiantes para los cuales que no fue posible
asignar en los cups existentes.
NOTA: Este procedimiento se repite para cada uno de los grados para los
cuales es necesario desarrollar el proceso de asignacion, de igual forma a como
se efectua actualmente en el proceso.
La Figura 12 presenta el procedimiento que corresponde a la alternativa de aplicacion
descrita.
Figura 12: Alternativa de Aplicacion 1
Esta alternativa de aplicacion preserva la naturaleza “greedy ” con la cual se desarro-
lla actualmente el proceso, sin embargo, en vez de buscar la mejor asignacion posible
del estudiante de acuerdo con la prioridad de este, se ocupa de todo un el conjunto
simultaneamente, de esta forma podrıan darse situaciones en las que algunos estu-
diantes, dentro de un mismo grupo de prioridad, no sean asignados a algunas de las
opciones presentadas para poder permitir que un grupo mas amplio de estudiantes
61
sea asignado a colegios cercanos incrementando ası el beneficio total de la asignacion.
Es importante notar tambien, que la solucion del problema de asignacion de estu-
diantes debera irse tornando mas compleja a medida que se van asignando conjuntos
de estudiantes con igual prioridad. Ası, para el conjunto de estudiantes con mayor
prioridad, la disponibilidad de cupos debera sobrepasar ampliamente la demanda,
por lo que muchos de los estudiantes podran ser asignados a las opciones de colegios
senaladas pos sus padres o a colegios cercanos. Para los estudiantes pertenecientes
a conjuntos con las menores prioridades, la solucion del problema requerira la con-
sideracion de cupos ficticios para igualar la oferta a la demanda, implicando que
algunos de estos estudiantes no podran ser asignados (seran asignados al colegio o
nodo ficticio generado) y que en general pocos de ellos encontraran un cupo dentro
de las opciones de colegios indicadas por sus padres.
Note tambien, que en esta alternativa de aplicacion las prioridades y los beneficios
(que bien podrıan ser el inverso aditivo de las distancias o la deferencia entre una
constante M suficientemente grande y las distancias) son considerados separada-
mente. Ası la definicion de la funcion de beneficio es mas sencilla que la presentada
en la Seccion 6.1. Adicionalmente, no puede perderse de vista que la solucion del
problema puede corresponder a instancias en las cuales se consideran restricciones
adicionales, las cuales pueden ser tenidas en cuenta de la forma como se describe
en el Capitulo 5 usando la estrategia de solucion que mas se ajuste al problema
particular (Algoritmo de Subasta o Branch-and-Price)
6.2.2. Alternativa de Aplicacion 2
La segunda alternativa de aplicacion de las estrategias de solucion presentadas, den-
tro del proceso de asignacion de cupos escolares, difiere de la forma como actualmente
se desarrolla dicho proceso. En esta alternativa podrıan considerarse simultanea-
mente todos los estudiantes que aspiran a un cupo en un determinado grado y se
efectuarıa para ellos el proceso de asignacion mediante alguna de las dos estrategias
de solucion descritas en capıtulos anteriores.
62
La Figura 13 permite observar la forma como se desarrollarıa el proceso de asignacion
al implementar la alternativa de aplicacion 2.
Figura 13: Alternativa de Aplicacion 2
En esta alternativa toma mayor relevancia la definicion de la funcion de beneficios,
pues debera representarse en este valor tanto la prioridad como la distancia y demas
consideraciones para la asignacion en la instancia particular, de modo similar a como
se presento en la Seccion 6.1. Esta alternativa abandona el la naturaleza “greedy”
del proceso que actualmente se desarrolla, sin embargo al igual que en la alternativa
anterior sera necesario hacer uso de las estrategias de ampliacion de cobertura de la
Secretaria, para poder asignar a aquellos estudiantes a los que no les fue asignado
un cupo dentro del proceso de asignacion (Es decir, aquellos que fueron asignados
al colegio o nodo ficticio).
63
Esta alternativa corresponde fundamentalmente a resolver un problema de asigna-
cion como el formulado en (P1), quizas con la consideracion de extra-restricciones,
para cada uno de los grados en los que se requiera asignar estudiantes. Para ello
y dependiendo de la instancia particular el algoritmo de subastas puede resultar
apropiado, aun mas si se considera que presenta mayor eficiencia en al solucion que
el algoritmo de Branch-and-Price, particularmente para instancias grandes como las
que podrıan presentarse.
64
Capıtulo VII
Conclusiones
Con el fin de hacer mas claras las conclusiones que es posible obtener a partir
del trabajo desarrollado, estas se agruparon segun tengan relacion con los temas
desarrollados dentro del proyecto.
7.1. Conclusiones Respecto a la Contextualizacion del Pro-ceso de Asignacion
La Secretaria de educacion del Distrito tiene completamente definido el proceso de
matrıcula, dentro del cual se destaca la etapa de asignacion de cupos a los estudian-
tes. Dependiendo de los lineamientos fijados por la Secretaria los estudiantes pueden
clasificarse en antiguos y nuevos; para cada uno de estos grupos estan claramente
definidos los procedimientos de asignacion de cupos. La estrategia de renovacion
automatica y traslados rige la asignacion de estudiantes antiguos, mientras que las
estrategias de opciones y georeferenciacion estan asociadas a la asignacion de cupos
para estudiantes nuevos. El procedimiento seguido para la asignacion del conjun-
to de estudiantes nuevos, mediante opciones o gereferenciacion, se identifica como
el punto en el cual el uso de modelo matematicos, particularmente del area de in-
vestigacion de operaciones, puede contribuir en el mejoramiento del resultado del
proceso, puesto que la forma en la que se desarrolla actualmente dista de pretender
optimizar el beneficio obtenido en la asignacion y por el contrario corresponde a una
heurıstica para obtener una solucion factible del problema, no necesariamente una
buena solucion.
65
En la asignacion de cupos a los estudiantes nuevos, se puede identificar una ins-
tancia particular de un problema similar al problema de asignacion o al problema
de transporte. La solucion de este problema adquiere complejidad debido al gran
numero de variables que deben considerarse en su solucion, esto debido en gran
parte al numero de estudiantes involucrados en el proceso de asignacion de cupos.
El problema que se enfrenta corresponde a un problema binario, sin embargo, su
solucion a traves de metodos tradicionales como Branch-and-Bound no resulta efi-
ciente y se requiere explorar alternativas diferentes para la solucion del mismo. Las
dos estrategias de solucion que se exploran corresponden a algoritmos de Subasta,
comunmente empleados en propuestas de solucion a problemas de asignacion, y el
algoritmo de Branch-and-Price, el cual se fundamenta en el esquema de generacion
de columnas dentro del algoritmo Branch-and-Bound.
La forma como actualmente se desarrolla esta actividad, se asemeja a los algoritmos
greedy empleados para diversos problemas enteros (Knapsack, Binpacking, Asig-
nacion), los cuales no proveen soluciones optimas e incluso, dependiendo de cuan
elaborados sean o no, pueden generar soluciones bastante distantes de dicho optimo.
Las estrategias propuestas para ser empleadas en el proceso, pretende desarrollar
mas rigurosamente el proceso de asignacion, empleando como objetivo la maximi-
zacion del beneficio generado por la asignacion de los estudiantes a los distintos
colegios.
7.2. Conclusiones Respecto a las Estrategias de Solucion
El algoritmo de Subastas, inicialmente presentado por el profesor Bertsekas, para
problemas de asignacion, puede ser modificado de modo que permita la considera-
cion de instancias de problemas como el que se estudia en este proyecto. La oferta de
un numero determinado de cupos por cada institucion, requieren que el algoritmo
considere la presencia de objetos (cupos) similares, con el fin de mejorar su eficiencia.
Esta modificacion del algoritmo es solo una de las consideraciones realizadas sobre
el y han permitido que sea utilizado en la solucion de problemas mas generales como
el denominado GAP (Problema de Asignacion Generalizada)
66
El Algoritmo de Subastas brevemente descrito en el desarrollo de este proyecto, es
un algoritmo eficiente, de facil comprension e implementacion y cuyo tiempo de
ejecucion esta en relacion con algunos de los parametros que caracterizan la ins-
tancia. Si bien no es un algoritmo de tiempo polinomial, su tiempo de ejecucion es
seudopolinomial y esta determinado por los valores particulares de los beneficios de
asignacion, el numero de estudiantes y el numero de colegios. Las corridas realizadas
de este algoritmo en instancias generadas aleatoriamente, a lo largo del desarrollo del
proyecto, evidencian que es una estrategia atractiva para ser usada en el proceso de
asignacion de cupos pues incluso permite la consideracion de restricciones respecto
a los colegios a los cuales puede ser asignado cada estudiante.
En el desarrollo de este trabajo pudo evidenciarse la convergencia lenta del algorit-
mo de generacion de columnas, comunmente referida en la literatura, ası mismo fue
posible evidenciar mediante corridas del algoritmo implementado, el comportamien-
to oscilatorio y poco estable de las variables en el problema dual, que junto con la
degeneracion son senaladas de ser una de las causas del problema de convergencia
de dicho algoritmo.
Si bien se observo que la convergencia del algoritmo de generacion de columnas es
lenta, lo cual afecta seriamente la viabilidad de su uso en estrategias de solucion
como el algoritmo Branch-and-Price, tambien fue posible observar alternativas para
atenuar esta problematica. De manera particular se recurrio al uso de estrategias
de estabilizaron del algoritmo de generacion de columnas enmarcadas dentro de la
Programacion Lineal, lo cual hace posible el uso de las herramientas comunmente
utilizadas para este tipo de problema. Fue posible comprender la manera de imple-
mentar este tipo de estrategias de estabilizarıan, ası como observar como la forma
en que su uso reduce considerablemente el numero de iteraciones requeridas para
la solucion del problema. Adicionalmente se planteo el uso de cotas respecto al va-
lor de la funcion objetivo, que permitan terminar anticipadamente el algoritmo de
generacion de columnas. Esto con el fin de intentar construir buenas soluciones a
67
partir de la solucion encontrada o emplear dichas cotas para la exploracion del arbol
de busqueda en el algoritmo Branch-and-Price.
Si bien el uso de las estrategias senaladas anteriormente para el algoritmo de genera-
cion de columnas, son de utilidad para mejorar su convergencia, aun son necesarias
consideraciones adicionales o el uso de estrategias diferentes, con el fin de acelerar
y mejorar su desempeno, de modo que pueda pensarse en su uso en problemas de
mayor escala. Ası por ejemplo, es necesario considerar la forma de inicializar los
metodos de estabilizacion con mejores estimaciones de los valores duales, de modo
que las primeras iteraciones sean mas productivas. De igual manera es importante
considerar que la eficiencia del algoritmo Branch-and-Price estara influenciada por
los problemas senalados para el algoritmo de generacion de columnas, puesto que
este debe ser repetido intensivamente durante el proceso de solucion.
Dadas todas las consideraciones senaladas anteriormente para las dos estrategias
de solucion propuestas en este proyecto, el Algoritmo de Subasta, la modificacion
de este presentada en el Capıtulo 3, se presenta como la alternativa de solucion
para la instancia basica del problema (P1). Adicionalmente este algoritmo puede
ser modificado de modo que permita dar solucion a instancias que consideren cierto
tipo de restricciones adicionales, como se presento en el Capitulo 5
7.3. Conclusiones Respecto a la Aplicabilidad en el Procesode Asignacion
Las estrategias de solucion presentadas en el desarrollo de este proyecto, son aplica-
bles dentro del proceso de asignacion de cupos que desarrolla actualmente la Secre-
taria de Educacion. La implementacion de estas estrategias estarıa soportada sobre
el mismo sistema de informacion y el mismo procedimiento definido para el proceso
de matrıcula, simplemente reemplazarıa el proceso de asignacion como tal, que da-
das las condiciones de ejecucion actual no esta orientado a generar la asignacion de
los estudiantes que maximice u optimice algun criterio particular.
68
Los modelos de soporte al proceso de asignacion, que se proponen como estrategias
de solucion al problema particular de asignacion, corresponden a un cambio en el
enfoque “greedy ” que actualmente inspira la asignacion de cupos escolares, por en-
foques mas fundamentados y rigurosos matematicamente.
La comparacion de las diferentes formas de desarrollar la asignacion de cupos escola-
res y la estimacion de la mejora alcanzada a traves de la aplicacion de las estrategias
propuestas en este proyecto, solo es posible con el compromiso de la Secretaria de
Educacion. Para este fin es necesario poder acceder a la informacion real y los resul-
tados obtenidos con tanto en el proceso actual como con la aplicacion de los modelos
propuesto.
Es relevante desarrollar un analisis crıtico de los procesos desarrollados en la Se-
cretaria de Educacion ası como la identificacion de puntos en los cuales sea posible
contribuir a traves del estudio de modelos de apoyo a estas labores. De manera parti-
cular quedan abiertos temas relacionados al desarrollado en este proyecto, dentro de
los cuales se desataca el estudio de la localizacion de futuros colegios, de modo que
se logre una mejor cobertura de la demanda futura por cupos escolares en el Distrito.
69
Apendice A
Implementacion del Algoritmo de Subasta
A.1. Descripcion de la Implementacion
el algoritmo de subastas fue implementado en JAVA, a continuacion se describen
las clases creadas ası como la forma en la cual estas interactuar, posteriormente se
anexa el codigo fuente de dichas clases.
i.) Clase Auction. Esta es la clase principal del algoritmo, a partir de ella se
van generando los objetos necesarios para la ejecucion del mismo. Esta clase
tiene los siguientes metodos:
• Metodo Auction . Este corresponde al metodo constructor y define va-
lores validos para los principales parametros del algoritmo.
• Metodo leer . Este metodo captura los datos desde un archivo txt. como
el que se presenta como ejemplo al final de este anexo.
• Metodo inicio. Este metodo genera las condiciones apropiadas para el
inicio del algoritmo a partir de los datos capturados, para ello crea los
arreglos de estudiantes, colegios y cupos.
• Metodo iteracion . Metodo que controla las iteraciones o rondas de
la subasta, ejecuta la mayor parte del algoritmo en rondas o iteraciones
sucesivas hasta satisfacer las condiciones de optimalidad
• Metodo imprimir . Metodo que las asignaciones definitivas de cada
colegio.
70
ii.) Clase Subasta. Esta clase corresponde a los objetos que desarrollan cada
subasta o ronda, entre actualizaciones sucesivas del valor de epsilon. Esta clase
tiene los siguientes metodos:
• Metodo reinicar . Reestablece las condiciones iniciales necesarias para
el comienzo de cada ronda de la subasta
• Metodo corrida . Este metodo desarrolla la subasta, es decir controla
el flujo de las ofertas y contra ofertas por los distintos objetos.
iii.) Clase Estudiante. Esta clase corresponde a los objetos que cumplen las
funciones de oferentes dentro de la subasta. Tiene un unico metodo.
• Metodo oferta . Determina la el objeto, cupo, por el cual el estudiante
ofrecera en la iteracion de la subasta, ası como el valor de dicha oferta.
iv.) Clase Colegio. Esta clase corresponde a los objetos que cumplen las funciones
de los colegios, es decir la oferta en la subasta. El unico metodo que posee es
el que permite imprimir los estudiantes que le han sido asignados.
v.) Clase Cupo. Esta clase corresponde a los objetos que cumplen las funciones
de objetos dentro de la subasta, en realidad cada colegio genera un nume-
ro determinado de cupos por los cuales los estudiantes ofrecen dentro de la
subasta.
vi.) Clase Pendiente. Es una clase auxiliar de objetos que permiten emplear las
listas ordenadas para determinar los estudiantes pendientes de ser asignados.
A.2. Codigo Fuente
Archivo Auction.javaimport java . u t i l . ∗ ;
import java . lang .Math ;
import javax . swing . ∗ ;
/∗∗ Creado e l 18−sep−2005
∗ Imp l emtac i n de l Algoritmo AUCTION SO Creado Por Dimitr i Bertsekas
∗∗/
71
/∗∗∗ @author Pablo Andr s Maya Duque
∗/
/∗∗ Clase Pr i n c i pa l de l Algoritmo ∗/
pub l i c c l a s s Auction {i n t Ncoleg , Nestud , cerrados , capmin , Tota l I t e rac , f a c t o r ;
double eps i l on , bigM ;
i n t capac [ ] ;
i n t b en e f i c [ ] [ ] ;
ArrayList Estpend = new ArrayList ( ) ;
Cupo cupos [ ] ;
Estudiante Estudiantes [ ] ;
Co leg io c o l e g i o s [ ] ;
pub l i c s t a t i c void main ( St r ing [ ] a rgs ) {Auction a=new Auction ( ) ;
a . l e e r (”C:// Documents and Se t t i ng s //OTRO// E s c r i t o r i o //” +
”AUCTION algorithm Sept 24// datos10 . txt ” ) ;
a . i n i c i o ( ) ;
a . i t e r a c i o n ( ) ;
a . imprimir ( ) ;
}
/∗∗ Crea una nueva i n s t an c i a de Auction ∗/
pub l i c Auction ( ) {ce r rados =0;Ncoleg=4;Nestud=10; capmin=1000000; To ta l I t e r a c =0;
}
/∗∗ M todo para l e e r datos de ar ch ivo s de entrada ∗/
pub l i c void l e e r ( S t r ing nombre ){i n t i =0, j =0;
t ry {java . i o . Fi leReader arch ivo = new java . i o . Fi leReader ( nombre ) ;
java . i o . BufferedReader entrada = new java . i o . BufferedReader ( arch ivo ) ;
S t r ing s ;
java . u t i l . S t r ingToken ize r s t r ;
System . out . p r i n t l n (” Archivo encontrado ” ) ;
whi le ( entrada . ready ( ) ){//Leer bigM
s=entrada . readLine ( ) ;
s t r=new java . u t i l . S t r ingToken ize r ( s ) ;
bigM = Int ege r . pa r s e In t ( s t r . nextToken ( ) ) ;
System . out . p r i n t l n (” Valor de big M= ”+bigM ) ;
// Leer e l n mero de i n s t i t u c i o n e s
s=entrada . readLine ( ) ;
s t r=new java . u t i l . S t r ingToken ize r ( s ) ;
Ncoleg = In t ege r . pa r s e In t ( s t r . nextToken ( ) ) ;
System . out . p r i n t l n (” N mero de i n s t i t u c i o n e s= ”+Ncoleg ) ;
capac = new in t [ Ncoleg ] ;
// Leer e l n mero de Estudiantes
s=entrada . readLine ( ) ;
s t r=new java . u t i l . S t r ingToken ize r ( s ) ;
Nestud= Int ege r . pa r s e In t ( s t r . nextToken ( ) ) ;
System . out . p r i n t l n (” N mero de Estudiantes= ”+Nestud ) ;
b en e f i c = new in t [ Nestud ] [ Ncoleg ] ;
// Leer capacidad de I n s t i t u c i o n e s
s=entrada . readLine ( ) ;
s t r=new java . u t i l . S t r ingToken ize r ( s ) ;
i f ( s t r . countTokens ( ) != Ncoleg ) throw new Exception ( ) ;
f o r ( i =0; i<Ncoleg ; i++){
72
capac [ i ] = In t eg e r . pa r s e In t ( s t r . nextToken ( ) ) ;
}//Leer b en e f i c Estudiante i n s t i t u c i n
f o r ( j =0; j<Nestud ; j++){s=entrada . readLine ( ) ;
s t r = new java . u t i l . S t r ingToken ize r ( s ) ;
i f ( s t r . countTokens ( ) != Ncoleg ) throw new Exception ( ) ;
f o r ( i =0; i<Ncoleg ; i++){bene f i c [ j ] [ i ] = In t eg e r . pa r s e In t ( s t r . nextToken ( ) ) ;
}}
System . out . p r i n t l n (” Archivo l e i d o con ex i t o ” ) ;
}entrada . c l o s e ( ) ;
} catch ( Exception e ){System . out . p r i n t l n (”No se pudo l e e r e l a rch ivo ” ) ;
}}
/∗∗ M todo de In i c i o , para c r ea r e s tud iante s , cupos y l i s t a de pend ientes ∗/
pub l i c void i n i c i o ( ){//Genera e l a r r e g l o de e s tud i an t e s
Estudiantes=new Estudiante [ Nestud ] ;
f o r ( i n t k = 0 ; k < Nestud ; k ++){Estudiantes [ k]=new Estudiante (k , Ncoleg ) ;
}//Genera a r r e g l o de Cupos
cupos =new Cupo [ Nestud ] ;
i n t sumacap=0;
f o r ( i n t k = 0 ; k < capac . l ength ; k ++) {f o r ( i n t i = 0 ; i < capac [ k ] ; i++ ) {
cupos [ sumacap+i ]=new Cupo(k , Nestud ) ;
}sumacap=sumacap+capac [ k ] ;
}//Genera e l a r r e g l o de c o l e g i o s
c o l e g i o s=new Coleg io [ Ncoleg ] ;
f o r ( i n t i = 0 ; i < Ncoleg ; i ++){c o l e g i o s [ i ]=new Coleg io ( i , capac [ i ] ) ;
}}
/∗∗ Metodo que cont ro l a l a s i t e r a c i o n e s o rondas de l a subasta ∗/
pub l i c void i t e r a c i o n (){St r ing a=JOptionPane . showInputDialog (” Valor de Eps i lon ” ) ;
S t r ing b=JOptionPane . showInputDialog (” Factor de reducc ion de ep s i l o n ” ) ;
e p s i l o n=Double . parseDouble ( a ) ;
f a c t o r=In t ege r . pa r s e In t (b ) ;
e p s i l o n=ep s i l o n ∗ f a c t o r ;
i n t opt=0;
//Genera un subasta ( Objeto ) que r e a l i z a l a subasta
Subasta ronda=new Subasta ( Estpend . s i z e ( ) ) ;
double aux=Math . pow( Ncoleg , −1);
System . out . p r i n t l n (” aux ”+aux ) ;
whi le ( eps i l on>=aux ){opt+=1;
ep s i l o n=ep s i l o n / f a c t o r ;
ronda . r e i n i c i a r (Nestud , Ncoleg , bene f i c , Estudiantes , cupos , Estpend , c o l e g i o s ) ;
ronda . c o r r i da (bigM , eps i l on , Nestud , Ncoleg , Estudiantes , bene f i c , cupos ,
Estpend , c o l e g i o s ) ;
To ta l I t e r a c+=ronda . NoOfertas ;
73
System . out . p r i n t l n (”RONDA: ”+opt+” ; Eps i lon : ”+ep s i l o n+” ; NoIter Ronda :
”
+ ronda . NoOfertas+” ; Total I t e r : ”+Tota l I t e r a c+” ; Costo Asig : ”+ronda . cos to ) ;
}}
pub l i c void imprimir ( ){System . out . p r i n t l n (” Esudiantes Asignados por c o l e g i o ” ) ;
f o r ( i n t i =0; i<c o l e g i o s . l ength ; i++){c o l e g i o s [ i ] . imprimir ( i ) ;
}}
}
Archivo Colegio.java/∗∗ Created on 25−sep−2005
∗∗ TODO To change the template f o r t h i s generated f i l e go to
∗ Window − Pre f e r ence s − Java − Code Sty l e − Code Templates
∗/
/∗∗∗ @author Pablo Andr s Maya
∗/
/∗∗ Clase que enera cada i n s t i t u c i o n para l a que debe encont ra r s e una a s i g n a c i n .∗/
pub l i c c l a s s Coleg io {//Genera i d e n t i f i c a d o r de l c o l e g i o y vector con e s tud i an t e s as ignados
i n t id ;
i n t c o s t o c o l e g ;
i n t capacidad ;
i n t as ignados [ ] ;
pub l i c Coleg io ( i n t i , i n t capac i ) {id=i ;
c o s t o c o l e g =0;
capacidad=capac i ;
as ignados=new in t [ capacidad ] ;
}
pub l i c void imprimir ( i n t i ) {System . out . p r in t (” Coleg io ”+( i +1)) ;
f o r ( i n t j =0; j<capacidad ; j++){System . out . p r in t (” ”+( as ignados [ j ]+1 ) ) ;
}System . out . p r i n t l n (” ” ) ;
}/∗∗ pub l i c void Costo ( i n t b en e f i c ){
c o s t o c o l e g =0;
f o r ( i n t i =0; i<as ignados . l ength ; i++ ){c o s t o c o l e g+=bene f i c [ t h i s as ignados [ i ] ] [ 2 ] ;
}}∗/
}
Archivo Estudiante.java/∗∗ Creado e l 19−sep−2005
∗/
74
/∗∗∗ @author Pablo Andr s Maya Duque
∗/
/∗∗ Clase que genera Estudiantes ( personas ) para s e r as ignadas ∗/
pub l i c c l a s s Estudiante {// i d e n t i f i c a d o r de l e s tud iant e
i n t id ;
// c o l e g i o a l cua l es as ignado e l e s tud iant e
i n t co l eg ;
// i n d i c e s y va l o r e s para l o s dos ob j e to s mas va lorados por e l e s tud iant e
i n t cupoofrec1 , cupoof rec2 ;
double mayor1 , mayor2 ;
// o f e r t a que r e a l i z a e l e s tud iant e por e l cupo de mayor v a l o r a c i n
double o f e r t a ;
/∗∗ M todo cons t ruc to r ∗/
pub l i c Estudiante ( i n t k , i n t Ncoleg ) {id=k ;
co l eg=Ncoleg+1;
}
/∗∗ M todo que genera l a o f e r t a de l e s tud iant e por e l cupo de mayor va l o ra c i on ∗/
pub l i c void Oferta ( i n t b ene f i c [ ] [ ] , Cupo cupos [ ] , i n t Nestud , double bigM , double ep s i l o n ) {mayor1=−100∗bigM ;
mayor2=−100∗bigM ;
cupoof rec1=cupos . l ength +1;
cupoof rec2=cupos . l ength +1;
//Busca cupo de mayor va l o ra c i on
f o r ( i n t j= 0 ; j < cupos . l ength ; j ++){i f ( b en e f i c [ id ] [ cupos [ j ] . c l a s e ]−cupos [ j ] . prec io>=mayor1 ) {
cupoof rec1=j ;
mayor1=bene f i c [ id ] [ cupos [ j ] . c l a s e ]−cupos [ j ] . p r e c i o ;
}}
//Busca cupo de segunda mayor v a l o r a c i n y de d i s t i n t a c l a s e s im i l a r
f o r ( i n t j= 0 ; j < cupos . l ength ; j ++){i f ( cupos [ j ] . c l a s e !=cupos [ cupoof rec1 ] . c l a s e ){
i f ( b en e f i c [ id ] [ cupos [ j ] . c l a s e ]−cupos [ j ] . prec io>=mayor2 ) {cupoof rec2=j ;
mayor2=bene f i c [ id ] [ cupos [ j ] . c l a s e ]−cupos [ j ] . p r e c i o ;
}}
}o f e r t a=cupos [ cupoof rec1 ] . p r e c i o+mayor1−mayor2+ep s i l o n ;
}
}
Archivo Subasta.javaimport java . u t i l . ∗ ;
/∗∗ Clase que genera una subasta , Objeto que d e s a r r o l l a cada una de
∗ l a s i t e r a c i o n e s o rondas de subastas . ∗/
pub l i c c l a s s Subasta {i n t aux1 ;
i n t o f r e c e ;
i n t cos to ;
i n t NoOfertas ;
pub l i c Subasta ( i n t k ) {aux1=k ;
75
}/∗∗ M todo que r e i n i c i a l a Subasta :
∗ 1 . I n i c i a con un conjunto de a s i gnac i one s vac io (Ningun e s tud iante t i e n e c o l e g i o as ignado )
∗ 2 . Actua l i za e l p r e c i o de cada cupo , hac i endo lo i gua l a l p r e c i o de l a s o l u c i on optima
∗ de l a i t e r a c i n an t e r i o r
∗ 3 . I n i c i a cada Cupo s i n e s tud iante as ignado
∗ 4 . Genera Listado I n i c i a l de e s tud i an t e s pend ientes
∗ (Todos l o s e s tud i an t e s i n i c i a n como pendientes , s i n cupo )
∗/
pub l i c void r e i n i c i a r ( i n t Nestud , i n t Ncoleg , i n t b en e f i c [ ] [ ] , Estudiante Estudiantes [ ] , Cupo cupos [ ] ,
L i s t Estpend , Coleg io c o l e g i o s [ ] ) {
f o r ( i n t j =0; j<Nestud ; j++){Estudiantes [ j ] . c o l e g=Ncoleg+1;
t ry {cupos [ j ] . p r e c i o=bene f i c [ cupos [ j ] . e s t a s i g ] [ cupos [ j ] . c l a s e ] ;
} catch ( java . lang . ArrayIndexOutOfBoundsException e2 ){}cupos [ j ] . e s t a s i g=Nestud+1;
}f o r ( i n t k = 0 ; k < Nestud ; k ++){
Estpend . add (new Pendiente (k ) ) ;
}f o r ( i n t k=0; k<c o l e g i o s . l ength ; k++ ){
c o l e g i o s [ k ] . c o s t o c o l e g =0;
}}
pub l i c void co r r i da ( double bigM , double eps i l on , i n t Nestud , i n t Ncoleg , Estudiante Estudiantes [ ] ,
i n t b en e f i c [ ] [ ] , Cupo cupos [ ] , L i s t Estpend , Coleg io c o l e g i o s [ ] ) {//System . out . p r i n t l n (” tama o de l i s t a ”+Estpend . s i z e ( ) ) ;
i n t e s t s a c a r ;
i n t e s t e n t r a r ;
i n t sumacapa ;
NoOfertas=0;
whi le ( Estpend . s i z e ()>0 ){// I n i c i o de l a L i s ta de Pendientes
aux1=0;
cos to =0;
//Guarda e l id de l e s tud iant e que va a s e r as ignado
e s t e n t r a r =((Pendiente ) Estpend . get ( aux1 ) ) . r e f e s t ;
t ry {//Llama a l metodo Oferta de ese es tud iante , para determinar cupo y o f e r t a
Estudiantes [ e s t e n t r a r ] . Oferta ( bene f i c , cupos , Nestud , bigM , ep s i l o n ) ;
//AActualiza e l conjunto de As ignac iones ( ad i c i ona / r e t i r a e s tud i an t e s )
i f ( cupos [ Estudiantes [ e s t e n t r a r ] . cupoo f rec1 ] . e s t a s i g <Nestud+1){// Def ine e s tud iante a sacar de as ignados .
e s t s a c a r=cupos [ Estudiantes [ e s t e n t r a r ] . cupoo f rec1 ] . e s t a s i g ;
//Asigna e l cupo a l nuevo e s t y a c t u a l i z a cos to de l cupo
cupos [ Estudiantes [ e s t e n t r a r ] . cupoo f rec1 ] . e s t a s i g=e s t e n t r a r ;
cupos [ Estudiantes [ e s t e n t r a r ] . cupoo f rec1 ] . p r e c i o=Estudiantes [ e s t e n t r a r ] . o f e r t a ;
//Asigna a l e s tud iant e e l cupo
Estudiantes [ e s t e n t r a r ] . c o l e g=cupos [ Estudiantes [ e s t e n t r a r ] . cupoo f rec1 ] . c l a s e ;
//Saca a l e s tud iant e as ignado de pend ientes y ad i c i ona a l e s tud iant e q s a l i o
Estudiantes [ e s t s a c a r ] . c o l e g=Ncoleg+1;
//System . out . p r i n t l n (” Intercambia . Tama o L i s ta ”+Estpend . s i z e ()+”. Adiciona e s t : ”
+e s t e n t r a r +” (”+Estudiantes [ e s t e n t r a r ] . id+”)”+” a l co l eg : ”
+cupos [ Estudiantes [ e s t e n t r a r ] . cupoo f rec1 ] . c l a s e+” o f e r t a : ”
+Estudiantes [ e s t e n t r a r ] . o f e r t a ) ;
Estpend . remove ( aux1 ) ;
Estpend . add (new Pendiente ( e s t s a c a r ) ) ;
} e l s e {//Asigna e l cupo a l nuevo e s t y a c t u a l i z a cos to de l cupo
cupos [ Estudiantes [ e s t e n t r a r ] . cupoo f rec1 ] . e s t a s i g=e s t e n t r a r ;
76
cupos [ Estudiantes [ e s t e n t r a r ] . cupoo f rec1 ] . p r e c i o=Estudiantes [ e s t e n t r a r ] . o f e r t a ;
//Asigna a l e s tud iant e e l cupo
Estudiantes [ e s t e n t r a r ] . c o l e g=cupos [ Estudiantes [ e s t e n t r a r ] . cupoo f rec1 ] . c l a s e ;
//Saca a l e s tud iant e as ignado de pend ientes
//System . out . p r i n t l n (” Adiciona . e p s i l o n ”+ep s i l o n+” Tamao L i s ta ”+Estpend . s i z e ( )
+”. Adiciona e s t :”+ e s t e n t r a r+” (”+Estudiantes [ e s t e n t r a r ] . id+”)”
+” a l co l eg : ”+cupos [ Estudiantes [ e s t e n t r a r ] . cupoo f rec1 ] . c l a s e
+” o f e r t a : ”+Estudiantes [ e s t e n t r a r ] . o f e r t a ) ;
Estpend . remove ( aux1 ) ;
}} catch ( java . lang . ArrayIndexOutOfBoundsException e3 ){}//System . out . p r i n t l n (” Est Pendientes : ”+Estpend . s i z e ( ) ) ;
NoOfertas+=1;
}
//Guarda l a a s i g n a c i n
sumacapa=0;
f o r ( i n t k=0;k< c o l e g i o s . l ength ; k++){f o r ( i n t j =0; j<c o l e g i o s [ k ] . as ignados . l ength ; j++){
c o l e g i o s [ k ] . as ignados [ j ]=cupos [ sumacapa+j ] . e s t a s i g ;
c o l e g i o s [ k ] . c o s t o c o l e g+=bene f i c [ c o l e g i o s [ k ] . as ignados [ j ] ] [ k ] ;
}sumacapa+=co l e g i o s [ k ] . as ignados . l ength ;
}f o r ( i n t i =0; i<c o l e g i o s . l ength ; i++){
cos to+=co l e g i o s [ i ] . c o s t o c o l e g ;
}
// Calcula cos to de l a a s i g n a c i n
/∗∗ f o r ( i n t i =0; i <Estudiantes . l ength ; i ++){t ry {
cos to+=bene f i c [ Estudiantes [ i ] . id ] [ Estudiantes [ i ] . c o l e g ] ;
} catch ( java . lang . ArrayIndexOutOfBoundsException e4 ){}}∗/
// Imprime e l cos to de l a a s i g n a c i n
//System . out . p r i n t l n (” Costo Asig ”+costo ) ;
}}
Archivo Cupo.java/∗∗ Created on 20−sep−2005
∗∗ TODO To change the template f o r t h i s generated f i l e go to
∗ Window − Pre f e r enc e s − Java − Code Sty l e − Code Templates
∗/
/∗∗∗ @author Pablo Andr s Maya Duque
∗∗/
pub l i c c l a s s Cupo {//Crea v a r i a b l e s para c la s e , e s tud iant e as ignado y pr e c i o de l cupo
in t c l a s e ;
i n t e s t a s i g ;
double p r e c i o ;
// Constructor de cupo
pub l i c Cupo( i n t k , i n t Nestud ) {c l a s e=k ;
p r e c i o =0;
e s t a s i g=Nestud+1;
77
}}
Archivo Pendiente.java/∗∗ Created on 21−sep−2005
∗∗ TODO To change the template f o r t h i s generated f i l e go to
∗ Window − Pre f e r enc e s − Java − Code Sty l e − Code Templates
∗/
/∗∗∗ @author Pablo Andr s Maya D.
∗/
/∗∗ Crea ob j e t o s para i d e n t i f i c a r e s tud i an t e s en l a l i s t a de pend ientes . ∗/
pub l i c c l a s s Pendiente {i n t r e f e s t ;
pub l i c Pendiente ( i n t k ) {r e f e s t=k ;
}}
A.3. Ejemplo Archivo de datos
En el siguiente archivo la primera lınea corresponde al valor de M (constante sufi-
cientemente grande), la segunda lınea indica el numero de instituciones, la tercera
lınea corresponde al numero de estudiantes para asignar, la cuarta lınea corresponde
a las capacidades de cada colegio y las lıneas restante son los beneficios de asignacion
de cada estudiante en cada colegio, correspondiendo cada lınea a un estudiante.
Archivo datos10.txt1000
3
10
3 3 4
11 18 12
6 2 1
5 15 15
10 14 19
17 4 5
3 10 20
18 13 3
12 13 12
14 10 3
5 7 8
78
Apendice B
Implementacion del Algoritmo de Generacion de
Columnas
B.1. Algoritmo de Generacion de Columnas
Archivo AsignacionSinEstab.mos( !∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ASIGNACIN
Implementacion de esquema de Generacion de Columnas para r e s o l v e r
e l problema de as i gnac i on de e s tud i an t e s
− Genera e l Problema Maestro Rest ing ido como la s o l u c i on de l
problema Knapsack de cada c o l e g i o y una columna a r t i f i c i a l de
unos con b e n e f i c i o s −M
− Genera l a columna con Bene f i c i o reduc ido mas pos i t i vo ,
Reso lv iendo l o s m problemas Knapsack
− Para r e s o l v e r e l problema au x i l i a r usa un a lgor i tmo que
exp lota l a e s t ruc tu ra p a r t i c u l a r de l a i n s t an c i a
− Borra columnas con Bene f i c i o reduc ido negat ivo cada c i e r t o
n mero
de i t e r a c i o n e s ( parametro l e i d o de l arch ivo de datos )
− Calcula l a cota de l problema dual que se deduce en e l a r t i c u l o
de Save l sbergh
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ! )
model GAP
uses ”mmxprs” , ”mmsystem” ! Uses the Xpress−MP Optimizer
parameters
i npu tF i l e =”./Datos60 . dat”
end−parameters
i n i c i o := gett ime
forward func t i on getProblemStatus ( s t a tu s : i n t e g e r ) : s t r i n g
forward procedure a s i g In i c i a lKP
forward procedure column gen
forward procedure e l im i n a r c o l
forward func t i on knapsackI (k : i n t e g e r ) : r e a l
forward func t i on knapsack (k : in t ege r , mejor : r ea l ,
FoKp : array ( range ) o f r e a l ) : r e a l
forward procedure Show co l ac tua l
forward procedure Show so l ac tua l ( ob jva l : r e a l )
79
de c l a r a t i o n s
Nestud : i n t e g e r ! N mero de e s tud i an t e s
Ncoleg : i n t e g e r ! N mero de c o l e g i o s
paramcolum : i n t e g e r
end−de c l a r a t i o n s
i n i t i a l i z a t i o n s from inputF i l e
Nestud Ncoleg paramcolum
end− i n i t i a l i z a t i o n s
d e c l a r a t i o n s
! Conjuntos de Estudiantes y Co leg io s
ESTUDIANTES = 1 . . Nestud ! Conjunto de e s tud i an t e s
COLEGIOS = 1 . . Ncoleg ! Conjunto de c o l e g i o s
! As ignac iones Po s ib l e s
APosib : range ! As ignac iones p o s i b l e s
! To l e racncc ia
EPS = 1e−6
! Datos para l a a s i gnac i on ( Dis tanc ias , B en e f i c i o s y capac idades )
! Zero t o l e r an c e
Di s tanc ia : array (ESTUDIANTES,COLEGIOS) o f r e a l
! Capacidad de cada c o l e g i o
Capacidad : array (COLEGIOS) o f i n t e g e r
! Bene f i c i o de cada as i gnac i on po s i b l e
Bene f i c i o : array (APosib ) o f r e a l
! Matr ices de l problema
! As ignac iones ba s i c a s
Asignac : array (ESTUDIANTES, APosib ) o f r e a l
! Matriz de r e s t r i c c i o n e s de convexidad
Convex : array (COLEGIOS, APosib ) o f i n t e g e r
! Var iab le de Dec i s ion ( a s i gnac i one s )
a s i g : array (APosib ) o f mpvar
s o l u c i on : array (APosib ) o f r e a l
Bene f i c i o r ed : array (APosib ) o f r e a l
! R e s t r i c c i o n e s de l problema
! Re s t r i c c i on de a s i gnac i on de e s tud i an t e s
Rest : array (ESTUDIANTES) o f l i n c t r
! R e s t r i c c i n e s de convexidad
Rcoleg : array (COLEGIOS) o f l i n c t r
! Funcion ob j e t i v o de l problema gene ra l
Benef ic iomax : l i n c t r
! Funcion ob je t ivo , r e s t r i c c i o n e s y v a r i a b l e s de l o s KP
Rknaps : array (COLEGIOS) o f l i n c t r
Objknaps : array (COLEGIOS) o f l i n c t r
x : array (ESTUDIANTES) o f mpvar
y : array (ESTUDIANTES) o f i n t e g e r
BeneficioKP : array (ESTUDIANTES, COLEGIOS) o f r e a l
! Elementos para con t r o l
mejor : r e a l
i t e r a c i o n : i n t e g e r
conteo : i n t e g e r
ind i cador : r e a l
M: r e a l
numcolumnas : i n t e g e r
borradoco l : array ( 1 . . paramcolum ) o f i n t e g e r
end−de c l a r a t i o n s
i n i t i a l i z a t i o n s from inputF i l e
80
Capacidad Dis tanc ia
end− i n i t i a l i z a t i o n s
Nasig :=0
! Procedimiento que genera l a base i n i c i a l
f o r a l l ( j in ESTUDIANTES) x ( j ) <=1
as i g In i c i a lKP
!DEFINICION DEL PROBLEMA DE ASIGNACION
! Re s t r i c c i on de a s i gnac i on de e s tud i an t e s
f o r a l l ( j in ESTUDIANTES)
Rest ( j ):=sum( i in 1 . . Nasig ) Asignac ( j , i )∗ a s i g ( i )<=1
! Re s t r i c c i on de convexidad
f o r a l l ( i in COLEGIOS)
Rcoleg ( i ):=sum(k in 1 . . Nasig )Convex ( i , k )∗ a s i g (k)<=1
! Funcion Objet ivo
Benef ic iomax :=sum( i in 1 . . Nasig ) ( Bene f i c i o ( i )∗ a s i g ( i ) )
!PROCEDIMIENTO para generac ion de columnas
column gen
! Resuelve e l problema con r e s t r i c c i o n e s de i n t e g r a l i d ad
! Resuelva l a Re la jac i on L inea l
maximize (XPRS LIN , Benef ic iomax )
! Imprime l a s o l u c i on Actual
Show so l ac tua l ( g e t ob jva l )
wr i t e l n (” Status : ” , getProblemStatus ( ge tprobs ta t ) ) ;
! Show co l ac tua l
f i n a l := gett ime
wr i t e l n (”Tiempo e j e c u c i n ”+( f i n a l−i n i c i o )+” seg ”)
!−−−−−−−−−−−DEFINICIN DE PROCEDIMIENTOS Y FUNCIONES−−−−−−−−−−−−
!∗∗∗∗∗∗∗∗∗∗∗∗∗ a s i g In i c i a lKP ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗! Procedimiento para generar l a base i n i c i a l SOLUCIONA PROBLEMAS
!KNAPSACK
! 1 . Genera l a s o l u c i on de l problema Knapsack de cada co l eg i o ,
! ad i c i ona columna y e l Bene f i c i o
! 2 . Adiciona una columna a u x i l i a r con Bene f i c i o muy grande M por
! cada e s tud iante ( Deberia generar una so l a columna )
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗procedure a s i g In i c i a lKP
! Genera columna Dummy y su Bene f i c i o
Nasig+=1
c r ea t e ( a s i g ( Nasig ) )
a s i g ( Nasig ) i s b i n a r y
f o r a l l ( j in ESTUDIANTES)do
M+=−max( i in COLEGIOS) Di s tanc ia ( j , i )
Bene f i c i o ( Nasig ):=M
Asignac ( j , Nasig ):=1
end−do
! Genera Columnas asoc i adas a l o s m Coleg io s
f o r a l l ( i in COLEGIOS)do
! Crea l a s v a r i a b l e s de d e c i s i n para l a s columnas i n i c i a l e s
Nasig+=1
c r ea t e ( a s i g ( Nasig ) )
a s i g ( Nasig ) i s b i n a r y
81
! Resuelve e l problema Knapsack para cada c o l e g i o
Bene f i c i o ( Nasig ):= knapsackI ( i )
!Arma la primera so l u c i on f a c t i b l e
f o r a l l ( j in ESTUDIANTES) Asignac ( j , Nasig ):= g e t s o l ( x ( j ) )
Rknaps ( i ):=0
Objknaps ( i ):=0
! Genera Primera matriz de l a s r e s t r i c c i o n e s de Convexidad
Convex ( i , Nasig ):=1
end−do
numcolumnas:=Nasig
end−procedure
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗! GENERACION DE COLUMNAS:
! Resuelve e l PL y guarda l a base
! Obtiene l o s va l o r e s de l a s o l u c i on
! Genera una nueva columna ( a s i gnac i on po s i b l e )
! carga e l problema modi f icado y l a base guardada
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗procedure column gen
d e c l a r a t i o n s
dualestud : array (ESTUDIANTES) o f r e a l
dua l co l eg : array (COLEGIOS) o f r e a l
Mdualestud : array (ESTUDIANTES) o f r e a l
Mdualcoleg : array (COLEGIOS) o f r e a l
FoKp : array (COLEGIOS) o f r e a l
zbes t : array (COLEGIOS) o f r e a l
xbest : array (ESTUDIANTES) o f i n t e g e r
ob jva l : r e a l
FOlag : r e a l
MFOlag : r e a l
ind i cador : i n t e g e r
indco l eg : i n t e g e r
end−de c l a r a t i o n s
! Def ine parametros de l opt imizador
de f cut :=getparam (”XPRS CUTSTRATEGY”)
setparam (”XPRS CUTSTRATEGY” , 0)
setparam (”XPRS PRESOLVE” , 0)
setparam (” z e r o t o l ” , EPS)
i t e r a c i o n :=1
conteo :=1
MFOlag:=M∗M! Numero de columnas antes de i n i c i a r
numcolumnas:=Nasig
!CICLO DE GENERACIN DE COLUMNAS
whi le ( t rue ) do
maximize (XPRS LIN , Benef ic iomax ) ! Resuelve l a RL
saveba s i s (1 ) ! Guarda l a base ac tua l
ob jva l := ge tob jva l ! obt i ene e l va l o r de l a s o l u c i on
! Obtiene va l o r e s de l a s o l u c i on ac tua l
f o r a l l ( k in 1 . . numcolumnas ) s o l u c i on (k):= g e t s o l ( a s i g (k ) )
f o r a l l ( k in 1 . . numcolumnas ) Bene f i c i o r ed (k):= g e t r c o s t ( a s i g ( k ) )
f o r a l l ( j in ESTUDIANTES) dualestud ( j ):= getdua l ( Rest ( j ) )
f o r a l l ( i in COLEGIOS) dua l co l eg ( i ):= getdua l ( Rcoleg ( i ) )
! Genera matriz de Bene f i c i o para l a generac ion de columnas
f o r a l l ( j in ESTUDIANTES, i in COLEGIOS)
82
BeneficioKP ( j , i ):= Dis tanc ia ( j , i )−dualestud ( j )
! Chequea cond ic ion para e l imnar columnas
i f conteo>paramcolum then
conteo :=1
e l im i n a r c o l
end− i f
!GENERA COLUMNA con mayor cos to reduc ido ( s i e x i s t e )
mejor :=0
FOlag:=0
! Busca e l c o l e g i o con so l u c i on Knapsack Mejor
f o r a l l ( k in COLEGIOS) do
zbes t ( k):= knapsack (k , mejor ,FoKp)−getdua l ( Rcoleg (k ) )
FOlag+=(zbes t ( k)+getdua l ( Rcoleg (k ) ) )
i f zbes t ( k)>mejor then
mejor := zbes t ( k )
indco l eg :=k
f o r a l l ( j in ESTUDIANTES)
xbest ( j ):=y ( j )
end− i f
end−do
! Calcula va lo r de l a r e l a j a c i o n lagrang iana
f o r a l l ( j in ESTUDIANTES)FOlag+=getdua l ( Rest ( j ) )
i f FOlag<MFOlag then
MFOlag:=FOlag
f o r a l l ( j in ESTUDIANTES) Mdualestud ( j ):= dualestud ( j )
f o r a l l ( i in COLEGIOS) Mdualcoleg ( i ):= dua l co l eg ( i )
end− i f
w r i t e l n (” ITERACION: ”+i t e r a c i o n+” ; So luc ion RLineal ; ”+
ge tob jva l+” ; S o l u c i n RLagrang ; ”+FOlag+
” ; Mejor Re la j Legran ; ”+MFOlag )
i f mejor<=0 then
wr i t e l n (”No se encontro una columna para ad i c i ona r ”)
break
e l s e
! Crea l a nueva va r i ab l e para l a a s i gnac i on que se ad i c i ona
i f ( conteo>g e t s i z e ( borradoco l ) or borradoco l ( conteo )=0) then
numcolumnas+=1
Nasig :=numcolumnas
c r ea t e ( a s i g ( Nasig ) )
a s i g ( Nasig ) i s b i n a r y
e l s e
Nasig := borradoco l ( conteo )
end− i f
!ACTUALIZA EL PROBLEMA ADICIONANDO COLUMNA
! Crea l a nueva columna y ad i c i ona a r e s t r i c c i o n e s
f o r a l l ( j in ESTUDIANTES)do
Asignac ( j , Nasig ):= xbest ( j )
i f xbest ( j )>0 then
Rest ( j)+=Asignac ( j , Nasig )∗ a s i g ( Nasig )
end− i f
end−do
Convex ( indco leg , Nasig ):=1
Rcoleg ( indco l eg)+=Convex ( indco leg , Nasig )∗ a s i g ( Nasig )
Bene f i c i o ( Nasig ):=sum( j in ESTUDIANTES)
Asignac ( j , Nasig )∗ Distanc ia ( j , i ndco l eg )
Benef ic iomax+=Bene f i c i o ( Nasig )∗ a s i g ( Nasig )
83
! carga nuevamente e l problema y l a base ac tua l
loadprob ( Benef ic iomax )
l o adba s i s (1 )
end− i f
i t e r a c i o n+=1
conteo+=1
end−do ! Cier ra e l c i c l o de generar columnas
end−procedure
( !∗∗∗∗∗∗∗∗∗ ELIMINA COLUMNAS ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗Este procedimiento Elimina cada c i e r t o numero de i t e r a c i o n e s
una cant idad de columnas con cos to reduc ido negat ivo . Para
e l l o i n i c i a l a busqueda de l a s columnas q se e l iminan desde
una po s i c i on a l e a t o r i a en e l a r r e g l o de columnas
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗procedure e l im i n a r c o l
borradas :=0
! Ubica punto de i n i c i o de l a busqueda
a l e a t o r i o 2 := in t e g e r ( g e t s i z e (COLEGIOS)+1+
round ( ( numcolumnas∗random)+ 0 . 5 ) )
! Borra l a s columnas con cos to reduc ido negat ivo que se encuentran
! en una po s i c i on supe r i o r a l punto de i n i c i o .
f o r a l l ( k in g e t s i z e (COLEGIOS ) . . numcolumnas | k>a l e a t o r i o 2 ) do
i f Bene f i c i o r ed (k)<0 then
borradas+=1
i f borradas<=paramcolum then
borradoco l ( borradas ):=k
! Elimina de l a FO y Re s t r i c c i o n e s
Beneficiomax−=as i g (k )∗ Bene f i c i o (k )
Bene f i c i o (k):=0
f o r a l l ( j in ESTUDIANTES | Asignac ( j , k)>0)do
Rest ( j )−=Asignac ( j , k )∗ a s i g (k )
Asignac ( j , k ):=0
end−do
f o r a l l ( i in COLEGIOS |Convex ( i , k)>0) do
Rcoleg ( i )−=Convex ( i , k )∗ a s i g (k )
Convex ( i , k ):=0
end−do
e l s e
break
end− i f
end− i f
end−do
! Borra l a s columnas con cos to reduc ido negat ivo que se encuentran
! en una po s i c i on i n f e r i o r a l punto de i n i c i o .
i f borradas<=paramcolum then
k:= g e t s i z e (COLEGIOS)+1
whi le (k<a l e a t o r i o 2 ) do
k+=1
i f Bene f i c i o r ed (k)<0 then
borradas+=1
i f borradas<=paramcolum then
borradoco l ( borradas ):=k
! Elimina de l a FO y Re s t r i c c i o n e s
Beneficiomax−=as i g (k )∗ Bene f i c i o (k )
Bene f i c i o (k):=0
f o r a l l ( j in ESTUDIANTES | Asignac ( j , k)>0)do
Rest ( j )−=Asignac ( j , k )∗ a s i g (k )
Asignac ( j , k ):=0
end−do
f o r a l l ( i in COLEGIOS |Convex ( i , k)>0) do
84
Rcoleg ( i )−=Convex ( i , k )∗ a s i g (k )
Convex ( i , k ):=0
end−do
e l s e
break
end− i f
end− i f
end−do
end− i f
f o r a l l ( r in borradas +1. . paramcolum ) borradoco l ( r ):=0
end−procedure
( !∗∗∗∗∗∗∗∗∗ RESUELVE KNAPSACK INICIALES ∗∗∗∗∗∗∗Func i n que r e su e l v e l o s knapsack i n i c i a l e s para c r ea r
e l problema maestro r e s t r i n g i d o i n i c i a l
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗f unc t i on knapsackI ( k : i n t e g e r ) : r e a l
Rknaps (k):=sum( j in ESTUDIANTES)x ( j )=Capacidad (k )
Objknaps (k):=sum( j in ESTUDIANTES) Dis tanc ia ( j , k )∗x ( j )
! f o r a l l ( j in ESTUDIANTES)x ( j )<=1
maximize ( Objknaps (k ) )
returned := ge tob jva l
end−f unc t i on
( !∗∗∗∗∗∗∗∗∗ RESUELVE KNAPSACK en GEN COL ∗∗∗∗∗∗∗Func i n que r e su e l v e l o s knapsack en cada i t e r a c i o n de
l a g e n e r a c i n de columnas , que permiten determinar l a
columna a ad i c i ona r
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗f unc t i on knapsack (k : in t ege r , mejor : r ea l ,
FoKp : array ( range ) o f r e a l ) : r e a l
f o r a l l ( j in ESTUDIANTES)y ( j ):=0
FoKp(k):=0
f o r a l l ( i in 1 . . Capacidad (k ) ) do
mayor:=M
asignado :=0
f o r a l l ( j in ESTUDIANTES)do
i f BeneficioKP ( j , k)>mayor then
mayor:=BeneficioKP ( j , k )
as ignado := j
end− i f
end−do
y ( as ignado ):=1
FoKp(k)+=BeneficioKP ( asignado , k )
BeneficioKP ( asignado , k):=M
end−do
returned :=FoKp(k )
end−f unc t i on
( !∗∗∗∗∗∗∗∗∗ INDICA estado de l problema ∗∗∗∗∗∗∗func ion que ind i c a s i e l estado en e l que f i n a l i z l a
o p t im i z a c i n
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗f unc t i on getProblemStatus ( s t a tu s : i n t e g e r ) : s t r i n g
case s t a tu s o f
85
XPRS OPT: returned := ”Solved to opt ima l i ty . ”
XPRS UNF: returned := ”Unf in i shed . ”
XPRS INF : returned := ” I n f e a s i b l e . ”
XPRS UNB: returned := ”Unbounded . ”
e l s e returned := ”Unknown s ta tu s . ”
end−case
end−f unc t i on
( !∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ IMPRIME COLUMNAS ACTUALES ∗∗∗∗∗∗∗∗∗∗∗Procedimiento para imprimir columnas Actuales
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
procedure Show co l ac tua l
wr i t e ( s t r fmt (” Bene f i c i o ” , 4 ) )
f o r a l l ( i in 1 . . numcolumnas ) wr i t e ( s t r fmt ( i , 6 ) )
wr i t e l n
wr i t e ( s t r fmt (” Bene f i c i o ” , 4 ) )
f o r a l l ( i in 1 . . numcolumnas ) wr i t e ( s t r fmt ( Bene f i c i o ( i ) , 6 ) )
wr i t e l n
f o r a l l ( j in ESTUDIANTES) do
wr i t e ( s t r fmt (” ” ,4 ) )
f o r a l l ( i in 1 . . numcolumnas ) wr i t e ( s t r fmt ( Asignac ( j , i ) , 6 ) )
wr i t e l n
end−do
wr i t e l n ( s t r fmt (” Convexidad ” ,4 ) )
f o r a l l ( j in COLEGIOS) do
wr i t e ( s t r fmt (” ” ,4 ) )
f o r a l l ( i in 1 . . numcolumnas ) wr i t e ( s t r fmt (Convex ( j , i ) , 6 ) )
wr i t e l n
end−do
end−procedure
( !∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ IMPRIME Soluc ion Actual ∗∗∗∗∗∗∗∗∗∗∗Procedimiento para imprimir l a s o l u c i on ac tua l
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗!
procedure Show so l ac tua l ( ob jva l : r e a l )
wr i t e l n
! Imprime va lo r de l a s o l u c i on Actual
wr i t e l n (” ITERACIN ”+i t e r a c i o n+” So luc ion Actual ”+ob jva l )
wr i t e ( s t r fmt (” Asig ” , 4 ) )
! Imprime l a s a i s gnac i one s s e l e c c i onada s y dual por e s tud iante
f o r a l l ( k in 1 . . numcolumnas ) do
i f s o l u c i on (k)>0 then
wr i t e ( s t r fmt (k , 4 ) )
end− i f
end−do
wr i t e l n
wr i t e ( s t r fmt (” Valor ” , 4 ) )
! Imprime l a s a i sgnacones s e l e c c i onada s y dual por e s tud iante
f o r a l l ( k in 1 . . numcolumnas ) do
i f s o l u c i on (k)>0 then
wr i t e ( s t r fmt ( s o l u c i on (k ) , 4 ) )
end− i f
end−do
! imprime c o l e g i o de l a Asignacion
wr i t e l n
wr i t e ( s t r fmt (” Coleg ” ,4 ) )
! Imprime l a s a i sgnacones s e l e c c i onada s y dual por e s tud iante
86
f o r a l l ( k in 1 . . numcolumnas ) do
i f s o l u c i on (k)>0 then
f o r a l l ( i in COLEGIOS)do
i f Convex ( i , k)>0 then
wr i t e ( s t r fmt ( i , 4 ) )
end− i f
end−do
end− i f
end−do
wr i t e ( s t r fmt (” Dual ” , 4 ) )
wr i t e l n
! Imprime Bene f i c i o de l a a s i gnac i on
wr i t e ( s t r fmt (” ” ,4 ) )
f o r a l l ( k in 1 . . numcolumnas ) do
i f s o l u c i on (k)>0 then
wr i t e ( s t r fmt ( Bene f i c i o ( k ) , 4 ) )
end− i f
end−do
wr i t e l n
f o r a l l ( j in ESTUDIANTES)do
wr i t e ( s t r fmt (” ” ,4 ) )
f o r a l l ( k in 1 . . numcolumnas ) do
i f s o l u c i on (k)>0 then
wr i t e ( s t r fmt ( Asignac ( j , k ) , 4 ) )
end− i f
end−do
wr i t e (” ”+st r fmt ( getdua l ( Rest ( j ) ) , 4 ) )
wr i t e l n
end−do
! Imprime Dual de l a r e s t r i c c i o n de c o l e g i o
wr i t e ( s t r fmt (” Coleg ” ,4 ) )
f o r a l l ( i in COLEGIOS)do
wr i t e ( s t r fmt ( i , 4 ) )
end−do
wr i t e l n
wr i t e ( s t r fmt (” ” ,4 ) )
f o r a l l ( i in COLEGIOS)do
wr i t e ( s t r fmt ( getdua l ( Rcoleg ( i ) ) , 4 ) )
end−do
wr i t e l n
end−procedure
end−model
B.2. Algoritmo de Generacion de Columnas con Estabiliza-cion
Archivo AsignacionConEstab.mos( !∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ASIGNACIN
Implementacion de esquema de Generacion de Columnas para r e s o l v e r
e l problema de as i gnac i on de e s tud i an t e s
− Genera e l Problema Maestro Rest ing ido como la s o l u c i on de l
problema Knapsack de cada c o l e g i o y una columna a r t i f i c i a l de
unos con b e n e f i c i o s −M
− Genera l a columna con Bene f i c i o reduc ido mas pos i t i vo ,
87
Resolv iendo l o s m problemas Knapsack
− Para r e s o l v e r e l problema au x i l i a r usa un a lgor i tmo que
exp lota l a e s t ruc tu ra p a r t i c u l a r de l a i n s t an c i a
− Borra columnas con Bene f i c i o reduc ido negat ivo cada c i e r t o
n mero
de i t e r a c i o n e s ( parametro l e i d o de l arch ivo de datos )
− Calcula l a cota de l problema dual que se deduce en e l a r t i c u l o
de Save l sbergh
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ! )
model GAP
uses ”mmxprs” , ”mmsystem” ! Uses the Xpress−MP Optimizer
parameters
i npu tF i l e =”./Datos60 . dat”
end−parameters
i n i c i o := gett ime
forward func t i on getProblemStatus ( s t a tu s : i n t e g e r ) : s t r i n g
forward procedure a s i g In i c i a lKP
forward procedure column gen
forward procedure e l im i n a r c o l
forward func t i on knapsackI (k : i n t e g e r ) : r e a l
forward func t i on knapsack (k : in t ege r , mejor : r ea l ,
FoKp : array ( range ) o f r e a l ) : r e a l
forward procedure Show co l ac tua l
forward procedure Show so l ac tua l ( ob jva l : r e a l )
d e c l a r a t i o n s
Nestud : i n t e g e r ! N mero de e s tud i an t e s
Ncoleg : i n t e g e r ! N mero de c o l e g i o s
paramcolum : i n t e g e r ! N mero de i t e r a c i o n e s ent re borrados
end−de c l a r a t i o n s
i n i t i a l i z a t i o n s from inputF i l e
Nestud Ncoleg paramcolum
end− i n i t i a l i z a t i o n s
d e c l a r a t i o n s
! Conjuntos de Estudiantes y Co leg io s
ESTUDIANTES = 1 . . Nestud ! Conjunto de e s tud i an t e s
COLEGIOS = 1 . . Ncoleg ! Conjunto de c o l e g i o s
APosib : range ! As ignac iones p o s i b l e s
! To l e racncc ia
EPS = 1e−6
! Datos para l a a s i gnac i on ( Dis tanc ias , Benefs y capac idades )
! D i s tanc ia de e s tud iante a c o l e g i o
Di s tanc ia : array (ESTUDIANTES,COLEGIOS) o f r e a l
! Capacidad de cada c o l e g i o
Capacidad : array (COLEGIOS) o f i n t e g e r
! Benef de cada as i gnac i on po s i b l e
Benef : array (APosib ) o f r e a l
! P e n a l i z a c i n para r e s t e s tud i an t e s
pena l i zEs t : array (ESTUDIANTES) o f r e a l
! P e n a l i z a c i n para r e s t c o l e g i o s
pena l i zCo l : array (COLEGIOS) o f r e a l
88
! Matr ices de l problema
! As ignac iones ba s i c a s
Asignac : array (ESTUDIANTES, APosib ) o f r e a l
! Matriz de r e s t r i c c i o n e s de convexidad
Convex : array (COLEGIOS, APosib ) o f i n t e g e r
! Var iab l e s de Dec i s ion
a s i g : array (APosib ) o f mpvar
! Var iab l e s para l a e s t a b i l i z a c i n
! Var iab l e s de holgura para r e s t e s tud i an t e s
ho lge : array (ESTUDIANTES) o f mpvar
! Var iab l e s de holgura para r e s t c o l e g i o s
ho lgc : array (COLEGIOS) o f mpvar
! Var iab l e s de exceso para r e s t exceso
excese : array (ESTUDIANTES) o f mpvar
! Var iab l e s de exceso para r e s t exceso
excesc : array (COLEGIOS) o f mpvar
s o l u c i on : array (APosib ) o f r e a l
Benefred : array (APosib ) o f r e a l
! R e s t r i c c i o n e s de l problema
! Re s t r i c c i on de a s i gnac i on de e s tud i an t e s
Rest : array (ESTUDIANTES) o f l i n c t r
! R e s t r i c c i n e s de convexidad
Rcoleg : array (COLEGIOS) o f l i n c t r
! R e s t r i c c i o n e s v a r i a b l e s de holgura y exceso
! Re s t r i c c i on sobre vb l e s de holgura para r e s t e s tud i an t e s
Rholge : array (ESTUDIANTES) o f l i n c t r
! Re s t r i c c i on sobre vb l e s de holgura para r e s t c o l e g i o s
Rholgc : array (COLEGIOS) o f l i n c t r
! Re s t r i c c i on sobre vb l e s de exceso para r e s t e s tud i an t e s
Rexcese : array (ESTUDIANTES) o f l i n c t r
! Re s t r i c c i on sobre vb l e s de exceso para r e s t exceso
Rexcesc : array (COLEGIOS) o f l i n c t r
! Funcion ob j e t i v o de l problema gene ra l
Benefmax : l i n c t r
! Funcion ob je t ivo , r e s t r i c c i o n e s y v a r i a b l e s de l o s KP
Rknaps : array (COLEGIOS) o f l i n c t r
Objknaps : array (COLEGIOS) o f l i n c t r
x : array (ESTUDIANTES) o f mpvar
y : array (ESTUDIANTES) o f i n t e g e r
BenefKP : array (ESTUDIANTES, COLEGIOS) o f r e a l
! Elementos para con t r o l
ep s i l onp : r e a l
ep s i l onn : r e a l
mejor : r e a l
i t e r a c i o n : i n t e g e r
conteo : i n t e g e r
ind i cador : r e a l
M: r e a l
numcolumnas : i n t e g e r
borradoco l : array ( 1 . . paramcolum ) o f i n t e g e r
end−de c l a r a t i o n s
i n i t i a l i z a t i o n s from inputF i l e
Capacidad Dis tanc ia
end− i n i t i a l i z a t i o n s
Nasig :=0
89
ep s i l onp :=0.1
eps i l onn :=0.1
!PROCEDIMIENTO PARA GENERAR BASE INICIAL
f o r a l l ( j in ESTUDIANTES) x ( j ) <=1
as i g In i c i a lKP
!DEFINICION DEL PROBLEMA DE ASIGNACION
! Re s t r i c c i on de a s i gnac i on de e s tud i an t e s
f o r a l l ( j in ESTUDIANTES)
Rest ( j ):=sum( i in 1 . . Nasig ) Asignac ( j , i )∗ a s i g ( i )<=1
! Re s t r i c c i on de convexidad
f o r a l l ( i in COLEGIOS)
Rcoleg ( i ):=sum(k in 1 . . Nasig )Convex ( i , k )∗ a s i g (k)<=1
! Funcion Objet ivo
Benefmax:=sum( i in 1 . . Nasig ) ( Benef ( i )∗ a s i g ( i ) )
!PROCEDIMIENTO para generac ion de columnas
column gen
! Resuelve e l problema con r e s t r i c c i o n e s de i n t e g r a l i d ad
maximize (Benefmax )
! Imprime l a s o l u c i on Actual
Show so l ac tua l ( g e t ob jva l )
wr i t e l n (” Status : ” , getProblemStatus ( ge tprobs ta t ) ) ;
f i n a l := gett ime
wr i t e l n (”Tiempo e j e c u c i n ”+( f i n a l−i n i c i o )+” seg ”)
!−−−−−−−−−−−DEFINICIN DE PROCEDIMIENTOS Y FUNCIONES−−−−−−−−−−−−
!∗∗∗∗∗∗∗∗∗∗∗∗∗ a s i g In i c i a lKP ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗! Procedimiento para generar l a base i n i c i a l SOLUCIONA PROBLEMAS
!KNAPSACK
! 1 . Genera l a s o l u c i on de l problema Knapsack de cada co l eg i o ,
! ad i c i ona columna y e l Bene f i c i o
! 2 . Adiciona una columna a u x i l i a r con Bene f i c i o muy grande M por
! cada e s tud iante ( Deberia generar una so l a columna )
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗procedure a s i g In i c i a lKP
! Genera columnas Dummy y su Benef
Nasig+=1
c r ea t e ( a s i g ( Nasig ) )
a s i g ( Nasig ) i s b i n a r y
f o r a l l ( j in ESTUDIANTES)do
M+=−max( i in COLEGIOS) Di s tanc ia ( j , i )
Benef ( Nasig ):=M
Asignac ( j , Nasig ):=1
end−do
f o r a l l ( i in COLEGIOS)do
! Crea l a s v a r i a b l e s de d e c i s i n para l a s columnas i n i c i a l e s
Nasig+=1
c r ea t e ( a s i g ( Nasig ) )
a s i g ( Nasig ) i s b i n a r y
! Resuelve e l problema Knapsack para cada c o l e g i o
Benef ( Nasig ):= knapsackI ( i )
!Arma la primera so l u c i on f a c t i b l e
f o r a l l ( j in ESTUDIANTES) Asignac ( j , Nasig ):= g e t s o l ( x ( j ) )
Rknaps ( i ):=0
Objknaps ( i ):=0
! Genera Primera matriz de l a s r e s t r i c c i o n e s de Convexidad
90
Convex ( i , Nasig ):=1
end−do
numcolumnas:=Nasig
end−procedure
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗! GENERACION DE COLUMNAS:
! Resuelve e l PL y guarda l a base
! Obtiene l o s va l o r e s de l a s o l u c i on
! Genera una nueva columna ( a s i gnac i on po s i b l e )
! carga e l problema modi f icado y l a base guardada
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗procedure column gen
d e c l a r a t i o n s
dualestud : array (ESTUDIANTES) o f r e a l
dua l co l eg : array (COLEGIOS) o f r e a l
! Mdualestud : array (ESTUDIANTES) o f r e a l
! Mdualcoleg : array (COLEGIOS) o f r e a l
FoKp : array (COLEGIOS) o f r e a l
zbes t : array (COLEGIOS) o f r e a l
xbest : array (ESTUDIANTES) o f i n t e g e r
ob jva l : r e a l
FOP: r e a l
FOlag : r e a l
MFOlag : r e a l
ind i cador : i n t e g e r
indco l eg : i n t e g e r
f a c t o r : r e a l
end−de c l a r a t i o n s
! Def ine parametros de l opt imizador
de f cut :=getparam (”XPRS CUTSTRATEGY”)
setparam (”XPRS CUTSTRATEGY” , 0)
setparam (”XPRS PRESOLVE” , 0)
setparam (” z e r o t o l ” , EPS)
! I n i c i a l i z a c i o n e s
i t e r a c i o n :=1
conteo :=1
MFOlag:=M∗Mfac t o r :=0.01
! Numero de columnas antes de i n i c i a r
numcolumnas:=Nasig
! Rea l i za l a primera co r r i da para a j u s t a r va l o r e s
maximize (XPRS LIN , Benefmax )
! Obtiene va l o r e s de l a s o l u c i on ac tua l
f o r a l l ( j in ESTUDIANTES)do
pena l i zEs t ( j ):= getdua l ( Rest ( j ) )
Benefmax+=(−pena l i zEs t ( j )∗ holge ( j )−pena l i zEs t ( j )∗ excese ( j ) )
end−do
! Re s t r i c c i o n e s de e s t a b i l i z a c i n
f o r a l l ( j in ESTUDIANTES)do
Rest ( j )+=(holge ( j )−excese ( j ) )
Rholge ( j ):= holge ( j )−eps i lonp <=0
Rexcese ( j ):= excese ( j )−eps i lonn <=0
end−do
91
! C i c lo de generac ion de columnas
whi le ( t rue ) do
maximize (XPRS LIN , Benefmax ) ! Resuelva l a RL
saveba s i s (1 ) ! Guarda l a base ac tua l
ob jva l := ge tob jva l ! Obtiene e l va lo r de l a s o l u c i on
! Obtiene va l o r e s de l a s o l u c i on ac tua l
f o r a l l ( k in 1 . . numcolumnas ) s o l u c i on (k):= g e t s o l ( a s i g (k ) )
f o r a l l ( k in 1 . . numcolumnas ) Benefred (k):= g e t r c o s t ( a s i g (k ) )
f o r a l l ( j in ESTUDIANTES) dualestud ( j ):= getdua l ( Rest ( j ) )
f o r a l l ( i in COLEGIOS) dua l co l eg ( i ):= getdua l ( Rcoleg ( i ) )
! Genera matriz de Benef para l a generac ion de columnas
f o r a l l ( j in ESTUDIANTES, i in COLEGIOS)
BenefKP( j , i ):= Dis tanc ia ( j , i )−dualestud ( j )
! c on t r o l de l numero de i t e r a c i o n e s ent re borrados
i f conteo>paramcolum then
conteo :=1
! Actua l i za Valores de ep s i l o n
f o r a l l ( j in ESTUDIANTES)do
Rholge ( j)+=eps i l onp
Rexcese ( j)+=eps i l onn
end−do
i f eps i lonp−f a c to r <0 then
eps i l onp :=0
e l s e
ep s i l onp+=−f a c t o r
end− i f
i f eps i lonn−f a c to r <0 then
eps i l onn :=0
e l s e
ep s i l onn+=−f a c t o r
end− i f
f o r a l l ( j in ESTUDIANTES)do
Rholge ( j)+=−ep s i l onp
Rexcese ( j)+=−ep s i l onn
end−do
! Ejecuta e l procedimiento para e l im ina r columnas
e l im i n a r c o l
end− i f
!GENERA COLUMNA con mayor cos to reducido , po s i t i vo , s i e x i s t e
mejor :=0
FOlag:=0
f o r a l l ( k in COLEGIOS) do
zbes t ( k):= knapsack (k , mejor ,FoKp)−getdua l ( Rcoleg (k ) )
FOlag+=(zbes t ( k)+getdua l ( Rcoleg (k ) ) )
i f zbes t ( k)>mejor then
mejor := zbes t ( k )
indco l eg :=k
f o r a l l ( j in ESTUDIANTES)
xbest ( j ):=y ( j )
end− i f
end−do
! Calcula va lo r de l a r e l a j a c i o n lagrang iana
f o r a l l ( j in ESTUDIANTES)FOlag+=getdua l ( Rest ( j ) )
i f FOlag<MFOlag then
MFOlag:=FOlag
f o r a l l ( j in ESTUDIANTES)do
Benefmax+=−(−pena l i zEs t ( j )∗ holge ( j )−pena l i zEs t ( j )∗ excese ( j ) )
pena l i zEs t ( j ):= dualestud ( j )
pena l i zEs t ( j ):= dualestud ( j )
92
Benefmax+=(−pena l i zEs t ( j )∗ holge ( j )−pena l i zEs t ( j )∗ excese ( j ) )
end−do
end− i f
! Calcula s o l u c i on Primal
FOP:=0
f o r a l l ( k in 1 . . numcolumnas ) do
i f s o l u c i on (k)>0 then
FOP+=Benef ( k )∗ s o l u c i on (k )
end− i f
end−do
wr i t e l n (” ITERACION: ”+i t e r a c i o n+” ; So luc ion RLineal ; ”+
FOP+” ; So luc ion RLestab ; ”+ge tob jva l+” ; S o l u c i n RLagrang ; ”+
FOlag+ ” ; Mejor Re la j Legran ; ”+MFOlag )
! Temina s i e l Gap es menor a una unidad
i f (FOP−MFOlag>0 and FOP−MFOlag<1)then
break
end− i f
i f mejor<=0 then
i f ( ep s i l onp=0 and eps i l onn=0) then
break
e l s e
f o r a l l ( j in ESTUDIANTES)do
Rholge ( j)+=eps i l onp
Rexcese ( j)+=eps i l onn
end−do
! wr i t e l n (”No se encontro una columna para ad i c i ona r ”)
i f eps i lonp−f a c to r <0 then
eps i l onp :=0
e l s e
ep s i l onp+=−f a c t o r
end− i f
i f eps i lonn−f a c to r <0 then
eps i l onn :=0
e l s e
ep s i l onn+=−f a c t o r
end− i f
f o r a l l ( j in ESTUDIANTES)do
Rholge ( j)+=−ep s i l onp
Rexcese ( j)+=−ep s i l onn
end−do
end− i f
e l s e
! c rea l a nueva va r i ab l e
i f ( conteo>g e t s i z e ( borradoco l ) or borradoco l ( conteo )=0) then
numcolumnas+=1
Nasig :=numcolumnas
c r ea t e ( a s i g ( Nasig ) )
a s i g ( Nasig ) i s b i n a r y
e l s e
Nasig := borradoco l ( conteo )
end− i f
! Crea l a nueva columna y ad i c i ona a r e s t r i c c i o n e s
f o r a l l ( j in ESTUDIANTES)do
Asignac ( j , Nasig ):= xbest ( j )
i f xbest ( j )>0 then
Rest ( j)+=Asignac ( j , Nasig )∗ a s i g ( Nasig )
93
end− i f
end−do
Convex ( indco leg , Nasig ):=1
Rcoleg ( indco l eg)+=Convex ( indco leg , Nasig )∗ a s i g ( Nasig )
Benef ( Nasig ):=
sum( j in ESTUDIANTES) Asignac ( j , Nasig )∗ Distanc ia ( j , i ndco l eg )
Benefmax+=Benef ( Nasig )∗ a s i g ( Nasig )
! carga nuevamente e l problema y l a base ac tua l
loadprob (Benefmax )
l o adba s i s (1 )
end− i f
i t e r a c i o n+=1
conteo+=1
end−do
end−procedure
( !∗∗∗∗∗∗∗∗∗ ELIMINA COLUMNAS ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗Este procedimiento Elimina cada c i e r t o numero de i t e r a c i o n e s
una cant idad de columnas con cos to reduc ido negat ivo . Para
e l l o i n i c i a l a busqueda de l a s columnas q se e l iminan desde
una po s i c i on a l e a t o r i a en e l a r r e g l o de columnas
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
procedure e l im i n a r c o l
borradas :=0
! Ubica punto de i n i c i o de l a busqueda
a l e a t o r i o 2 :=
in t e g e r ( g e t s i z e (COLEGIOS)+1+round ( ( numcolumnas∗random )+0.5))
! Borra l a s columnas con cos to reduc ido negat ivo que se encuentran
! en una po s i c i on supe r i o r a l punto de i n i c i o .
f o r a l l ( k in g e t s i z e (COLEGIOS ) . . numcolumnas | k>a l e a t o r i o 2 ) do
i f Benefred (k)<0 then
borradas+=1
i f borradas<=paramcolum then
borradoco l ( borradas ):=k
! Elimina de l a FO y Re s t r i c c i o n e s
Benefmax−=as i g (k )∗ Benef ( k )
Benef ( k):=0
f o r a l l ( j in ESTUDIANTES | Asignac ( j , k)>0)do
Rest ( j )−=Asignac ( j , k )∗ a s i g (k )
Asignac ( j , k ):=0
end−do
f o r a l l ( i in COLEGIOS |Convex ( i , k)>0) do
Rcoleg ( i )−=Convex ( i , k )∗ a s i g (k )
Convex ( i , k ):=0
end−do
e l s e
break
end− i f
end− i f
end−do
! Borra l a s columnas con cos to reduc ido negat ivo que se encuentran
! en una po s i c i on i n f e r i o r a l punto de i n i c i o .
i f borradas<=paramcolum then
k:= g e t s i z e (COLEGIOS)+1
whi le (k<a l e a t o r i o 2 ) do
k+=1
94
i f Benefred (k)<0 then
borradas+=1
i f borradas<=paramcolum then
borradoco l ( borradas ):=k
! Elimina de l a FO y Re s t r i c c i o n e s
Benefmax−=as i g (k )∗ Benef ( k )
Benef ( k):=0
f o r a l l ( j in ESTUDIANTES | Asignac ( j , k)>0)do
Rest ( j )−=Asignac ( j , k )∗ a s i g (k )
Asignac ( j , k ):=0
end−do
f o r a l l ( i in COLEGIOS |Convex ( i , k)>0) do
Rcoleg ( i )−=Convex ( i , k )∗ a s i g (k )
Convex ( i , k ):=0
end−do
e l s e
break
end− i f
end− i f
end−do
end− i f
f o r a l l ( r in borradas +1. . paramcolum ) borradoco l ( r ):=0
end−procedure
( !∗∗∗∗∗∗∗∗∗ RESUELVE KNAPSACK INICIALES ∗∗∗∗∗∗∗Func i n que r e su e l v e l o s knapsack i n i c i a l e s para c r ea r
e l problema maestro r e s t r i n g i d o i n i c i a l
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗f unc t i on knapsackI ( k : i n t e g e r ) : r e a l
Rknaps (k):=sum( j in ESTUDIANTES)x ( j )=Capacidad (k )
Objknaps (k):=sum( j in ESTUDIANTES) Dis tanc ia ( j , k )∗x ( j )
! f o r a l l ( j in ESTUDIANTES)x ( j )<=1
maximize ( Objknaps (k ) )
returned := ge tob jva l
end−f unc t i on
( !∗∗∗∗∗∗∗∗∗ RESUELVE KNAPSACK en GEN COL ∗∗∗∗∗∗∗Func i n que r e su e l v e l o s knapsack en cada i t e r a c i o n de
l a g e n e r a c i n de columnas , que permiten determinar l a
columna a ad i c i ona r
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗f unc t i on knapsack (k : in t ege r , mejor : r ea l ,
FoKp : array ( range ) o f r e a l ) : r e a l
f o r a l l ( j in ESTUDIANTES)y ( j ):=0
FoKp(k):=0
f o r a l l ( i in 1 . . Capacidad (k ) ) do
mayor:=M
asignado :=0
f o r a l l ( j in ESTUDIANTES)do
i f BenefKP( j , k)>mayor then
mayor:=BenefKP( j , k )
as ignado := j
end− i f
end−do
y ( as ignado ):=1
FoKp(k)+=BenefKP( asignado , k )
BenefKP( asignado , k):=M
95
end−do
returned :=FoKp(k )
end−f unc t i on
( !∗∗∗∗∗∗∗∗∗ INDICA estado de l problema ∗∗∗∗∗∗∗func ion que ind i c a s i e l estado en e l que f i n a l i z l a
o p t im i z a c i n
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗f unc t i on getProblemStatus ( s t a tu s : i n t e g e r ) : s t r i n g
case s t a tu s o f
XPRS OPT: returned := ”Solved to opt ima l i ty . ”
XPRS UNF: returned := ”Unf in i shed . ”
XPRS INF : returned := ” I n f e a s i b l e . ”
XPRS UNB: returned := ”Unbounded . ”
e l s e returned := ”Unknown s ta tu s . ”
end−case
end−f unc t i on
( !∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ IMPRIME COLUMNAS ACTUALES ∗∗∗∗∗∗∗∗∗∗∗Procedimiento para imprimir columnas Actuales
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
procedure Show co l ac tua l
wr i t e ( s t r fmt (” Benef ” , 4 ) )
f o r a l l ( i in 1 . . numcolumnas ) wr i t e ( s t r fmt ( i , 6 ) )
wr i t e l n
wr i t e ( s t r fmt (” Benef ” , 4 ) )
f o r a l l ( i in 1 . . numcolumnas ) wr i t e ( s t r fmt ( Benef ( i ) , 6 ) )
wr i t e l n
f o r a l l ( j in ESTUDIANTES) do
wr i t e ( s t r fmt (” ” ,4 ) )
f o r a l l ( i in 1 . . numcolumnas ) wr i t e ( s t r fmt ( Asignac ( j , i ) , 6 ) )
wr i t e l n
end−do
wr i t e l n ( s t r fmt (” Convexidad ” ,4 ) )
f o r a l l ( j in COLEGIOS) do
wr i t e ( s t r fmt (” ” ,4 ) )
f o r a l l ( i in 1 . . numcolumnas ) wr i t e ( s t r fmt (Convex ( j , i ) , 6 ) )
wr i t e l n
end−do
end−procedure
( !∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ IMPRIME Soluc ion Actual ∗∗∗∗∗∗∗∗∗∗∗Procedimiento para imprimir l a s o l u c i on ac tua l
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−!)
!∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗!
procedure Show so l ac tua l ( ob jva l : r e a l )
wr i t e l n
! Imprime va lo r de l a s o l u c i on Actual
wr i t e l n (” ITERACIN ”+i t e r a c i o n+” So luc ion Actual ”+ob jva l )
wr i t e ( s t r fmt (” Asig ” , 4 ) )
! Imprime l a s a i s gnac i one s s e l e c c i onada s y dual por e s tud iante
f o r a l l ( k in 1 . . numcolumnas ) do
i f s o l u c i on (k)>0 then
wr i t e ( s t r fmt (k , 4 ) )
end− i f
end−do
96
wr i t e l n
wr i t e ( s t r fmt (” Valor ” , 4 ) )
! Imprime l a s a i sgnacones s e l e c c i onada s y dual por e s tud iante
f o r a l l ( k in 1 . . numcolumnas ) do
i f s o l u c i on (k)>0 then
wr i t e ( s t r fmt ( s o l u c i on (k ) , 4 ) )
end− i f
end−do
! imprime c o l e g i o de l a Asignacion
wr i t e l n
wr i t e ( s t r fmt (” Coleg ” ,4 ) )
! Imprime l a s a i sgnacones s e l e c c i onada s y dual por e s tud iante
f o r a l l ( k in 1 . . numcolumnas ) do
i f s o l u c i on (k)>0 then
f o r a l l ( i in COLEGIOS)do
i f Convex ( i , k)>0 then
wr i t e ( s t r fmt ( i , 4 ) )
end− i f
end−do
end− i f
end−do
wr i t e ( s t r fmt (” Dual ” , 4 ) )
wr i t e l n
! Imprime Benef de l a a s i gnac i on
wr i t e ( s t r fmt (” ” ,4 ) )
f o r a l l ( k in 1 . . numcolumnas ) do
i f s o l u c i on (k)>0 then
wr i t e ( s t r fmt ( Benef ( k ) , 4 ) )
end− i f
end−do
wr i t e l n
f o r a l l ( j in ESTUDIANTES)do
wr i t e ( s t r fmt (” ” ,4 ) )
f o r a l l ( k in 1 . . numcolumnas ) do
i f s o l u c i on (k)>0 then
wr i t e ( s t r fmt ( Asignac ( j , k ) , 4 ) )
end− i f
end−do
wr i t e (” ”+st r fmt ( getdua l ( Rest ( j ) ) , 4 ) )
wr i t e l n
end−do
! Imprime Dual de l a r e s t r i c c i o n de c o l e g i o
wr i t e ( s t r fmt (” Coleg ” ,4 ) )
f o r a l l ( i in COLEGIOS)do
wr i t e ( s t r fmt ( i , 4 ) )
end−do
wr i t e l n
wr i t e ( s t r fmt (” ” ,4 ) )
f o r a l l ( i in COLEGIOS)do
wr i t e ( s t r fmt ( getdua l ( Rcoleg ( i ) ) , 4 ) )
end−do
wr i t e l n
end−procedure
end−model
97
Apendice C
Demostraciones
C.1. Obtencion del Problema Auxiliar en el algoritmo deGeneracion de Columnas
Debe tenerse presente que la k-esima solucion factible para el colegio i, es decir la
k-esima columna que es posible formar, orresponde a, xik = {xi
1k, xi2k, ..., x
ink, } y
satisface que∑
j∈J xijk = bi
Pricing Problem
Puede entonces construirse el Problema auxiliar, el cual busca la columna (asigna-
cion) con el mayor costo reducido, considerando para ello.
i.) Costo Reducido
el costo reducido para cualquier variable no basica esta dado por:
cjk =
∑i∈I
cijxjik −
[µ ν
] [xjk
ej
]
cjk =
∑i∈I
cijxjik −
∑i∈I
µixjik − νj (30)
cjk =
∑i∈I
(cij − µi) xjik − νj (31)
ii.) Seleccion de la columna con el mayor costo reducido
maxj∈J
{∑i∈I
(cij − µi) xjik − νj
}=∑j∈J
(Z(KPj)) +∑i∈I
µi (32)
98
En donde, Z(KPj) corresponde a la solucion del siguiente problema Knapsack
Maximizar∑i∈I
(cij − µi) xik (33)
s.a.∑i∈I
xjik = bj (34)
xjik ∈ {0, 1} ∀i ∈ I (35)
C.2. Obtencion de la cota superior para la solucion optimaen el algoritmo de Generacion de columnas
Considere el problema en su formulacion desagregada, (P2)
Maximizar∑j∈J
∑k∈Kj
(∑i∈I
cijxjik
)yj
k (36)
∑j∈J
∑k∈Kj
xjiky
jk = 1 ∀i ∈ I (37)
∑k∈Kj
yjk = 1 ∀j ∈ J (38)
yjk ∈ {0, 1} ∀j ∈ J , ∀k ∈ Kj (39)
la relajacion lagrangiana resultante de dualizar las restricciones de asignacion (37),
esta dada por:
Maximizar∑j∈J
∑k∈Kj
(∑i∈I
cijxjik
)yj
k +∑i∈I
µi
1−∑j∈J
∑k∈Kj
xjiky
jk
∑k∈Kj
yjk = 1 ∀j ∈ J (40)
99
La cual puede reescribirse agrupando algunos terminos, de la siguiente forma:
Maximizar∑j∈J
∑k∈Kj
∑i∈I
(cij − µi)xjiky
jk
+∑i∈I
µi∑k∈Kj
yjk = 1 ∀j ∈ J (41)
Observe que esta nueva formulacion permite separar el problema en m problemas
Kanpasack, correspondientes a los problemas definidos para el problema auxiliar del
algoritmo de generacion de columnas, con lo cual el valor optimo de esta relajacion,
que constituye una cota superior al problema de estudio, estara dado por:∑j∈J
(Z(KPj)) +∑i∈I
µi (42)
C.3. Integralidad de la Solucion de la Relajacion Lineal de(P2)
Se pretende demostrar que la solucion de la formulacion desagregada del problema de
asignacion, denominada (P2), corresponde con la solucion entera de la formulacion
estandar, es decir del problema original (P1). Para ello, se mostrara que la relajacion
lineal de la formulacion desagregada genera una cota superior menor o igual a la
generada por la relajacion de la formulacion estandar. Se mostrara tambien que la
solucion de la relajacion lineal de la formulacion estandar es entera, es decir coincide
con la solucion optima del problema entero original. De esta forma, la cota generada
por la relajacion lineal de la formulacion desagregada tambien debera ser igual a la
solucion optima del problema entero.
100
Considere la relajacion lineal del problema entero (P1),
Maximizar∑i∈I
∑j∈J
cijxij∑j∈J
xij = 1 ∀i ∈ I (43)∑i∈I
xij = bj ∀j ∈ J (44)
0 ≤ xij ≤ 1 ∀i ∈ I, ∀j ∈ J (45)
Observe que la solucion del problema entero exigirıa que las asignaciones seleccio-
nadas para los colegio fuesen enteras, es decir, que en una asignacion factible exac-
tamente bj variables xij, asociadas a los estudiantes, deben tomar el valor de 1; este
hecho esta relacionado con la restriccion de integralidad de los xij, y la solucion del
problema knapsack de cada institucion 44. En la relajacion lineal las asignaciones
factibles para cada colegio podrıan ser no enteras, lo cual implica que la relaja-
cion lineal contiene el casco convexo de las soluciones enteras para la solucion del
problema Knapsack de cada institucion.[18]
Considere ahora la relajacion lineal de la formulacion desagregada del problema
entero original.
Maximizar∑j∈J
∑k∈Kj
(∑i∈I
cijxjik
)yj
k (46)
∑j∈J
∑k∈Kj
xjiky
jk = 1 ∀i ∈ I (47)
∑k∈Kj
yjk = 1 ∀j ∈ J (48)
0 ≤ yjk ≤ 1 ∀j ∈ J , ∀k ∈ Kj (49)
Puede observarse como en esta formulacion, nuevamente, las asignaciones factibles
para los colegio son enteras. Para ello recuerde que la k-esima asignacion factible
101
para la institucion j, xjk = {xj
1k, xj1k, ..., x
jnk}, satisface que∑
i∈I
xjik = bj xj
ik ∈ {0, 1}
Dada esta consideracion, la cota superior al valor de la solucion entera generada
por la relajacion lineal de la formulacion desagregaba debera ser igual o mas ajus-
tada (menor o igual), que la cota generada por la relajacion lineal del problema
original.[18]
Es posible mostrar ademas, que la relajacion lineal del problema entero original ge-
nera la solucion entera optima. Para ello observe que la formulacion estandar del
problema (P1) presenta la estructura caracterıstica de un problema de Transporte,
[1] , en donde cada nodo de Demanda (estudiante) tiene una demanda igual a una
unidad, mientras que para cada proveedor (Colegio) existe una capacidad u oferta
(de cupos escolares) particular, siendo el total de la demanda igual al total de la
oferta o siendo posible reformular el problema para satisfacer esta condicion. Con-
siderando esta estructura particular y asumiendo, sin perdida de generalidad, que
todos los costos de asignacion de los estudiantes ası como las capacidades (ofertas
de cupos) son enteras, es posible mostrar que el conjunto de soluciones basicas facti-
bles de dicho problema esta compuesto solo por soluciones enteras, lo cual es debido
a la unimodularidad de la matriz A [1]. Este hecho implica que la solucion de la
relajacion lineal corresponda con la solucion del problema entero.
Por ultimo, considerando que la cota generada por la relajacion lineal de la for-
mulacion desagregada, debe ser menor o igual a la cota generada por la relajacion
lineal de problema original, es posible concluir que la solucion de la formulacion
desagregada debe ser igual a la solucion entera optima del problema.
102
Referencias
[1] MAGNANTI T y ORLINJ AHUJA R. Network Flows. Theory, Algorithms andApplications. Prentice Hall, 1993.
[2] NEMHAUSER George SAVELSBERGH Martin y VANCE Pamela BARN-HART Cynthia, JOHNSON Ellis. Branch-and-price column generation for sol-ving huge integer programs. No Publicado, Enero 1996.
[3] JARVISJ y SHERALIH. BAZAARA M. Programacion Lineal y Flujo en Redes.Limusa, 2 edition, 1999.
[4] BERTSEKAS D. The auction algorithm: A distributed relaxation method forthe assignment. Annals of Operations Research, 14:105–123, 1988.
[5] BERTSEKAS D. Auction algorithms for network flow problems: A tutorialintroduction. Mayo 1992.
[6] BERTSEKAS D. and CASTANON D. The auction algorithm for transportationproblems. Annals of Operations Research, 20:67–96, Febrero 1989.
[7] DESROSIERS J. y SOLOMON M. DESAULNIERS G. Column Generation,.Springer, 1 edition, 2005.
[8] LUBBECKE Marco e. y DESROSIERS Jaques. Selected topics in columngeneration. Para aparecer en Operations Research, Diciembre 202.
[9] Xpress-MP Essentials. Dash Optimizations. Dash Associates, 2 edition, Febrero2002.
[10] VANDEERBECK Francois. Descoposition and Column Generation for IntegerPrograms. PhD thesis, Universidad Catolica de Louvain, Septiembre 1994.
[11] VANDERBECK Francois. Implementing mixed integer column generation. Do-cumento de Trabajo, Septiembre 2004.
103
[12] PARK Sungsoo y PARK Kyungchul JEONG Gue-woog, LEE Kyungsik. Abranch-and-price algorithm for the steiner tree packing. Computers and Ope-rations Research, (29):221–241, 2002.
[13] W JOHNSON eellis l., NEMHAUSER George L. y SAVELSBERGH Martin.Progress in linear programming-based algorithms for integer programming: Anexposition. INFORMS Journal on Computing, 12(1), 2000.
[14] WOLSEY Laurence. Integer Programming. Jhon Wiley and sons, 1998.
[15] HENON M. Algorithmic aspects of mak. Noviembre 2004.
[16] LUBBECKE Marco. Engine Scheduling by Column Generation. PhD thesis,Universidad de Braunschweig, julio 2001.
[17] SAVELSBERGH Martin. A branch-and-price algorithm for the generalizedassignment problem. Operations Research, 45(6):831–841, Diciembre 1997.
[18] SAVELSBERGH Martin. A branch-and-price algorithm for the generalizedassignment problem. Operations Research, 45(6):831–842, Noviembre 1997.
[19] SAVELSBERGH Martin. Branch-and-price: Integer programming with columngeneration. No Publicado, Febrero 2002.
[20] DESROSIERS Jacques y HANSEN Pierre MERLE Olivier, VILLENUEVE Da-niel. Stabilized column generation. Discrete Mathematics, (194):229–237, 1999.
[21] SAVELSBERGH Martin y SIGISMONDI Gabriele NEMHAUSER George.Minto: Mixen integer optimizer. Georgia Institute of Technology.
[22] Dash Optimization. Xpress Mosel. User Guide. Dash Optimization.
[23] Dash Optimization. Xpress-Optimizer. Reference Manual. Dash Optimization.
[24] Dash Optimization. Xpress Mosel Languaje. Reference Manual. Dash Optimi-zation, Junio 2003.
[25] Dash Optimization. Embeddeding optimization algorithms. Documento deTrabajo, Sepetiembre 2005.
[26] COLOMBANI Y. y HEIPCKE S. Mosel: An overview. Octubre 2004.
[27] PIGGATI Alexander y POGGI Marcus. Satbilized branch-andcut-and-price forthe generalized assignment problem. No Publicado, Octubre 2004.
104