Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de...

download Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de Un Colegio

of 27

Transcript of Desarrollo de Un Modelo de Programación Entera Mixta en Linux Para Asignar La Carga Académica de...

  • 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