Upload
camilo-bernal
View
215
Download
0
Embed Size (px)
Citation preview
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
1/27
Desarrollo de un modelo deprogramación entera mixta (MIP) en
GNU/Linux para asignar la carga
académica de un colegio
Camilo Bernal
∗
11 de marzo de 2016
∗
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
2/27
Índice
1. Introducción 1
2. Qué es GLPK 2
3. Qué es GNU MathProg 3
4. Cómo usar GNU MathProg en GLPK 4
5. Descripción del caso de estudio 5
6. Construcción del modelo de programación lineal 10
6 . 1. E l em en to s d e l m o d el o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6 . 2. Fu nc i ón o b j e t iv o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 . 3. R e st r ic ci o ne s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7. Discusión de resultados 12
8. Conclusiones 18
A. Codificación del modelo de asignación 20
B. Codificación de los datos del modelo 22
C. Instrucciones básicas para el uso del software 24
I
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
3/27
1. Introducción
A u n q u e l a r e a l i d a d e s c o m p l e j a y l a m a y o r í a d e l o s p r o b l e m a s c o m p u t a b l e s q u e s e p r e -
s e nt a n n o s e p u ed e n e x pr e sa r c o mo r e la ci o ne s l i ne a le s ( f re c ue nt e me nt e n i s i qu i er a s e
c o no c e n s u s r e la c io n es ) , d e nt r o d e l a s m at e má t ic a s a pl i ca d as h ay u na va s ta d i sc i pl i na
q ue s e l la ma I nv es ti ga ci ón d e O p er ac io ne s, y d ent ro d e e st a s e e nc ue nt ra u n g én er o
p a r t i c u l a r d e p r o b l e m a s q u e r e c i b e e l n o m b r e d e p r o g r a m a c i ó n l i n e a l .
L a p r o g r a m a c i ó n l i n e a l s e e n c a r g a d e e n c o n t r a r s o l u c i o n e s a p r o b l e m a s c o m p l e j o s c u y a s
r e l a c i o n e s e n t r e s u s e l e m e n t o s s e p u e d e n e x p r e s a r c o m o r e l a c i o n e s l i n e a l e s . E s t a t é c n i c a
t i e n e b u e n a s p o s i b i l i d a d e s d e a p l i c a c i ó n a p r o b l e m a s d e a s i g n a c i ó n d e r e c u r s o s , g e s t i ó n
l o g í s t i c a , b ú s q u e d a d e l m í n i m o c o s t o o d e l a m á x i m a u t i l i d a d . . . s u j e t o s a u n a s e r i e d e
restricciones.
E st e d o cu me nt o t ie ne c om o o b je ti vo p re se nt ar u na p ro pu es ta p ar a r es ol ve r u n p ro -
b le ma d e a si gn ac ió n d e c ar ga a ca dé mi ca a u n c ol eg io d ed ic ad o a l a e du ca ci ón s ec un -
d a ri a m ed i ant e u n m o de l o d e p ro g ra ma c ió n e nt e ra m i xt a u s an do e l s i st e ma o p er a ti vo
G N U / L i n u x , e l p r o g r a m a G L P K y e l l e n g u a j e d e m o d e l a m i e n t o G N U M a t h P r o g . S e b u s -
c a o f r ec e r u n a m e to d o l o gí a r e l at i va m e nt e s i m pl e e i nt u i ti va p a r a r e s o l v er p r o bl e m as d e
p r o g r a m a c i ó n e n t e r a m i x t a ( M I P p o r s u s s i g l a s e n i n g l é s ) p a r a l a a s i g n a c i ó n d e r e c u r s o s .
1
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
4/27
2. Qué es GLPK
G L P K ( G N U L i n e a r P r o g r a m m i n g K i t ) e s u n c o n j u n t o d e r u t i n a s e s c r i t a s e n e l l e n g u a j e
d e p r o g r a m a c i ó n A N S I C , o r g a n i z a d a s e n f o r m a d e l i b r e r í a s q u e s e p u e d e n i n v o c a r . S u
i n t e n c i ó n e s r e s o l v e r p r o b l e m a s d e p r o g r a m a c i ó n l i n e a l ( L P ) , P r o g r a m a c i ó n e n t e r a m i x t a
( M I P) , y o t r os p r o bl e m as r e l ac i o na d o s [ M a rk h o ri n , 2 0 1 0a ] .
E s i m p o r t a n t e a ñ a d i r q u e G L P K , a p a r t e d e s e r s o f t w a r e l i b r e y p o d e r u s a r s e g r a t u i t a -
m e n t e , p e r m i t e r e s o l v e r p r o b l e m a s d e g r a n e s c a l a ( m i l e s d e v a r i a b l e s y m i l e s d e r e s t r i c c i o -
n e s ) . A u n q u e e x i s t e n p a q u e t e s d e s o f t wa r e p r i v a t i v o e n e l m e r c a d o c o n e s t a s c a p a c i d a d e s ,
l a g r a n d i f e r e n c i a e s q u e G L P K s e p u e d e a d q u i r i r s i n n i n g ú n c o s t o d e l i c e n c i a n i l i m i t a -
c i ó n , a d e m á s , s e p u e d e d e s c a r g a r e l c ó d i g o f u e n t e p a r a r e a l i z a r t o d a s l a s m o d i fi c a c i o n e s
q u e s e d e s e e n a l a h e r r a m i e n t a p a r a a d a p t a r l o a n e c e s i d a d e s e s p e c í fi c a s .
2
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
5/27
3. Qué es GNU MathProg
G NU M at hP ro g e s u n l en gu a je d e m od el am ie nt o q ue s ir ve p ar a e sc ri bi r m od el os d e
p ro gr am ac ió n l in ea l. E st os m o de lo s c on si st en e n u na s er ie d e b lo q ue s d e s ent en ci as y
d a t o s c o n s t r u i d o s p o r e l u s u a r i o [ M a r k h o r i n , 2 0 1 0 b ] .
E n u n p r o c e s o l l a m a d o t r a d u c c i ó n , u n p r o g r a m a l l a m a d o e l t r a d u c t o r d e l m o d e l o a n a l i z a
l a d e s c r i p c i ó n d e l m o d e l o y l o t r a d u c e a e s t r u c t u r a s d e d a t o s i n t e r n o s , l o s c u a l e s p u e d e n
s e r u s a d o s t a n t o p a r a g e n e r a r u n a i n s t a n c i a d e l p r o b l e m a d e p r o g r a m a c i ó n m a t e m á t i c a
c o m o p a r a o b t e n e r u n a s o l u c i ó n n u m é r i c a d e l p r o b l e m a c o n u n p r o g r a m a l l a m a d o s o l v e r
[Íbid].
3
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
6/27
4. Cómo usar GNU MathProg en GLPK
E l p aq ue te G LP K i nc lu ye e l p ro gr am a g lp so l, q ue a ct úa c om o s ol ve r d e p ro bl em as
L P / M I P . E s t e p r o g r a m a s e p u e d e l a n z a r d e s d e l a l í n e a d e c o m a n d o s p a r a r e s o l v e r m o -
d e l o s e s c r i t o s e n e l l e n g u a j e G N U M a t h P r o g [ M a r k h o r i n , 2 0 1 0 b , O p . C i t . ] .
4
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
7/27
5. Descripción del caso de estudio
E n e l c a s o d e e s t u d i o s e c o n s i d e r a u n c o l e g i o d e f o r m a c i ó n e n e d u c a c i ó n s e c u n d a r i a q u e
t i e n e 6 c u r s o s ( 6º, 7º, 8º, 9º, 10º y 11º) , d i c t a c u a t r o ( 4 ) b l o q u e s d e d o s ( 2 ) h o r a s c a d a
d í a ( 8 h o r a s d i a r i a s d e c l a s e ) e m p e z a n d o a l a s 8 d e l a m a ñ a n a y t e r m i n a n d o a l a s 1 7 : 0 0
h or as , c on u na h or a d e a lmu er zo ( bl o qu e 1 : 8 :0 0- 10 :0 0 h rs , b lo q ue 2 : 1 0: 00 -1 2: 00 h rs ,
a l m u e r z o : 1 2 : 0 0 - 1 3 : 0 0 h r s , b l o q u e 3 : 1 3 : 0 0 - 1 5 : 0 0 h r s y b l o q u e 4 : 1 5 : 0 0 - 1 7 : 0 0 h r s ) .
E l c o l e g i o e s t á e s p e c i a l m e n t e e n f o c a d o a l á r e a d e m a t e m á t i c a s y f í s i c a , r a z ó n p o r l a c u a l
s e a s i g n a u n m a y o r n ú m e r o d e h o r a s s e m a n a l e s a e s t a s a s i g n a t u r a s p a r a c a d a c u r s o . E n
l a s t a b la s 1, 2, 3, 4, 5 y 6 s e m u e s t r a e l n ú m e r o d e h o r a s s e m a n a l e s d e c a d a a s i g n a t u r a
p a r a c a d a c u r s o .
C u a d r o 1 : H o r a s d e c a d a a s i g n a t u r a p a r a e l c u r s o 6º
Fuente: Elaboración propia
5
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
8/27
C u a d r o 2 : H o r a s d e c a d a a s i g n a t u r a p a r a e l c u r s o 7º
Fuente: Elaboración propia
C u a d r o 3 : H o r a s d e c a d a a s i g n a t u r a p a r a e l c u r s o 8º
Fuente: Elaboración propia
6
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
9/27
C u a d r o 4 : H o r a s d e c a d a a s i g n a t u r a p a r a e l c u r s o 9º
Fuente: Elaboración propia
C u a d r o 5 : H o r a s d e c a d a a s i g n a t u r a p a r a e l c u r s o 1 0º
Fuente: Elaboración propia
7
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
10/27
C u a d r o 6 : H o r a s d e c a d a a s i g n a t u r a p a r a e l c u r s o 1 1º
Fuente: Elaboración propia
P ar a a l gu n as a s ig n at u ra s l a c ar g a d e t r ab a j o e s s u fic i en te m en te a l ta p a ra j u st i fic a r e l
t r ab a j o d e d o s p r of e so r es . E n o t ro s c a so s , u n m i sm o p r of e so r p u ed e d i ct ar va r ia s a s ig -
n a tu r as . E n l a t a bl a 7 s e mu e st r a e l n úm er o d e h o ra s s e ma n al e s p a ra c a da a s ig na t ur a .
L a s a s i g n a t u r a s m a r c a d a s c o n * s e r á n d i c t a d a s p o r u n m i s m o p r o f e s o r .
8
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
11/27
C u a d r o 7 : H o r a s s e m a n a l e s d e c a d a a s i g n a t u r a
Fuente: Elaboración propia
A de má s d e l a s c a ra ct e rí s ti c as p r es e nt a da s h as t a a h or a , e s ta s s o n a l gu n as c o nd i ci o ne s
a d i c i o n a l e s p a r a l a a s i g n a c i ó n d e c a r g a a c a d é m i c a e n e l c o l e g i o :
U n p r o f e s o r p u e d e d i c t a r m á x i m o 6 h o r a s d e c l a s e ( 3 b l o q u e s ) e n u n d í aS e d i c t a n m á x i m o d o s h o r a s d e c a d a a s i g n a t u r a a u n c u r s o e n u n d í a
S e d e se a q u e l o s e s tu d ia nt e s r e ci b an l as c l as e s d e m at e má t ic a s y f í si c a p r ef e ri b le -
m ent e p or l a m añ an a ( es to s e d eb e a q ue e n l as h or as d e l a m añ an a l as m ent es
d e s p e j a d a s t r a b a j a n m e j o r e l p e n s a m i e n t o a b s t r a c t o )
S e d es ea q ue l os e st ud ia nt es r ec ib an l as c la se s d e fi lo so fí a, g eo gr af ía e h is to ri a
p r ef e ri b le me nt e p o r l a t a rd e ( e st a s a s ig n at u ra s s o n m en o s a bs t ra c ta s , y p ue d en
d e j a r s e p a r a e l fi n a l d e l d í a )
S e d e s e a q u e e n l a s a s i g n a t u r a s c o n v a r i o s p r o f e s o r e s , e s t o s t e n g a n u n a c a r g a l a b o r a l
s i m i l a r ( e l o b j e t i v o d e e s t o e s e q u i l i b r a r l a c a r g a d e t r a b a j o y q u e e l t i e m p o l i b r e
p a r a p r e p a r a r c l a s e s y e x á m e n e s t e n g a u n a m a g n i t u d s i m i l a r )
9
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
12/27
6. Construcción del modelo de programación lineal
6.1. Elementos del modelo
6.1.1. Conjuntos
C : C o n j u n t o d e c u r s o s (C = 6, 7, 8, 9, 10, 11)
P : Co n j u n t o d e p r o f e s o r e s (P = Bio, Soci, Fis1, Fis2, Info1, Info2, Ing1, Ing2, Mate1, Mate2, Q
A: Co n j u nt o d e a s i gn a t ur a s ( A = {B i o lo g i a, F i l os o fi a, F i s i ca , G e o gr a fi a, H i s to r i a, I n f o r-
m a t ic a , I n g l es , M a t em a ti c a s , Q u i mi c a })
H : C o n j u n t o d e h o r a s (H = 8, 10, 13, 15)
D: C o n j u n t o d e d í a s (D = Lunes, Martes, Miercoles, Jueves, V iernes)
6.1.2. Parámetros
HAC ac: # H o r a s s e m a n a l e s d e c a d a a s i g n a t u r a a p a r a c a d a c u r s o c
AP ap: Asignaturas a q u e d i c t a c a d a p r o f e s o r p
M AD: Ma xi mo nu me ro d e a si gn at ur as q ue d ic ta u n p ro fe so r e n u n d ía (M AD =
3 bloques)
MHACD: M á x i m o n u m e r o d e h o r a s d e u n a a s i g n a t u r a q u e r e c i b e u n c u r s o e n u n d í a
(MHACD = 2 horas, 1 bloque)
P M ah: P u nt a j e p ar a i n ce nt i va r l a a s ig n ac i ón d e l a s c l as e s d e m at e má t ic as y f í si c a p o r
l a m a ñ a n a ( M a g n i t u d a d i m e n s i o n a l )
P T ah: P u n t a j e p a r a i n c e n t i v a r l a a s i g n a c i ó n d e l a s c l a s e s d e fi l o s o f í a , g e o g r a f í a e h i s t o r i a
p a r a l a t a r d e ( M a g n i t u d a d i m e n s i o n a l )
10
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
13/27
6.1.3. Variables
xapchd =
1 Si la asignatura a esdictadapor el profesor p al curso c enla hora h el dı́a d
0 En otro caso
a ∈ A, p ∈ P, c ∈ C, h ∈ H, d ∈ D
6.2. Función objetivo
M aximizar z =
apchd
xapchd ∗ (P M ah + P T ah) ∀a ∈ A, ∀ p ∈ P, ∀c ∈ C, ∀h ∈ H, ∀d ∈ D +
achd
|xap1chd − xap2chd| ∀a ∈ A, { p1, p2} ⊂ P, ∀c ∈ C, ∀h ∈ H, ∀d ∈ D
6.3. Restricciones
U n p r o f e s o r d i c t a u n m a x i m o d e s e i s h o r a s d i a r i a s :
ach xapchd ∗ 2 ≤ M AD ∀ p ∈ P, ∀d ∈ D
S e d i c t a n m á x i m o d o s h o r a s d e u n a a s i g n a t u r a a u n c u r s o e n u n d í a :
ph xapchd ∗ 2 ≤ MHACD ∀a ∈ A, ∀c ∈ C, ∀d ∈ D
U n c u r s o p u e d e r e c i b i r u n a ú n i c a a s i g n a t u r a e n c u a l q u i e r h o r a d e c u a l q u i e r d í a :
ap xapchd ≤ 1 ∀c ∈ C, ∀h ∈ H, ∀d ∈ D
U n p ro fe so r s ol o p ue de d ic ta r u na a si gn at ur a a u n c ur so e n c ua lq ui er h or a d e
c u a l q u i e r d i a :
ac xapchd ≤ 1 ∀ p ∈ P, ∀h ∈ H, ∀d ∈ D
C a d a c u r s o d e b e r e c i b i r s u s r e s p e c t i v a s h o r a s d e c a d a a s i g n a t u r a e n u n a s e m a n a :
phd xapchd ∗ 2 ∗ AP ap ≥ H AC ac ∀a ∈ A, ∀c ∈ C
11
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
14/27
7. Discusión de resultados
E n l as t ab la s 8, 9, 10, 11, 12 y 13 s e mu e st r an l o s r es u lt a do s d e a s ig n ac i ón d e c a rg a
a c a d é m i c a p a r a c a d a c u r s o . S e p u e d e o b s e r v a r q u e s e i n t e n t a h a c e r l a m e j o r a s i g n a c i ó n
d e n t r o d e l a s p o s i b i l i d a d e s q u e p e r m i t e n l a s r e s t r i c c i o n e s .
C u a d r o 8 : A s i g n a c i ó n d e c a r g a a c a d é m i c a p a r a e l c u r s o 6º
Fuente: Elaboración propia
12
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
15/27
C u a d r o 9 : A s i g n a c i ó n d e c a r g a a c a d é m i c a p a r a e l c u r s o 7º
Fuente: Elaboración propia
13
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
16/27
C u a d r o 1 0 : A s i g n a c i ó n d e c a r g a a c a d é m i c a p a r a e l c u r s o 8º
Fuente: Elaboración propia
14
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
17/27
C u a d r o 1 1 : A s i g n a c i ó n d e c a r g a a c a d é m i c a p a r a e l c u r s o 9º
Fuente: Elaboración propia
15
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
18/27
C u a d r o 1 2 : A s i g n a c i ó n d e c a r g a a c a d é m i c a p a r a e l c u r s o 1 0º
Fuente: Elaboración propia
16
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
19/27
C u a d r o 1 3 : A s i g n a c i ó n d e c a r g a a c a d é m i c a p a r a e l c u r s o 1 1º
Fuente: Elaboración propia
E s t e p e q u e ñ o e j e m p l o d e c a s o d e e s t u d i o c o n s t a d e 1 1 8 8 0 v a r i a b l e s y 7 1 3 r e s t r i c c i o n e s ,
y n e c e s i t ó u n t i e m p o d e c ó m p u t o d e 1 1 0 s e g u n d o s . E l m o d e l o s e r e s o l v i ó e n u n P C H P
Pav il io n c on M em or ia R AM d e 2 G B, P ro ce sa do r I nt el C or e 2 a 1 .7 3 G Hz , S is te ma
O p er a ti vo L i nu x M in t D e bi a n E d it i on ( L MD E ). C o mo s e m en c io n ó d e sd e e l c o mi e nz o ,
s e u só e l l en gu a je M at hP ro g p ar a m od el ar e l p ro bl em a y e l p ro gr am a G LP K p ar a l a
resolución.
L a a s o m b r o s a c a n t i d a d d e v a r i a b l e s y r e s t r i c c i o n e s p a r a u n p r o b l e m a r e l a t i v a m e n t e p e -
q u e ñ o , d e m u e s t r a q u e l a u t i l i z a c i ó n d e u n m o d e l o m a t e m á t i c o j u n t o c o n u n b u e n s o f t wa r e
p u ed e r e su l ta r d e g r an a yu d a p ar a r es o lv er l o s p r ob l em as d e a s ig n ac i ón d e c ar g as a c a-
d é m i c a s e n l a s i n s t i t u c i o n e s e d u c a t i v a s , y a q u e e s t o s p r o b l e m a s a p a r e n t e m e n t e s e n c i l l o s
o c u l t a n u n a i n m e n s a c o m p l e j i d a d .
17
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
20/27
8. Conclusiones
H e r r a m i e n t a s d e S o f t w a r e L i b r e c o m o G L P K y M a h t P r o g p u e d e r e s u l t a r d e g r a n
ay ud a p ar a r es ol ve r p ro bl em as d e p ro gr am ac ió n l in ea l d e g ra n e sc al a ( mi le s d e
v a r i a b l e s y m i l e s d e r e s t r i c c i o n e s ) s i n t e n e r q u e p a g a r c o s t o s a s l i c e n c i a s p o r s o f t wa r e
c o m e r c i a l c o n p r e s t a c i o n e s s i m i l a r e s . A d e m á s , e s t a s h e r r a m i e n t a s d e s o f t wa r e l i b r e
p e rm it en m o di fic ar e l c ó di go f ue nt e y a da pt ar lo a l as n ec es id ad es d e c ua lq ui er
usuario.
L a a s ig n ac i ón d e c a rg a s a c ad é mi c as p ar a l a s i n st i tu c io n es e d uc a ti va s e s u n p r o-
b l e m a a p a r e n t e m e n t e s e n c i l l o q u e o c u l t a u n a a s o m b r o s a c o m p l e j i d a d . U n p e q u e ñ o
e j em pl o d e e s cu el a s e cu nd a ri a c on p o c a s a s ig n at u ra s p u ed e i nv ol u cr ar d e ce na s d e
m i l e s d e v a r i a b l e s y c i e n t o s d e r e s t r i c c i o n e s .
18
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
21/27
Referencias
[ M a rk h o ri n , 2 0 1 0a ] M a k ho r i n, A n d re w. G N U L i n ea r P r o g r a mm i n g Ki t - R e f er e n ce M a -
n ua l . D e p ar t m en t f o r A p p li e d I n f or m a ti c s , M o s co w Av i a ti o n I n s t i-
t u t e , M o s c o w, R u s s i a . 2 0 1 0 .
[ M a rk h o ri n , 2 0 1 0b ] M a k ho r i n, A n d re w. M o d e l i n g L a n g u ag e G N U M a t hP r o g - L a n gu a g e
R e f e r e n c e f o r G L P K V e r s i o n 4 . 4 5 . D e p a r t m e n t f o r A p p l i e d I n f o r m a -
t i c s, M o s co w Av i a ti o n I n s ti t u te , M o s co w, R us s i a . 2 0 1 0.
19
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
22/27
A. Codificación del modelo de asignación
/*CONJUNTOS*/
s et C ;
/ * C ur so s * /
s et P ;
/ * P ro fe so re s * /
s et A ;
/ * A s ig n at u ra s * /
s et H ;
/ * H or as * /
s et D ;
/ * Di as * /
/*PARAMETROS*/
param HAC{a in A, c in C};
/ * # H or as s em an al es d e c ad a a si gn at ur a p ar a c ad a c ur so * /
param AP{a in A, p in P};
/ * A si gn at ur as q ue d ic ta c ad a p ro fe so r * /
p a ra m M A D;
/ * M ax im o n um er o d e a si gn at ur as q ue d ic ta u n p ro fe so r e n u n d ia * /
p a ra m M H AC D ;
/ * Ma xim o n um ero de ho ra s d e u na as ign at ura q re cib e u n c ur so. e n u n d ia */
param PM{a in A, h in H};
/ * P un ta je p ar a i nc en ti va r l a a si gn ac io n d e l as c la se s d e m at em at ic as y
f is ic a p or l a m an ha na * /
param PT{a in A, h in H};
/ * P un ta je p ar a i nc en ti va r l a a si gn ac io n d e l as c la se s d e f il os of ía , g eo gr af ía
e h is to ri a p ar a l a t ar de * /
/*VARIABLES*/
var x{a in A, p in P, c in C, h in H, d in D} binary;
/* 1 si la asignatura a es dictada por el profesor p al curso c en la hora h el
dia d; 0 en otro caso */
/ * F UN C I O N O B J E TI V O * /
maximize z:sum{a in A, p in P, c in C, h in H, d in D} x[a, p, c, h, d] *
(PM[a, h] + PT[a, h]) + sum{a in A, c in C, h in H, d in D} (x[a, ’Fis1’,
c, h, d] - x[a, ’Fis2’, c, h, d]) + sum{a in A, c in C, h in H, d in D}
20
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
23/27
(-x[a, ’Fis1’, c, h, d] + x[a, ’Fis2’, c, h, d]) + sum{a in A, c in C, h in H,
d in D} (x[a, ’Info1’, c, h, d] - x[a, ’Info2’, c, h, d]) + sum{a in A, c in C,
h in H, d in D} (-x[a, ’Info1’, c, h, d] + x[a, ’Info2’, c, h, d]) + sum{a in A,
c in C, h in H, d in D} (x[a, ’Ing1’, c, h, d] - x[a, ’Ing2’, c, h, d]) +
sum{a in A, c in C, h in H, d in D} (-x[a, ’Ing1’, c, h, d] + x[a, ’Ing2’, c, h, d])
+ sum{a in A, c in C, h in H, d in D} (x[a, ’Mate1’, c, h, d] - x[a, ’Mate2’, c, h, d]) +
sum{a in A, c in C, h in H, d in D} (-x[a, ’Mate1’, c, h, d] + x[a, ’Mate2’, c, h, d]);
/*RESTRICCIONES*/
s u bj e ct t o
mhd{p in P, d in D}: sum {a in A, c in C, h in H} x[a, p, c, h, d] * 2 > "Resultado_asignacion.csv";
p r i nt f " \ n \ n" ;
/ * t er mi na r * /
end;
21
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
24/27
B. Codificación de los datos del modelo
/*CONJUNTOS*/
set C:= 6 7 8 9 10 11;
/ * C ur so s * /
s et P := B io S oc i F is 1 F is 2 I nf o1 I nf o2 I ng 1 I ng 2 M at e1 M at e2 Q ui m;
/ * P ro fe so re s * /
s e t A : = B i ol o gi a F i lo s of i a F i si c a G e og r af i a H i st o ri a I n fo r ma t ic a I n gl e s M a te m at i ca s Q u im i ca ;
/ * A s ig n at u ra s * /
set H:= 8 10 13 15;
/ * H or as * /
s et D := L un es M ar te s M ie rc ol es J ue ve s V ie rn es ;
/ * Di as * /
/*PARAMETROS*/
p ar am H AC d ef au lt 0
/ * # H or as s em an al es d e c ad a a si gn at ur a p ar a c ad a c ur so * /
: 6 7 8 9 10 11 :=
Biologia 4 4 4 4 2 2
Filosofia . . . 2 4 4
Fisica 6 6 6 6 6 6
Geografia 2 2 2 2 2 .
Historia 2 2 2 2 . .
Informatica 6 6 6 6 8 8
Ingles 6 6 6 6 6 8
Matematicas 10 10 10 10 10 10
Quimica 4 4 4 2 2 2;
p ar am A P d ef au lt 0
/ * A si gn at ur as q ue d ic ta c ad a p ro fe so r * /
: Bio Soci Fis1 Fis2 Info1 Info2 Ing1 Ing2 Mate1 Mate2 Quim :=
Biologia 1 . . . . . . . . . .
Filosofia . 1 . . . . . . . . .
Fisica . . 1 1 . . . . . . .
Geografia . 1 . . . . . . . . .
Historia . 1 . . . . . . . . .
Informatica . . . . 1 1 . . . . .
22
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
25/27
Ingles . . . . . . 1 1 . . .
Matematicas . . . . . . . . 1 1 .
Quimica . . . . . . . . . . 1;
p ar am MA D : = 6 ;
/ * M ax im o n um er o d e a si gn at ur as q ue d ic ta u n p ro fe so r e n u n d ia * /
p ar am M HA CD : = 2 ;
/ * Ma xim o n um ero de ho ra s d e u na as ign at ura q re cib e u n c ur so en un di a * /
p ar am P M d ef au lt 0
/ * P un ta je p ar a i nc en ti va r l a a si gn ac io n d e l as c la se s d e m at em at ic as y f is ic a p or l a m an ha na
: 8 10 13 15 :=
Biologia . . . .
Filosofia . . . .
Fisica 2 1 . .
Geografia . . . .
Historia . . . .
Informatica . . . .
Ingles . . . .
Matematicas 2 1 . .
Quimica . . . .;
p ar am P T d ef au lt 0
/ * P un ta je p ar a i nc en ti va r l a a si gn ac io n d e l as c la se s d e f il os of ía , g eo gr af ía e h is to ri a p ar a
: 8 10 13 15 :=
Biologia . . . .
Filosofia . . 1 2
Fisica . . . .
Geografia . . 1 2
Historia . . 1 2
Informatica . . . .
Ingles . . . .
Matematicas . . . .
Quimica . . . .;
end;
23
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
26/27
C. Instrucciones básicas para el uso del software
P ar a l o s q u e n o e s tá n a co s tu mb r ad o s, t r ab a j ar c o n t e rm in a le s d e t ex t o p u ed e r e su lt a r
c o n f u s o a l p r i n c i p i o . S i n e m b a r g o , e s u n a c o s t u m b r e m u y e x t e n d i d a e n t r e l o s u s u a r i o s d e
s i s t e m a s o p e r a t i v o s L i n u x y B S D . B á s i c a m e n t e s e t r a t a u n a i n t e r f a z e n l a q u e e l u s u a r i o ,e n v ez d e h ac er c li ck s ob re i co no s, l e e nv ía i ns tr uc ci on es a l s is te ma o p er at iv o a t ravé s
d e ó r d e n e s e s c r i t a s .
F i g u r a 1 : S e s i ó n d e Te r m i n a l e s e n L i n u x r e s o l v i e n d o e l p r o b l e m a d e a s i g n a c i ó n d e c a r g a sacadémicas
Fuente: Elaboración propia
L a i n s t r u c c i ó n c o n l a q u e s e r e s o l v i ó e l p r o b l e m a e s p e c í fi c o e n l a t e r m i n a l e s l a s i g u i e n t e :
glpsol –math -m Profesores.mod -d Profesores.dat
Donde:
glpsol: I n v o c a a l s o l u c i o n a d o r d e l p r o g r a m a G L P K
-m Profesores.mod: L e i n d i c a a l s o l u c i o n a d o r q u e e l m o d e l o s e e n c u e n t r a e n u n fi c h e r o
llamado ’Profesores.mod’
24
8/18/2019 Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio
27/27
-d Profesores.dat: L e i n d i c a a l s o l u c i o n a d o r q u e l o s d a t o s d e l m o d e l o s e e n c u e n t r a n e n
u n fi ch e r o l l a ma d o ’ P r of e s o re s . da t ’
Y l i s t o . U n a v e z e j e c u t a d a e s t a o r d e n e n l a t e r m i n a l , e l p r o g r a m a s e e n c a r g a d e r e s o l v e r
todo.
25