Defensa síncrona de TFGs: un problema de planificació
76
0
0
Texto completo
(2) Copyright © 2020 Marc Fernández Sánchez. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no BackCover Texts..
(3) FITXA DEL TREBALL FINAL. Títol del treball:. Defensa síncrona de TFGs: un problema de planificació. Nom de l’autor: Marc Fernández i Sánchez Nom del consultor/a: Robert Clarisó Viladrosa Nom del PRA: Robert Clarisó Viladrosa Data de lliurament (mm/aaaa): 01/2020 Titulació o programa: Grau en Enginyeria Informàtica Àrea del Treball Final: TFG-Compiladors Idioma del treball: Català Paraules clau. Planificació, formals. NP-Completesa,. mètodes. Resum del Treball (màxim 250 paraules): Amb la finalitat, context d’aplicació, metodologia, resultats i conclusions del treball La finalitat d’aquest Treball és estudiar teòricament i construir una eina per resoldre un problema realista en l’àmbit de la gestió d’un sistema de planificació de defenses síncrones de de Treballs de Final de Grau. Aquest problema és interessant en el context de la planificació de TFGs, però els resultats presentats son fàcilment extrapolables a altres àmbits de la planificació d’horaris. Per tal de de dur a terme aquesta tasca, inicialment es realitza una descripció del problema a tractar i a partir d’aquesta descripció se’n fa un model teòric. Disposant del model teòric, s’analitza la complexitat computacional del problema com a informació fonamental per a desenvolupar una eina que el pugui resoldre eficientment. Un cop esclarida la complexitat computacional del problema es desenvolupa una eina per resoldre’l així com un generador d’instàncies aleatòries del problema per tal de dur a terme els jocs de proves escaients. Tot seguit es duen a terme els jocs de proves oportuns sobre la eina desenvolupada i es comprova que l’eina es correcta en la resolució del problema. Finalment s’implementen les millores convenients sobre l’eina per millorar-ne el rendiment. Com a conclusions del Treball s’obté la NP-Completesa del problema demostrada i la convicció que l’eina desenvolupada el resol correctament.. i.
(4) Abstract (in English, 250 words or less): The goal for this TFG is to theoretical study and tool develop in order to solve a realistic problem in the scope of a scheduling system for the synchronous defense of TFGs. This problem is interesting in the ambit of TFGs scheduling, but the results shown are easily extrapolable to other scheduling problems. In other to achieve this goal in first place a description of the problem is shown and starting with this description a theoretical model is done. Based on this theoretical model the computational complexity of the problem is studied as a basic information in order to develop a tool for efficiently solve it. Once the computational complexity is clear a tool is developed for solving it, also a random instance generator is developed in order to test the tool. The next step is to test the tool and check that the tool solves the problem correctly. Finally some improvements are applied in order to improve the performing of the tool. The conclusions for this TFG are the fact that the problem is NP-Complete and that the tool solves the problem correctly.. ii.
(5) Agraı̈ments Com a inici de la memòria del present Treball de Final de Grau es vol agrair el suport a totes les persones que han fet possible el desenvolupament del mateix i la gran satisfacció que obté l’autor del resultat. En primer lloc, i molt important, agrair la guia i paciència al tutor d’aquest Treball, en Robert Clarisó Viladrosa . Sense ell res d’això hagués estat possible. D’altra banda agrair als companys i companyes de la UOC que han donat suport durant el desenvolupament d’aquest TFG, el seu recolzament ha sigut vital en els moments difı́cils. Finalment, agrair als amics i amigues a Lisboa, i fora, per comprendre les tardes i dies sencers de reclusió i pel suport immesurable, aixı́ com per les bones estones que donen força per emprendre amb il·lusió una nova comesa.. iii.
(6)
(7) Índex Índex de figures. vii. 1 Introducció 1.1 Context i justificació del Treball . 1.2 Objectius del Treball . . . . . . . . 1.3 Enfocament i mètode seguit . . . . 1.4 Planificació del Treball . . . . . . . 1.5 Sumari de productes obtinguts . . 1.6 Recursos emprats . . . . . . . . . . 1.7 Descripció dels altres capı́tols de la. . . . . . . .. 1 1 1 2 2 5 5 5. 2 Presentació del problema 2.1 Presentació model formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Presentació problema de càlcul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Presentació problema de decisió . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 7 7 10 10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . memòria .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. 3 Anàlisi de complexitat 11 3.1 Anàlisi d’instàncies i testimonis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Demostració pertinença a NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 Demostració NP-Completesa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4 Formalització del problema 4.1 Definició de les instàncies . . . 4.2 Funció resol . . . . . . . . . . . 4.2.1 Lectura d’instància . . . 4.2.2 Variables del problema . 4.2.3 Definició de restriccions 4.2.4 Resolució . . . . . . . . 4.2.5 Mostrar resultats . . . . 4.3 Funcio imprimeix resultats . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. . . . . . . . .. 5 Generador d’instàncies 6 Joc de proves 6.1 Joc de proves per restriccions . . . . 6.1.1 Franges buides i Restricció 2 6.1.2 Restricció 3 . . . . . . . . . . 6.1.3 Restricció 4 . . . . . . . . . . 6.1.4 Restricció 5 . . . . . . . . . . 6.1.5 Restricció 6 . . . . . . . . . .. 17 17 18 18 18 19 25 25 25 27. . . . . . . v. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. 29 29 31 32 33 35 36.
(8) 6.2. 6.1.6 6.1.7 Joc de 6.2.1 6.2.2 6.2.3 6.2.4. Restricció 7 . Restricció 8 . proves global Aleatoria1 . . Aleatoria2 . . Aleatoria3 . . Aleatoria4 . .. 7 Refinament de l’eina 7.1 Cas trivial 1 . . . . 7.2 Cas trivial 2 . . . . 7.3 Cas trivial 3 . . . . 7.4 Cas trivial 4 . . . . 7.5 Cas trivial 5 . . . .. . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. . . . . . . .. 38 39 40 41 43 45 47. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. 49 49 50 50 50 51. 8 Estudi de l’impacte dels paràmetres en l’eficiència. 53. 9 Conclusions. 55. Glossari. 57. Fitxer adjunts. 58. Bibliografia. 60. A Manuals d’ús 63 A.1 Manual d’ús del Generador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 A.2 Manual d’ús de l’eina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64.
(9) Índex de figures 1.1. Diagrama de Gantt per al Treball . . . . . . . . . . . . . . . . . . . . . . . . . . .. 6. 3.1 3.2. Instància 3DM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Transformació 3DM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 15 15. 6.1 6.2 6.3 6.4 6.5 6.6. Temps d’execució aleatoria1 Testimoni aleatoria2 . . . . Temps d’execució aleatoria2 Testimoni aleatoria3 . . . . Temps d’execució aleatoria3 Temps d’execució aleatoria4. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. . . . . . .. 42 44 44 46 46 48. A.1 A.2 A.3 A.4. Compilació del codi . . . Execució i resultats . . . Eina des de consola . . . Resolució des de consola. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. 64 65 66 66. . . . .. . . . .. vii.
(10)
(11) Capı́tol 1. Introducció En aquest capı́tol es presentarà una introducció al contingut i objectius d’aquest Treball de Fi de Grau aixı́ com l’estratègia a seguir per aconseguir els objectius i una planificació per assolir-los.. 1.1. Context i justificació del Treball. La UOC és una universitat a distància, aquesta és una de les seves principals idiosincràsies i la raó per la qual molta gent la tria. Ara bé, aquest fet genera diferències significatives en certs mecanismes d’avaluació com és el cas de la defensa dels Treballs de final de Grau o Treballs de final de Màster. En aquests moments aquest problema s’està resolent mitjançant una defensa ası́ncrona [1]. En particular en el Grau en Enginyeria Informàtica la defensa es realitza mitjançant una vı́deo-presentació [2] prèviament gravada per la persona que defensa i visualitzada de forma ası́ncrona per les persones integrants del tribunal de defensa. Aquesta solució tot i ser una funcional i acceptable està força lluny de la forma “tradicional” de defensar els TFG de les universitats presencials. En aquest format s’avalua també la profunditat de coneixement de la persona que defensa per la naturalitat amb que és capaç de presentar el tema en directe o mitjançant preguntes que s’han de respondre a l’instant. Atès que la tecnologia actual permet l’enviament de vı́deo i àudio de forma instantània, a nivell tecnològic seria totalment viable la defensa dels TFG de forma sı́ncrona mitjançant una plataforma de vı́deo en directe. Aquesta plataforma permetria reproduir la mateixa formulació de les defenses “tradicionals” però sense necessitar que les persones implicades coincidissin en un espai fı́sic i per tant mantindria el tret distintiu de la UOC. D’altra banda, més enllà de la concurrència fı́sica, les persones implicades també han de coincidir en una finestra temporal per tal de poder dur a terme aquesta hipotètica defensa “en directe”. Aquest no és ni molt menys un problema menor, ja que hi ha un volum important de persones implicades i les persones implicades acostumen a tenir restriccions temporals importants (tant el professorat que sovint és titular en alguna universitat presencial, com l’alumnat que sovint té una feina i/o càrregues familiars). Aixı́ doncs més enllà del repte tecnològic és clar que existeix un problema de planificació al voltant de com assignar les persones implicades en el tribunal i les franges horàries de la forma més convenient possible. Atès que els problemes de planificació no són problemes trivials en absolut, és necessari un estudi acurat del problema per tal de poder generar un mètode eficient per realitzar aquestes assignacions.. 1.2. Objectius del Treball. L’objectiu principal del Treball és sintetitzar un mètode que rebent les condicions inicials de la planificació a realitzar, generi una calendarització eficient. 1.
(12) 2. CAPÍTOL 1. INTRODUCCIÓ. Un objectiu parcial imprescindible per poder assolir l’objectiu principal del Treball és formalitzar aquest problema concret per tal de poder-lo atacar amb rigor. Un altre objectiu parcial però molt interessant és l’estudi dels problemes de planificació, la dificultat que comporta aquests tipus de problemes aixı́ com quines són les diferents estratègies que es poden fer servir per construir una solució a aquest tipus de problemes. Finalment un darrer objectiu és explorar els diferents mètodes que existeixen per atacar problemes d’aquest tipus, entendre quina és l’aproximació que fa servir cadascun i triar el o els que millor s’adaptin a les necessitats. En cas que se’n triı̈ més d’un caldrà fer també una anàlisi dels resultats per triar-ne el més adient.. 1.3. Enfocament i mètode seguit. L’estratègia triada per a desenvolupar aquest projecte es basarà en un estudi teòric del problema a tractar recolzat en estudis genèrics al voltant dels problemes de planificació. Tot seguit es durà a terme una anàlisi dels mètodes existents per a tractar problemes d’aquests tipus, aixı́ com dels diferents llenguatges que els mètodes fan servir per formalitzar el problema. Un cop realitzat aquesta anàlisi es triarà el llenguatge o llenguatges i l’instrument o instruments que es considerin més adients per a atacar el problema i es durà a terme la construcció de l’eina per resoldre el problema recolzat en les tecnologies triades. Finalment es durà a terme una valoració de les diferents solucions obtingudes.. 1.4. Planificació del Treball. La planificació del Treball està en aquest cas relacionada directament amb l’estratègia a seguir. S’aproxima una dedicació setmanal de 20h repartides en 5 dies cada setmana. Tenint en consideració aquesta dedicació es duu a terme la planificació amb les següents durades (cal considerar que tota la planificació inclou una reserva de temps per redacció de la part de la memòria relacionada amb cada etapa):. 0.- 20/09-02/10 Pla de treball (9 dies): Primera etapa consistent en planificar el desenvolupament del treball, l’abast que tindrà i les etapes necessàries per cobrir-lo. El producte d’aquesta etapa és el pla de treball presentat en aquest capı́tol. 1.- 03/10-21/10 Estudi teòric del problema (12 dies): Aquesta fase començarà un cop finalitzada la planificació del treball i consisteix en entendre en profunditat el problema, estudiar la dificultat intrı́nseca del problema aixı́ com les possibles dificultats que poden sorgir. Com a producte d’aquesta etapa obtindrem una noció de la complexitat del problema aixı́ com una descripció explicita, formal i detallada del problema. 1.1- 03/10-10/10 Descripció detallada del problema (6 dies): El primer pas en aquest treball ha de ser comprendre la idiosincràsia del problema a tractar i aixı́ poder definir-lo amb precisió. 1.2 11/10-21/10 Anàlisi de complexitat (6 dies): un cop està ben definit el problema a tractar es pot fer una anàlisi de la complexitat del mateix per comprendre quin tipus de problema s’està enfrontant i aixı́ poder comprendre les limitacions teòriques quant a eficiència o decibilitat..
(13) 1.4. PLANIFICACIÓ DEL TREBALL. 3. 24/10 En aquest punt es produirà el primer lliurament que inclourà tota la primera etapa relacionada amb la part teòrica del Treball. S’han reservat 2 dies per l’elaboració d’aquest lliurament que, com la redacció de memòria està contemplada en la planificació de cada etapa seran suficient. 2.- 25/10-11/11 Estudi de mètodes existents: Aquesta etapa consisteix en analitzar quins són els llenguatges i els mètodes existents per a resoldre problemes com el descrit a la primera etapa i quines avantatges i inconvenients té cadascun d’ells. Com a producte d’aquesta etapa obtindrem la decisió de quin mètode o mètodes i quin llenguatge o llenguatges farem servir per tal de atacar el problema. 2.1 25/10-05/11 Anàlisi i tria de llenguatges i mètodes existents (8 dies): consisteix en una recerca per presentar els mètodes existents que siguin compatibles amb el problema i quins llenguatges fan servir aquests mètodes. Un cop feta aquesta recerca es triaran els més convenients per construir l’eina. 2.2 06/11-11/11 Aprenentatge del llenguatge/s i el mètode/s (4 dies): un cop triat els mètodes més adients per atacar el problema és necessari comprendre’n el funcionament i la forma d’usar-los per tal de poder-los emprar. 3.- 12/11-04/12 Construcció de l’eina: Durant aquesta etapa es durà a terme la formalització del problema en el llenguatge o llenguatges triats en l’etapa anterior i es construirà l’eina aplicant els mètodes seleccionats per a resoldre el problema descrit. Com a producte d’aquesta etapa s’obtindrà l’eina proposada per a resoldre el problema descrit. 3.1 12/11-25/11 Formalització del problema (10 dies): un cop triat el llenguatge a fer servir i l’eina cal desenvolupar la part de l’eina que donades les condicions inicials del problema en deriva una descripció del problema en el llenguatge de l’eina. 3.2 26/11-04/12 Aplicar els mètodes triats (7 dies): tenint el problema ja formalitzat en el llenguatge adient es poden finalment aplicar els mètodes triats per tal de construir les solucions. 04/12 En aquest punt es farà el segon lliurament incloent fins a l’etapa 3.1 i per tant es presentarà en aquesta segona entrega quina serà la implementació de l’eina, tenint ja triat el mètode, el llenguatge i presentant el problema formalitzat en el llenguatge triat. Un cop més, s’han reservat 2 dies per l’elaboració d’aquest lliurament ja que la documentació es farà a cada etapa i per tant la tasca de cara al lliurament serà només la de presentar-ho tot d’una forma clara i unida. 4.- 05/12-30/12 Anàlisi de les solucions: En l’etapa final s’analitzaran les diferents solucions construı̈des durant l’etapa anterior. Com a producte d’aquesta última etapa i per tant com a producte últim del Treball s’obtindrà una eina eficient per a generar solucions per a problemes com el descrit en la primera etapa. 4.1 05/12-12/12 Construcció del conjunt de dades (6 dies): com a primer pas per tal de poder experimentar amb el mètode construı̈t, es desenvoluparà un mètode per generar conjunts d’exemples d’instàncies del problema descrit per tal de poder provar el mètode generat en diferents situacions. 4.2 13/12-24/12 Anàlisi de les solucions obtingudes (8 dies): partint del conjunt d’instàncies.
(14) 4. CAPÍTOL 1. INTRODUCCIÓ generat a l’etapa anterior es duran a terme una sèrie d’experiments per tal de poder validar la correctesa del mètode i avaluar-ne l’optimalitat. 4.3 25/12-30/12 Refinament del mètode (4 dies): un cop realitzades totes les proves considerades necessàries caldrà incorporar al mètode les possibles millores que s’hagin observat en l’anàlisi.. 31/12-03/01 Imprevistos (4 dies): En aquest punt de la planificació es reserven 3 dies com a factor de seguretat per als possibles imprevistos que hagin pogut sorgir durant el desenvolupament del treball. 5.- 03/01-08/01 Preparació de la memòria (4 dies): malgrat que en totes les etapes d’aquesta planificació hi ha reservat temps per a documentar el que s’ha realitzat durant l’etapa, és necessari reservar una última etapa per donar a tot el text un sentit més global i preparar-lo per a l’entrega final. El producte d’aquesta etapa serà la memòria del TFG ja finalitzada. 6.- 09/01-24/01 Preparació de la defensa (12 dies): tenint ja la memòria presentada i per tant la feina de desenvolupament finalitzada, el següent pas serà preparar la defensa del TFG. El producte d’aquesta etapa serà la pròpia defensa virtual. 7.- 27/01-31/01 Resposta preguntes del tribunal (5 dies): a partir de la defensa és probable que al tribunal li sorgeixin algunes preguntes a formular. Amb l’objectiu de respondre a aquestes preguntes es reserva també una etapa. El producte d’aquesta etapa serà per tant la resposta a les preguntes que el tribunal formuli sobre el TFG o sobre la defensa.. Finalment a fi de fer aquesta planificació més clara s’inclou un diagrama de Gantt representant la planificació exposada. A la figura 1.1 es presenta el diagrama i d’altra banda s’adjunta un informe complert de la planificació amb el nom Planificació.pdf..
(15) 1.5. SUMARI DE PRODUCTES OBTINGUTS. 1.5. 5. Sumari de productes obtinguts. • Una descripció detallada del problema. • Una formalització teòrica del problema aixı́ com una demostració de la seva complexitat computacional. • Una eina que resol correctament el problema. • Un mètode per generar automàticament instàncies del problema. • Una anàlisi de la correctesa i rendiment de l’eina.. 1.6. Recursos emprats. Pel desenvolupament d’aquest Treball s’han fet servir els recursos i eines introduı̈ts en aquest apartat. Cal entendre tots els resultats presentats en el context de les eines usades i els codis presentats en el context de les versions del programari usades. • PC: Windows 10 64 bits, Intel Core i7-8750 CPU @ 2.20 GHz (12 CPUs), memòria RAM 8192MB. • ECLi P S e CLP versió 7.0 #50 (x86 64 nt). • Java versió 13 2019-09-17. • Java(TM) SE Runtime Environment (build 13+33).. 1.7. Descripció dels altres capı́tols de la memòria. Aquesta memòria consta dels següents capı́tols: • Presentació del problema: en aquest capı́tol es presentarà el problema i s’oferirà una formalització teòrica del mateix. • Anàlisi de complexitat: en aquest capı́tol es durà a terme l’estudi i demostració de la complexitat computacional del problema formalitzat al capı́tol anterior. • Formalització del problema: en aquest capı́tol es formalitzarà el problema en un llenguatge de programació i es desenvoluparà l’eina per resoldre’l. • Generador d’instàncies: en aquest capı́tol es presentarà una eina per generar instàncies aleatòries i correctes del problema. • Joc de proves: en aquest capı́tol es duran a terme els jocs de proves adients per l’eina i es comprovarà la correctesa de la mateixa. • Refinament de l’eina: en aquest capı́tol es presentaran els canvis oportuns per millorar l’eficiència de l’eina. • Estudi de l’impacte dels paràmetres en l’eficiència: en aquest capı́tol es presentarà un estudi de l’impacte dels paràmetres en l’eficiència de l’eina i en el cost de resolució d’una instància. • Conclusions: en aquest últim capı́tol es presentaran les conclusions d’aquest Treball..
(16) 6. CAPÍTOL 1. INTRODUCCIÓ. Figura 1.1: Diagrama de Gantt per al Treball.
(17) Capı́tol 2. Presentació del problema En aquest capı́tol es farà una presentació en detall del problema, primerament es mostrarà el model construı̈t per formalitzar la situació i tot seguit es presentaran els 2 problemes construı̈ts fent servir el model. D’una banda la versió de càlcul del problema, que pretén generar una solució per a cada instància del problema i d’altra banda la versió de decisió que pretén decidir si existeix una solució o no per a cada instància del problema.. 2.1. Presentació model formal. El problema tractat en aquest Treball consisteix en com realitzar la planificació de les defenses dels TFGs del Grau en Enginyeria Informàtica de la UOC. Per tal de tractar aquest problema cal primer construir el model del problema, per això es tindran en consideració els paràmetres rellevants del problema: Un nombre de franges en que es poden presentar els treballs (i la informació de quines franges coincideixen en el temps); un nombre de treballs a presentar (i la informació per a cada treball sobre a quina àrea del coneixement pertany i sobre la disponibilitat temporal de l’alumne que el presenta); un nombre de docents (i per a cada docent la informació sobre en quines àrees és expert i sobre la disponibilitat temporal d’aquest per ser tribunal); el nombre de docents que composen un tribunal; el nombre màxim de treballs dels que un docent pot ser tribunal i el nombre màxim de treballs que es poden presentar en cada franja. Tenint aquests paràmetres el problema consisteix en generar una assignació de docents a cada franja i una assignació de franja a cada treball seguint una sèrie de restriccions que un cop més modelen la realitat del problema: tots els treballs han d’estar assignats a una franja i només a una, els membres de tots els tribunals han de ser diferents, cal respectar la disponibilitat dels docents i dels alumnes, cal respectar els màxims per cada franja i per cada docent, cap docent pot formar part d’un tribunal si en aquella franja es presenta un treball d’una àrea en que no és expert, cap docent pot ser membre de dos tribunals si pertanyen a franges que coincideixen en el temps. Considerant aquesta descripció més precisa del problema es construeix el següent model formal:. 7.
(18) 8. CAPÍTOL 2. PRESENTACIÓ DEL PROBLEMA Paràmetres:. · F ∈ N+ : nombre de f ranges/tribunals. · T ∈ N+ : nombre de treballs/alumnes. · D ∈ N+ : nombre de docents. · N ∈ {0...D} : nombre de docents per tribunal. · M F ∈ {0...T } : nombre màxim de treballs per f ranja. · M T ∈ {0...T } : nombre màxim de treballs dels que pot ser tribunal un docent. · disdi,j ∈ {0, 1} : disponibilitat del docent i − èssim durant la f ranja j − èssima. i∈ {1...D} j∈ {1...F } · disti,j ∈ {0, 1} : disponibilitat de l0 alumne i − èssim durant la f ranja j − èssima. i∈ {1...T } j∈ {1...F } · solapi,j ∈ {0, 1} : la f ranja i − èssima se sol · lapa amb la f ranja j − èssima. i∈ {1...F } j∈ {1...F } · expi,j ∈ {0, 1} : el docent i − èssim és expert en el tema que tracta el treball j − èssim. i∈ {1...D} j∈ {1...T }. Variables: · trebi : F ranja de def ensa del treball i − èssim · i ∈ {1...T } · tribi,j : j − èssim membre del tribunal de la f ranja i − èssima · i ∈ {1...F } · j ∈ {1...N }.
(19) 2.1. PRESENTACIÓ MODEL FORMAL Dominis: · trebi ∈ {1...F } · tribi,j ∈ {1...D}. Restriccions: 1.. Cada treball ha d’estar assignat exactament a una franja: Per construcció se satisfarà automàticament. 2.. Els n membres del tribunal són diferents: ∀i ∈ {1...F }, ∀j ∈ {1...N }, ∀j 0 ∈ {1...N } j 6= j 0 | o tribi,j 6= tribi,j 0. 3.. Cap docent no pot estar assignat a una franja en que no estigui disponible: n o ∀i ∈ {1...F }, ∀j ∈ {1...N } | disdtribi,j ,trebi = 1. 4.. Cap alumne no pot estar assignat a una franja en que no estigui disponible: o n ∀i ∈ {1...T } | disti,trebi = 1. 5.. Cap franja no pot tenir més treballs que el màxim fixat: n o ∀f ∈ {1...F } | #{i ∈ {1..T }|trebi = f } 6 M F. 6.. Cap docent no pot tenir més treballs assignats que el màxim fixat: n o ∀d ∈ {1...D} | #{i ∈ {1..F }, | ∃j ∈ {1..N } : tribi,j = d} 6 M T. 7.. Els membres de tribunals de franges sol·lapades han de ser diferents: n ∀j ∈ {1...F }, ∀j 0 ∈ {1...F } j 6= j 0 | solapj,j 0 = 1 ⇒ o ∀i ∈ {1...N }, ∀i0 ∈ {1...N } tribi,j 6= tribi0 j 0. 8.. Tots els membres dels tribunals d’una franja han de ser experts en el tema dels treballs exposats: n o ∀i ∈ {1...T }, ∀j ∈ {1...N } | trebi = k ⇒ exptribk,j ,i = 1. 9.
(20) 10. CAPÍTOL 2. PRESENTACIÓ DEL PROBLEMA. 2.2. Presentació problema de càlcul. Partint de la modelització del problema presentada a l’apartat anterior, es defineix el problema de càlcul com, rebent la següent entrada (i.e. una instància del problema):. e = (F, T, D, N, M F, M T, disd, dist, solap, exp) n o e ∈ N6 × {BD×F } × {BT ×F } × {BF ×F } × {BD×T } amb B = {0, 1}. Generar una sortida: n o t = (trib, treb) ∈ {NF ×N } × NT Que respecti totes les restriccions definides.. 2.3. Presentació problema de decisió. D’altra banda també podem definir un problema de decisió a partir del model. Aquest es definirà com, rebent la següent entrada:. e = (F, T, D, N, M F, M T, disd, dist, solap, exp) n o e ∈ N6 × {BD×F } × {BT ×F } × {BF ×F } × {BD×T } amb B = {0, 1}. Generar una sortida binària que serà afirmativa si existeix un: n o t = (trib, treb) ∈ {NF ×N } × NT Que respecti totes les restriccions definides i negativa en cas que no existeixi..
(21) Capı́tol 3. Anàlisi de complexitat En aquest capı́tol es durà a terme una anàlisi de la complexitat del problema tractat durant el TFG. Aquesta anàlisi servirà com a referència teòrica per tal de poder analitzar les estratègies per atacar el problema tenint present la seva dificultat. L’anàlisi constarà d’una primera part en que es tractaran les mides de l’entrada i la sortida com a punt de partida necessari per l’estudi de la complexitat. Tot seguit es presentarà la prova de que en la versió de decisió el problema és NP-Complet. Seguint el resultat de (pàgina 45 de [3]) per demostrar la NP-Completesa caldrà comprovar que: (a) El problema és NP. (b) Existeix un problema a NP-C que és transformable en temps polinòmic al nostre problema i aquesta transformació conserva els resultats.. 3.1. Anàlisi d’instàncies i testimonis. En primer lloc analitzarem quin és l’espai que ocupa una instància del problema, per tant l’espai que ocupa una entrada per al nostre problema de càlcul. Tot seguit es farà un estudi anàleg per a la sortida del problema de càlcul. Prenent com a entrada la següent instància del problema de càlcul:. e = (F, T, D, N, M F, M T, disd, dist, solap, exp) n o e ∈ N6 × {BD×F } × {BT ×F } × {BF ×F } × {BD×T } amb B = {0, 1} es veu que el nombre d’elements de la entrada serà: 6 + DF + T F + F 2 + DT que pertany a O(DF + T F + F 2 + DT ) i aquest el podem afitar per O(K 2 ) amb K = max{F, D, T, N }. Aixı́ doncs podem afirmar que la mida de l’entrada pertany a O(K 2 ). Respecte a la sortida del problema de càlcul (que esdevindrà el testimoni per al problema de decisió), definint-la de la següent forma: n o t = (trib, treb) ∈ {NF ×N } × NT es veu que el nombre d’elements de la sortida del problema de càlcul (i per tant també del testimoni per al problema de decisió) serà: F × N + T que pertany a O(K 2 ). 11.
(22) 12. 3.2. CAPÍTOL 3. ANÀLISI DE COMPLEXITAT. Demostració pertinença a NP. Per demostrar que el nostre problema en la seva versió de decisió està en NP, seguint (pàgina 28 de [3]), necessitem veure que : -Un testimoni per al nostre problema de decisió té mida polinòmica respecte a la mida de l’entrada. -Donat un testimoni podem comprovar en temps polinòmic respecte a la mida de l’entrada si es tracta d’una resposta vàlida o no. Per tal de demostrar aquestes dues afirmacions primerament definirem com serà un testimoni per al nostre problema en la seva versió de decisió. Prendrem com a testimoni un t = (trib, treb) tal i com s’ha definit per la sortida del problema en la seva versió de càlcul. Per demostrar la primera condició recordem que tal i com s’ha calculat a l’apartat anterior aquest t té mida O(K 2 ) i com l’entrada del problema té també mida O(K 2 ), llavors podem afirmar que el testimoni té mida lineal respecte a la mida de l’entrada i per tant polinòmica. Aixı́ doncs la primera condició queda provada. Respecte a la segona condició i partint del testimoni definir a l’apartat anterior, calcularem el cost de comprovar si el testimoni rebut satisfà totes les restriccions:. 1. Quant a la primera restricció tal i com es va detallar en la formalització per la pròpia construcció del testimoni se satisfà automàticament. Aixı́ doncs no és necessari realitzar cap comprovació. 2. Per comprovar que tots els membres de tots els tribunals són diferents recorrerem cada franja de trib (cost O(T )) i per cada franja (és a dir els tribi,∗ ) ordenarem els membres del tribunal de la franja i farem un recorregut per comprovar que són diferents (comprovant que tots són diferents del seu anterior). Aixı́ doncs cada franja tindrà un cost de O(N logN + N ) i per tant tota la comprovació tindrà un cost de O(T (N logN + N )), per tant O(T N logN ) ∈ O(K 3 ). 3. Per la tercera restricció hem de comprovar que cap docent està assignat a una franja en que no està disponible. Per realitzar aquesta comprovació simplement hem de recórrer trib i per a cada membre d = tribi,j de cada tribunal comprovar que està disponible, és a dir disdd,i = 1. Aquest recorregut tindrà un cost de O(F N ) i per tant O(K 2 ). 4. La quarta restricció és anàloga a la tercera però comprovant la disponibilitat dels alumnes. Per tant només cal recórrer treb i per a cada treball t = trebi comprovar que disti,t = 1. Aquesta comprovació prendrà per tant un cost de O(T ), per tant O(K). 5. Per comprovar que cap franja té més treballs que el màxim M F i per tant comprovar la cinquena restricció, crearem un vector V de mida T inicialitzat a 0 (això tindrà un cost de O(T )) i tot seguit farem un recorregut per treb (amb un cost de O(T )). A cada t = trebi incrementarem en 1 el valor de la posició t del vector creat, per tant farem Vi + = 1, si en el moment d’incrementar algun valor aquest esdevé major a M F la restricció s’haurà violat. En altre cas aquesta comprovació tindrà un cost de O(2T ) i per tant O(K)..
(23) 3.3. DEMOSTRACIÓ NP-COMPLETESA. 13. 6. Per comprovar la sisena restricció, és a dir, que cap docent té assignats més tribunals que el màxim M T durem a terme un procés similar al de la restricció 5. Crearem un vector V de mida D inicialitzat a 0 (això tindrà un cost de O(D)) i tot seguit farem un recorregut per trib (amb un cost de O(F N )). Per a cada d = tribi,j del recorregut farem Vtribi,j + = 1, si en el moment d’incrementar algún valor esdevé major a M T la restricció s’haurà violat, en altre cas aquesta comprovació tindrà un cost de O(D + F N ) i per tant O(K 2 ). 7. Per comprovar que el testimoni satisfà la setena restricció hem de revisar que no hi ha cap docent assignat a dues franges que se sol·lapen. Per comprovar-ho recorrerem solap (cost de O(F 2 ))i per cada element solapi,j = 1 realitzarem el següent procediment: prendrem les files i i j de trib, per tant els tribi,∗ i tribj, ∗ i els comprovarem tots amb tots. Aquesta comprovació tindrà un cost de O(N 2 ) i com aquesta comprovació es realitzarà a cada pas el cost total serà de O(F 2 N 2 ) i per tant O(K 4 ). 8. Finalment per comprovar que tots els membres del tribunal d’una franja són experts en els temes dels treballs exposats en la franja, i per tant comprovar la vuitena restricció, farem un recorregut sobre treb (amb cost de O(T )) i per a cada treball i comprovarem que els D docents tribtrebi ,∗ són expert en el tema que tracta el treball i, per tant comprovarem que exptribtrebi ,i = 1. Aquesta segona comprovació per a cada treball tindrà un cost de O(D) i per tant tota la comprovació de la vuitena restricció tindrà un cost de O(T D), i per tant O(K 2 ). El cost total de comprovar que un testimoni respecta totes les restriccions serà la suma del cost de la comprovació de cadascuna de les restriccions, per tant: O(K 3 ) + O(K 2 ) + O(K) + O(K) + O(K 2 ) + O(K 4 ) + O(K 2 ) això suma un total de O(K 4 + K 3 + 3K 2 + 2K) i per tant tota la comprovació té un cost de O(K 4 ). Considerant que l’entrada té un cost de O(K 2 ), la comprovació té un cost quadràtic respecte a la mida de la seva entrada ja que O(K 4 ) = O((K 2 )2 ). Aixı́ doncs es pot comprovar si un testimoni és una solució correcta del nostre problema en temps polinòmic respecte a la mida de l’entrada, la qual cosa significa que el nostre problema és NP.. 3.3. Demostració NP-Completesa. Per tal de demostrar la NP-Completesa del nostre problema en la seva versió de decisió necessitarem que el problema sigui NP (provat a l’apartat anterior) i fer la reducció de un problema de NP-C al nostre problema. Per a dur a terme aquesta reducció es triarà el problema NP-C 3DM [4] definit de la següent forma:. Donat M ⊆ {X × Y × Z} tal que X ∩ Y = ∅, X ∩ Z = ∅, Z ∩ Y = ∅ i |X| = |Y | = |Z| = q Conté M algun M 0 ⊆ M tal que |M 0 | = q i cap parell d’elements de M 0 coincideixen en cap coordenada?.
(24) 14. CAPÍTOL 3. ANÀLISI DE COMPLEXITAT Tot seguit es presenta la transformació de 3DM al nostre problema en la seva versió de decisió:. Donats q i M ⊆ {X × Y × Z} fixarem un ordre concret per als elements de M i anomenarem mi = (xmi , ymi , zmi ) a l’i-èssim element de M . Construirem una entrada e = (F, T, D, N, M F, M T, disd, dist, solap, exp) vàlida per al nostre problema de la següent forma:. F = |M | T =q D = 2q N =2 MF = 1 MT = 1 distxmi ,i = 1 ∀i ∈ {1...|M |} i dista,b = 0 altrament. cost de (O(q|M |)) disdymi ,i = disdq+zmi ,i = 1 ∀i ∈ {1...|M |} i disda,b = 0 altrament. cost de (O(2q|M |)) solap = J|M | la matriu amb tot uns.. cost de O(|M |2 ). expymi ,i = expq+zmi ,i = 1 ∀i ∈ {1...|M |} i expa,b = 0 altrament. cost de (O(2q|M |)) Aixı́ doncs construir l’entrada per al nostre problema a partir de l’entrada del 3DM té un cost de O(|M |2 + 5q|M |) = O(|M |2 ) i per tant és polinòmic respecte a la mida de l’entrada.. La noció intuı̈tiva de la reducció és que creem una franja per a cada tupla dins M . D’altra banda creem un treball per a cada element de X i un docent per a cada element de Y i Z, els de Y identificats de 1 a q i els de Z identificats de q a 2q. Com per a cada treball i cada docent només activem la seva disponibilitat a la franja que correspon a la tupla en la que apareixen, el resultat és que per a cada treball (és a dir element de X) les úniques possibles assignacions de tribunal són justament les que contenen professors en la disponibilitat de la seva franja (és a dir les parelles d’elements de Y i Z amb que apareixen a una tupla). Com a resultat les franges assignades a treb són les túples seleccionades per formar M 0 i de fet tot i ser redundant, mirant els ı́ndexs de treb i els continguts de trib podrı́em trobar les túples explı́citament: a tribi,j trobarı́em les components my i mz (per a les mz haurı́em de restar q) de cada tupla i els ı́ndexs de treb representarien les components mx..
(25) 3.3. DEMOSTRACIÓ NP-COMPLETESA. 15. Tot seguit es presenta un exemple d’aquesta transformació per mostrar-ne el raonament i clarificar-ne el sentit. Partint de la instància de 3DM presentada a la figura 3.1: Figura 3.1: Instància 3DM. Un cop aplicades les restriccions dels alumnes i dels docents per les franges i els criteris d’expertesa de docents i treballs quedarien les possibilitats per assignar mostrades a la figura 3.2 : Figura 3.2: Transformació 3DM. Aquesta taula es pot interpretar de dues formes diferents: D’una banda, si ho mirem des del punt de vista de 3DM veiem que i determina el valor de x en la tupla i que el tribunal són els valors de y i z de les túples que existeixen a M que tinguin aquest valor de x (noti’s que als valors del segon membre del tribunal cal restar-li 10). També cal notar que els possibles valors de treb representen l’identificador de la tupla. Per tant podem veure en aquesta taula com les túples de l’M de 3DM estan representades. D’altra banda si ho mirem des del punt de vista del nostre problema veiem que per a cada treball (els i) tenim diferents possibles tribunals, però recordem que cada treball només pot estar assignat a una franja i per tant a un tribunal. Això es tradueix en que per a cada treball hem de triar un dels possibles tribunals. Noti’s que si tornem a mirar aquest últim fet des del punt de vista de 3DM tenim que per a cada valor de x, hem de triar una i només una de les túples que el contenen (que és exactament el que volem que passi). Finalment cal notar que el fet de que cada docent només pugui formar part d’un tribunal (recordem M T = 1) significa que en el moment en que un docent és assignat a un tribunal no.
(26) 16. CAPÍTOL 3. ANÀLISI DE COMPLEXITAT. pot aparèixer en cap altre tribunal. Si ens mirem aquesta última afirmació des del punt de vista de 3DM significa que quan un valor de y o z apareix en una tupla triada com a solució llavors no pot aparèixer en cap altra tupla triada, que és exactament la restricció de 3DM. Recapitulant la lectura, tenim els diferents valors de x a les túples (els treballs) i per a cadascun hem de triar una i només una de les túples (un únic tribunal dels que té disponibles) de forma que repeteixi cap coordenada (sense que cap docent repeteixi)..
(27) Capı́tol 4. Formalització del problema Em aquest capı́tol es presenta la formalització del problema fent servir l’eina ECLi P S e CLP [5]. Aquesta eina es defineix al seu lloc web com : Un programari de codi obert per al desenvolupament rendible d’aplicacions de programació en restriccions, per exemple, en els àmbits de la planificació, l’assignació de recursos, els calendaris, el transport etc. [...]Conté diverses llibreries per la resolució de problemes de restriccions, un llenguatge de control i modelat en alt nivell, interfı́cies per a resoldre problemes de tercers, un entorn de desenvolupament integrat i interfı́cies per la seva integració en entorns de host. Tal com es pot veure és un programari especialment dissenyat per tractar problemes de restriccions com planificació o calendarització, exactament problemes com el que es tracta en aquest Treball. És per això que s’ha triat aquesta eina i en particular laa llibreria IC, definida al seu lloc web [6] com: Un solucionador hı́brid de restriccions aritmètiques en intervals enters/reals. Permet modelar problemes relacionats amb variables enteres, contı́nues (reals) o una barreja d’aquestes. Suporta una gran varietat de restriccions lineals i no-lineals. A més a més les llibreries addicionals de la familia ic xxx proveeixen restriccions globals sobre el mateix domini de variables.. 4.1. Definició de les instàncies. La definició de les instàncies del problema es fa seguint la definició formal feta al Capı́tol 3 afegint un nom per a cada instància, és a dir el primer element de la tupla serà el nom de la instància, seguit dels paràmetres escalars N ombreF ranges (F ), N ombreP rojectes (T ), N ombreDocents (D), M idaT ribunal (N ), M axT reballsxF ranja (M F ), M axT reballsxDocent (M T ) i tot seguit les matrius Disd, Dist, Solap, Exp. A continuació es mostra un exemple de com queda representada en el codi una instància simple del problema : 1 2 3 4 5. instancia ( simple ,2 ,2 ,2 ,1 ,100 ,100 , % Disd []( [](1 ,1) , [](1 ,1). 17.
(28) 18 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22. CAPÍTOL 4. FORMALITZACIÓ DEL PROBLEMA ), % Dist []( [](1 ,1) , [](1 ,1) ), % solap []( [](1 ,0) , [](0 ,1) ), % exp []( [](1 ,1) , [](1 ,1) ) ).. 4.2. Funció resol. Un cop definides les instàncies es codifica la part principal del codi: la funció resol, que rebent el nom d’una instància per paràmetre respon si la instància és o no satisfactible i en cas afirmatiu en calcula les solucions. Aixı́ doncs aquesta funció resol tant el problema de decisió com el problema de càlcul. En aquest apartat se’n presenta i detalla el funcionament i el codi.. 4.2.1. Lectura d’instància. Per realitzar la lectura de la instància a tractar s’inclou una restricció que emparella variables amb els paràmetres rebuts de forma que els valors estiguin disponibles (addicionalment s’inclouen comentaris amb els noms formals aixı́ com les mides de les matrius) : 1 2 3 4 5 6 7 8 9 10 11 12. instancia ( NomInstancia , NombreFranges , %(F) NombreProjectes , %(T) NombreDocents , %(D) MidaTribunal , %(N) MaxTreballsxFranja , % ( MF ) MaxTreballsxDocent , % ( MT ) Disd , % ( di , fj ) per di - > i in (1... D ) per fj -> j in (1... F ) Dist , % ( ti , fj ) per ti - > i in (1... T ) per fj -> j in (1... F ) Solap , % ( fi , fj ) per fi - > i in (1... F ) per fj -> j in (1... F ) Exp ) , % ( di , tj ) per di - > i in (1... D ) per t_j - > k in (1... T ). 4.2.2. Variables del problema. Tot seguit es defineixen les variables del problema seguint la formalització del problema, aixı́ com les seves mides i dominis: 1 2. dim ( Treb , [ NombreProjectes ]) , Treb :: [1.. NombreFranges ] ,. 3 4 5. dim ( Trib , [ NombreFranges , MidaTribunal ]) , Trib :: [1.. NombreDocents ] ,.
(29) 4.2. FUNCIÓ RESOL. 4.2.3. 19. Definició de restriccions. Un cop fetes les definicions prèvies, es procedeix a implementar les restriccions del problema reformulant-les quan s’escaigui. Com a primera observació cal fer notar certs problemes de satisfactibilitat i la gran quantitat de simetries que pot generar el problema si el formalitzem en ECLi P S e CLP tal i com està definit teòricament. Pensem per exemple en la instància següent: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22. instancia ( exemple ,2 ,2 ,2 ,2 ,100 ,100 , % Disd []( [](1 ,1) , [](0 ,0) ), % Dist []( [](1 ,1) , [](1 ,1) ), % solap []( [](1 ,0) , [](0 ,1) ), % exp []( [](1 ,1) , [](1 ,1) ) ).. Tot i ser evident que aquesta instància és trivialment satisfactible simplement assignant els dos treballs a la franja 1 i els dos docents també a la franja 1. Si es formalitza el problema directament com està plantejar de forma teòrica i tenint en compte que en ECLi P S e CLP les variables no poden quedar sense assignar, el solver intentaria assignar docents a la franja 2 i com no podria (ja que cap docent està disponible a la franja 2) tot i tenir una assignació vàlida per a tots els treballs s’obtindria que aquesta instància és insatisfactible. Per tal d’evitar aquesta situació s’afegeix una nova la condició: • si una franja no té cap treball assignat llavors les restriccions no li apliquen. D’altra banda, considerant aquesta nova restricció es podria fer qualsevol assignació a les franges D que estiguessin buides, la qual cosa provocaria una gran quantitat de simetries (en concret N solucions per cada assignació vàlida de les franges no buides). Per evitar-ho s’afegirà una nova restricció: • si una franja queda buida, llavors se li assignaran els N primers docents. Un cop fetes aquestes observacions es presenta la formalització de les restriccions:.
(30) 20. CAPÍTOL 4. FORMALITZACIÓ DEL PROBLEMA. Restricció per les franges buides Primerament s’implementa la restricció si una franja queda buida, llavors se li assignaran els N primers docents. Per implementar-la es fa un recompte del nombre de vegades que apareix cada franja a T reb i en cas que aquest sigui 0 a la franja en qüestió se li assigna el tribunal composat pels N primers docents. Aquest recompte es fa mitjançant la funció occurrences de la llibreria ic global. Seguint aquest enfocament, la restricció queda codificada de la següent forma: 1 2 3 4 5 6 7 8. ( for (I ,1 , NombreFranges ) , param ( Treb , Trib , MidaTribunal ) do occurrences (I , Treb , Ocui ) , #=( Ocui ,0 , Aux1 ) , ( for (J ,1 , MidaTribunal ) , param (I , Trib , Aux1 ) do #=( Trib [I , J ] ,J , Aux2 ) , = >( Aux1 , Aux2 ,1) ) ),. Restricció 2 Respecte a la restricció 2: Els membres del tribunal són diferents cal fer dues observacions: En primer lloc s’ha formalitzat fent servir la restricció alldifferent de la llibreria ic global. Aquesta decisió s’ha pres per tal d’aprofitar el rendiment de les funcions incloses a les llibreries i per simplificar el codi. Per tant la restricció queda reformulada com que per a cada fila de la matriu T rib tots els elements han de ser diferents. En segon lloc s’ha decidit afegir una sub-restricció a aquesta restricció que exigeixi que els membres d’un tribunal han d’estar ordenats de menor a major. Aquesta restricció s’ha afegit per tal d’evitar simetries, ja que en cas de no estar ordenats, per a cada assignació vàlida de membres a un tribunal de mida N apareixerien N ! solucions vàlides (les N ! permutacions dels N membres del tribunal en els N llocs al tribunals). Aixı́ doncs aquesta sub-restricció queda reformulada com que per a cada fila de la matriu T rib els elements han d’estar ordenats. Cal notar que afegir aquesta nova sub-restricció, fa innecessària la restricció original (que diu que tots els membres han de ser diferents) ja que clarament si estan estrictament ordenats llavors necessàriament han de ser diferents. Tot i aixı́ es decideix mantenir-la per fidelitat a la formulació original i ja que restriccions redundants poden ajudar al solver a ser més eficient. Un cop fetes aquestes observacions es presenta la formalització de la restricció: 1 2 3 4. ( for (I ,1 , NombreFranges ) , param ( Trib ) do alldifferent ( Trib [ I ]) , ordered ( < , Trib [ I ]) ),. Restricció 3 La restricció 3: Cap Docent no pot estar assignat a una franja en que no estigui disponible originalment estava formulada de la següent forma:. n o ∀i ∈ {1...F }, ∀j ∈ {1...N } | disdtribi,j ,trebi = 1.
(31) 4.2. FUNCIÓ RESOL. 21. Però tenint en compte la restricció afegida respecte a les franges buides es decideix reescriure-la de la següent forma: n o ∀i ∈ {1...T }, ∀j ∈ {1...F }, ∀k ∈ {1...N }, ∀l ∈ {1...D} | j = trebi , l = tribj,k ⇒ disdi,j = 1. És a dir, que per a tot treball, per a tot docent, per a tota franja i per a tot lloc a la franja, si un treball està assignat a la franja i un docent està assignat com a tribunal de la franja, llavors el docent ha d’estar disponible en la franja. Noti’s que d’aquesta forma només s’aplica la restricció a les franges en que hi ha algun treball i per tant les franges buides podrien tenir assignats docents que no estiguin disponibles (fent aixı́ possible assignar a les franges buides els N primers docents estiguin o no disponibles). Aquesta nova formulació de la restricció queda plasmada al codi de la següent forma: 1. 2 3. 4 5 6 7 8 9 10 11 12 13 14 15. ( for (I ,1 , NombreProjectes ) , param ( Disd , Trib , Treb , NombreDocents , MidaTribunal , NombreFranges ) do Franja #= Treb [ I ] , ( for (J , 1 , NombreFranges ) , param ( Disd , Franja , Trib , NombreDocents , MidaTribunal ) do #=( J , Franja , Aux1 ) , ( for (K , 1 , MidaTribunal ) , param (J , Disd , Aux1 , Trib , NombreDocents ) do Docent #= Trib [J , K ] , ( for (L , 1 , NombreDocents ) , param ( Disd , Docent , Aux1 , J ) do #=( L , Docent , Aux2 ) , #=( Disd [L , J ] ,1 , Aux3 ) , and ( Aux1 , Aux2 , Aux4 ) , = >( Aux4 , Aux3 ,1) ) ) ) ),. Restricció 4 La restricció 4: Cap alumne no pot estar assignat a una franja en que no estigui disponible es reescriu de forma similar a la anterior i passa de ser: n o ∀i ∈ {1...T } | disti,trebi = 1. A estar reescrita com a: n o ∀i ∈ {1...T }, ∀j ∈ {1...F } | j = trebi ⇒ disti,j = 1. És a dir que per a tot treball i per a tota franja, si el treball està assignat a la franja, llavors l’alumne ha d’estar disponible en la franja. Seguint aquesta nova definició, la restricció queda codificada de la següent forma:.
(32) 22 1 2 3 4 5 6 7 8. CAPÍTOL 4. FORMALITZACIÓ DEL PROBLEMA. ( for (I ,1 , NombreProjectes ) , param ( Treb , Dist , NombreFranges ) do Franja #= Treb [ I ] , ( for (J , 1 , NombreFranges ) , param ( Dist , I , Franja ) do #=( J , Franja , Aux1 ) , #=( Dist [I , J ] , 1 , Aux2 ) , = >( Aux1 , Aux2 , 1) ) ),. Restricció 5 La restricció 5 està definida teòricament de la següent forma: Cap franja no pot tenir més treballs que el màxim fixat. Per a codificar aquesta restricció s’ha decidit fer servir una funció predefinida de la llibreria ic global. Es tracta de la funció alldifferent ja emprada anteriorment però en aquest cas se’n farà servir una sobrecàrrega diferent que permet exigir un màxim per a les ocurrències de cada element d’una llista. Aixı́ doncs la restricció queda reformulada com que ‘cap franja pot aparèixer a T reb més de M axT reballsxF ranja vegades. Aquesta formulació es trasllada al codi de la següent forma: 1. alldifferent ( Treb , MaxTreballsxFranja ) ,. Restricció 6 La restricció 6 està definida com: Cap docent no pot tenir més treballs assignats que el màxim fixat originalment formalitzada de la següent forma:. n o ∀d ∈ {1...D} | #{i ∈ {1..F }, | ∃j ∈ {1..N } : tribi,j = d} 6 M T. Es reformula totalment introduint una nova estructura auxiliar Esprof e ∈ {BD×T } definida de la següent forma: n o ∀i ∈ {1...T }, ∀j ∈ {1...F }, ∀k ∈ {1...N }, ∀l ∈ {1...D} | j = trebi , l = tribj,k ⇔ Esprof ei,j = 1. Aquesta nova estructura es construeix en el codi de la següent forma: 1 2. dim ( Esprofe , [ NombreDocents , NombreProjectes ]) , Esprofe :: [0..1] ,. 3 4. 5 6. 7 8 9. ( for (I ,1 , NombreProjectes ) , param ( Esprofe , Trib , Treb , NombreDocents , MidaTribunal , NombreFranges ) do Franja #= Treb [ I ] , ( for (J , 1 , NombreFranges ) , param ( Esprofe , Franja , Trib , NombreDocents , MidaTribunal , I ) do #=( J , Franja , Aux1 ) , ( for (K , 1 , MidaTribunal ) , param (I ,J , Esprofe , Aux1 , Trib , NombreDocents ) do Docent #= Trib [J , K ] ,.
(33) 4.2. FUNCIÓ RESOL ( for (L , 1 , NombreDocents ) , param ( Esprofe , Docent , Aux1 , I ) do #=( L , Docent , Aux2 ) , #=( Esprofe [L , I ] ,1 , Aux3 ) , and ( Aux1 , Aux2 , Aux4 ) , = >( Aux4 , Aux3 ,1) ). 10 11 12 13 14 15. ). 16. ). 17 18. 23. ),. Un cop construı̈da aquesta estructura es replanteja la restricció 6 com:. n o ∀i ∈ {1...D} | #{j ∈ {1..T }| Esprof ei,j = 1} 6 M T. Per codificar aquesta restricció es tria fer servir la funció atmost de la llibreria ic global de forma que simplement cal comprovar que a cada fila de Esprof e hi hagi com a màxim M axT reballsxDocent valors 1. Aixı́ doncs la restricció queda codificada com: 1 2 3. ( for (I ,1 , NombreDocents ) , param ( Esprofe , MaxTreballsxDocent ) do atmost ( MaxTreballsxDocent , Esprofe [ I ] ,1) ),. Restricció 7 La restricció 7 definida com: Els membres de tribunals de franges sol·lapades han de ser diferents originalment formalitzada de la següent forma: n ∀j ∈ {1...F }, ∀j 0 ∈ {1...F } j 6= j 0 | solapj,j 0 = 1 ⇒ o ∀i ∈ {1...N }, ∀i0 ∈ {1...N } tribi,j 6= tribi0 j 0 Es modifica en 2 sentits: En primer lloc només cal comprovar les j 0 > j ja que solap és simètrica (si la franja j sol·lapa amb la franja j 0 llavors la franja j 0 també sol·lapa amb la franja j) i per tant realitzar les dues comprovacions és redundant. En segon lloc cal tenir en compte que si almenys una de les franges és buida, llavors no cal fer la comprovació. Aixı́ doncs la restricció queda reescrita de la següent forma: n ∀j ∈ {1...F }, ∀j 0 ∈ {j + 1...F } | solapj,j 0 = 1, #{i ∈ {1...T } |trebi = j} = 6 0, #{i ∈ {1...T } |trebi = j 0 } = 6 0⇒ o ∀i ∈ {1...N }, ∀i0 ∈ {1...N } tribi,j 6= tribi0 j 0. Per formalitzar aquesta reformulació de la restricció es fan servir dues funcions de la llibreria: en primer lloc array concat per tal de crear una nova llista en que apareguin els docents dels dos tribunals i tot seguit alldifferent per tal de comprovar que en aquesta nova llista no apareix.
(34) 24. CAPÍTOL 4. FORMALITZACIÓ DEL PROBLEMA. cap docent repetit (i.e. no hi ha cap docent en els dos tribunals simultàniament). Seguint aquesta formulació la restricció queda formalitzada de la següent forma: 1 2 3 4. 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20. ( for (I ,1 , NombreFranges ) , param ( NombreFranges , MidaTribunal , Treb , Trib , Solap ) do occurrences (I , Treb , Ocui ) , #\=( Ocui ,0 , NbI ) , ( for (J ,1 , MidaTribunal ) , param ( NombreFranges , MidaTribunal , Treb , Trib , Solap , NbI , I ) do D1 is Trib [I , J ] , ( for (K , I +1 , NombreFranges ) , param ( MidaTribunal , D1 , Treb , Trib , NbI , Solap , I ) do occurrences (K , Treb , Ocuk ) , #\=( Ocuk ,0 , NbK ) , and ( NbI , NbK , NbIK ) , Aux1 is Solap [I , K ] , #=( Aux1 ,1 , Sol ) , ( for (L ,1 , MidaTribunal ) , param ( Trib ,K , Sol , NbIK , D1 ) do D2 is Trib [K , L ] , and ( Sol , NbIK , Cond ) , #\=( D1 , D2 , Dif ) , = >( Cond , Dif ,1) ) ) ) ),. Restricció 8 La restricció 8 definida com: Tots els membres dels tribunals d’una franja han de ser experts en el tema dels treballs exposats originalment formalitzada de la següent forma: n o ∀i ∈ {1...T }, ∀j ∈ {1...N } | trebi = k ⇒ exptribk,j ,i = 1. Es modifica de forma similar a com s’han modificat la resta de restriccions anteriorment de la següent forma: n o ∀i ∈ {1...T }, ∀j ∈ {1...F } , ∀k ∈ {1...N } , ∀l ∈ {1...D} | trebi = j, tribj,k = l ⇒ expl,i = 1. Aquesta nova formalització queda reflectida al codi de la següent forma: 1. 2 3. 4 5 6 7 8 9 10 11. ( for (I ,1 , NombreProjectes ) , param ( Exp , Trib , Treb , NombreDocents , MidaTribunal , NombreFranges ) do Franja #= Treb [ I ] , ( for (J , 1 , NombreFranges ) , param ( Exp , Franja , Trib , NombreDocents , MidaTribunal , I ) do #=( J , Franja , Aux1 ) , ( for (K , 1 , MidaTribunal ) , param (I ,J , Exp , Aux1 , Trib , NombreDocents ) do Docent #= Trib [J , K ] , ( for (L , 1 , NombreDocents ) , param ( Exp , Docent , Aux1 , I ) do #=( L , Docent , Aux2 ) , #=( Exp [L , I ] ,1 , Aux3 ) , and ( Aux1 , Aux2 , Aux4 ) , = >( Aux4 , Aux3 ,1).
(35) 4.3. FUNCIO IMPRIMEIX RESULTATS ). 12. ). 13. ). 14 15. 25. ),. 4.2.4. Resolució. Un cop codificades totes les restriccions del problema es pot fer la crida a la funció labeling de la llibreria ic per tal que es busqui si existeix una assignació vàlida per la instància tractada tenint en compte totes les restriccions. Aquest procés es duu a terme mitjançant la següent crida: 1. labeling ([ Treb , Trib ]) ,. 4.2.5. Mostrar resultats. Finalment en cas que s’hagin trobat alguna solució que satisfaci les restriccions per la instància tractada caldrà mostrar-ne les solucions que les satisfan. Això es duu a terme mitjançant la següent crida a la funció imprimeix resultats: 1. i m pr i m ei x _resultats ( Treb , Trib ) .. 4.3. Funcio imprimeix resultats. Tot seguit es presenta la implementació de la funció que imprimeix els resultats: 1 2 3 4 5 6 7. i m pr i m ei x _resultats ( Treb , Trib ) : write ( " Treb :\ n Franges : " ) , dim ( Treb , [ NombreProjectes ]) , ( for (I ,1 , NombreProjectes ) , param ( Treb ) do X is Treb [ I ] , printf ( " %2 d " , X ) ) , nl , nl ,. 8 9 10 11 12 13 14 15 16 17. write ( " Trib :\ n " ) , dim ( Trib , [ NombreFranges , MidaTribunal ]) , ( for (I ,1 , NombreFranges ) , param ( Trib , MidaTribunal ) do printf ( " Franja %2 d : " ,I ) , ( for (J ,1 , MidaTribunal ) , param ( Trib , I ) do X is Trib [I , J ] , printf ( " %2 d " , X ) ) , nl ) , nl .. En cas que existeixi alguna assignació que satisfaci totes les restriccions aquesta funció mostrarà una sortida amb el següent format: 1. Treb : Franges :. 2. 1. 1. 3 4 5 6. Trib : Franja 1: Franja 2:. 1 1. 2 2. Juntament amb aquest document s’adjunta el fitxer Eina.ecl amb el codi presentat. D’altra banda juntament amb aquesta memòria s’annexa un manual d’ús de l’eina..
(36)
(37) Capı́tol 5. Generador d’instàncies Per tal de poder realitzar els jocs de proves que es considerin oportuns es codifica una funció en Java que genera instàncies del problema. Aquesta funció rep els següents paràmetres: 1. public static void Generar ( String Fitx , String NomInstancia , int NombreFranges , int NombreProjectes , int NombreDocents , int MidaTribunal , int MaxTreballsxFranja , int MaxTreballsxDocent , int probDocentDisp , int probTreballDisp , int probSolap , int probExp , long llavor ). La variable Fitx representa el fitxer en que s’escriurà la instància generada (afegint-la al final d’aquest), tot seguit apareixen els paràmetres escalars de les instàncies i finalment apareixen 4 variables destinades a codificar la probabilitat (en tant per cent) per la generació de les matrius de la instància: probDocentDisp representa la probabilitat que un docent estigui disponible en una certa franja; probTreballDisp representa la probabilitat que un alumne estigui disponible en una certa franja; probSolap representa la probabilitat que dues franges qualsevols se sol·lapin i probExp representa la probabilitat que un docent sigui expert en el tema d’un cert treball. Finalment la funció rep un paràmetre de tipus long que representa la llavor per la generació de del nombres aleatoris. En cas de no voler especificar cap llavor aquest paràmetre s’ha d’instanciar a 0. En ambdós casos la llavor feta servir i les probabilitats quedaran reflectides a Fitx per poder generar la instància un altre cop en cas de considerar-ho necessari. Rebent aquests paràmetres el programa genera una instància vàlida del problema codificada en el format descrit al capı́tol anterior i l’afegeix al final del fitxer determinat per la variable Fitx.. Juntament amb aquest document s’adjunta el fitxer Generador.java amb el codi del generador. D’altra banda juntament amb aquesta memòria s’annexa un manual d’ús del generador.. 27.
(38)
(39) Capı́tol 6. Joc de proves Un cop es té el problema codificat cal realitzar una bateria de proves per comprovar que el codi es comporta de la forma desitjada i que genera solucions correctes del problema en cas que la instància sigui satisfactible i que no en genera si i només si la instància és insatisfactible. Amb l’objectiu de verificar el codi presentat anteriorment s’han construı̈t i aplicat els jocs de proves presentats en aquest capı́tol.. 6.1. Joc de proves per restriccions. El primer joc de proves generat té com a objectiu comprovar el correcte funcionament de cada restricció de la forma més aı̈llada possible per tal de de concloure que totes les restriccions s’apliquen de forma correcta i que es comporten de la forma esperada. Per provar les condicions de forma aı̈llada es consideren diferents aproximacions: D’una banda existeix la possibilitat de generar una instància poc restrictiva i generar a mà totes les possibles solucions per aquesta instància i tot seguit compara-les amb les solucions obtingudes mitjançant l’eina. Aquesta opció es descarta ja que només és viable dur-la a terme amb instàncies petites (ja que en cas de no ser aixı́ el nombre de possibles solucions es dispara i resulta impracticable generar-les a mà) i d’altra banda en ser instàncies petites pot ser que no capturin totes les casuı́stiques. Es considera important en aquest joc de proves construir el conjunt a mà de forma independent enlloc de generar-lo mitjançant l’eina i després validar-lo a mà per evitar el biaix de confirmació possible en considerar correcta la solució per tenir-la generada i no percebre possibles mancances d’aquesta. Una altra opció podria ser generar instàncies grans però més restrictives (de forma que el nombre de possibles solucions fos menor) i generar una instància d’aquest tipus per a cada casuı́stica dins cada restricció; aquesta possibilitat s’ha descartat ja que també implica un possible biaix de confirmació en dissenyar una instància especı́ficament per a cada casuı́stica, la qual cosa pot implicar no considerar alguns casos particulars. S’ha conclòs que la forma més efectiva és fer-ho a partir d’una instància relativament gran i aplicar-li petites modificacions en els paràmetres afectats per cada restricció per provocar l’activació de cada condició per separat (considerant que la restricció de franges buides i la de tribunals ordenats s’aplicaran sempre). Es jutjarà si la restricció s’ha aplicat de forma correcta o no a partir del nombre de solucions obtingudes: es calcularà de forma combinatòria el nombre de solucions esperat per a la instància i es comprovarà que aquest nombre coincideix amb el nombre de solucions retornades pel codi. D’aquesta forma s’evita la pèrdua de certes casuı́stiques per ser la instància massa petita a l’hora que s’evita el biaix de confirmació per haver dissenyat la 29.
(40) 30. CAPÍTOL 6. JOC DE PROVES. instància esperant-ne un resultat concret. Aquest disseny del joc de proves també evita haver de generar la solució a mà ja que simplement es comprovarà que el nombre total de solucions concordi amb el resultat combinatori teòric. Els jocs de proves de totes les restriccions partiran de la mateixa instància base, la instància simple. Recordem que les instàncies del problema es defineixen seguint la especificació següent: 1. instancia ( NomInstancia , NombreFranges , NombreProjectes , NombreDocents , MidaTribunal , MaxTreballsxFranja , MaxTreballsxDocent , disd , dist , solap , exp ) .. Un cop fet aquest recordatori es presenta la instància simple: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26. instancia ( simple ,3 ,3 ,3 ,2 ,100 ,100 , % Disd []( [](1 ,1 ,1) , [](1 ,1 ,1) , [](1 ,1 ,1) ), % Dist []( [](1 ,1 ,1) , [](1 ,1 ,1) , [](1 ,1 ,1) ), % solap []( [](0 ,0 ,0) , [](0 ,0 ,0) , [](0 ,0 ,0) ), % exp []( [](1 ,1 ,1) , [](1 ,1 ,1) , [](1 ,1 ,1) ) ).. S’ha triat aquesta instància com a base per ser prou gran com per poder provar correctament les restriccions sense perdre’n possibles casuı́stiques que poden no manifestar-se en instàncies més petites i per tenir un nombre relativament gran de solucions possibles que permet reduir la probabilitat que un resultat teòric i un resultat pràctic coincideixin per casualitat.. En primer lloc es calcula el nombre de solucions que té la instància simple si no se li aplica cap restricció: • Considerant que l’assignació de treballs a franges no té cap restricció, els 3 treballs es poden assignar a les 3 franges de totes les formes possibles, és a dir 33 formes, per tant 27. • De forma similar com l’assignació de docents a les franges no ha d’obeir cap restricció els 3 docents es poden assignar a cada franja de 32 formes diferents, per tant 9. Tenint en compte que hi ha 3 franges, tenim un total de 9 · 3 possibles assignacions, per tant 27. Aixı́ doncs el nombre total de solucions en cas de no aplicar cap de les restriccions del problema seria de 27 · 27, per tant 729..
(41) 6.1. JOC DE PROVES PER RESTRICCIONS. 6.1.1. 31. Franges buides i Restricció 2. Noti’s que en el càlcul realitzat anteriorment no s’ha tingut en compte cap restricció, ni tan sols la restricció que un mateix docent no pot formar part d’un tribunal dos cops o que les franges buides han de tenir una assignació concreta. Aixı́ doncs procedim a calcular el nombre de solucions que tindria aquesta instància aplicant-li les restriccions del problema. Notem que per la seva construcció les restriccions 3 a 8 no tenen cap efecte sobre aquesta instància (per tenir total disponibilitat de docents i alumnes, total expertesa dels docents, cap mena de sol·lapament de franges i un capacitat més que suficient tant de les franges com dels docents). Per tant per calcular el nombre de solucions correctes d’aquesta instància només cal considerar la restricció 2 (tal i com ens havı́em proposat en la construcció d’aquest joc de proves). Recordem que també s’ha de tenir en compte que s’aplicarà la restricció de franges buides (per ser una restricció impossible de no activar). Tenint en compte aquestes observacions procedim a calcular el nombre de solucions correctes que tindrà la instància simple, recordant que només cal considerar la restricció 2 i la restricció de franges buides. Per realitzar aquest càlcul cal considerar diferents escenaris disjunts: • En cas que tots els treballs estiguin assignats a franges diferents (llavors la restricció de franges buides no aplica): d’aquests casos en tenim 3! ja que són les permutacions de 3 elements, per tant 6 possibles assignacions de treballs a franges. Respecte a les assignacions de docents als tribunals de les franges cal considerar la restricció 2, per tant han de ser diferents i han d’estar ordenats. Com tenim 3 docents i la franja té capacitat 2, considerant la restricció per a cada franja existeixen 3 possibilitats: (1,2), (1,3) i (2,3), llavors per les 3 franges existeixen un total de 3 · 3 · 3 possibilitats, per tant 27. Aixı́ doncs aquesta casuı́stica aporta un total de 6 · 27, per tant 162 solucions. • En cas que hi hagi exactament dos treballs assignats a la mateixa franja caldrà considerar que la restricció de franges buides redueix lleugerament el nombre de solucions possibles (ja que si dos treballs estan assignats a la mateixa franja, llavors necessàriament hi haurà una franja sense cap treball assignat). Per calcular el nombre de casos d’aquest tipus que existeixen primerament triarem les 2 franges iguals ( 32 possibilitats, per tant 3), tot seguit triarem quina de les 3 franges serà la que contingui dos treballs (3 possibilitats) i finalment triarem la franja que només conté un treball (2 possibilitats ja que altrament els 3 treballs estarien assignats a la mateixa franja). Aixı́ doncs el nombre total de casos d’aquest tipus és 3 · 3 · 2, per tant 18. Respecte a l’assignació de docents a les franges cal considerar que la franja buida tindrà una única possible assignació (tal com dicta la restricció de franges buides). Respecte a les altres dues franges podran tenir qualsevol assignació, que calculat de forma similar a la forma en que s’ha calculat al cas anterior 1 · 3 · 3, per tant 9. Aixı́ doncs aquesta casuı́stica aporta un total de 18 · 9, per tant 162 solucions. • En cas que els 3 treballs estiguin assignats a la mateixa franja, per calcular el nombre de casos d’aquest tipus que existeixen simplement considerem que existeixen 3 franges i per tant hi ha 3 casos d’aquest tipus. Respecte a l’assignació de docents a les franges cal considerar la restricció de franges buides i per tant les dues franges buides només tenen una possible assignació. Respecte a la franja no buida de la mateixa forma que al primer cas pot tenir 3 possibles assignacions: (1,2), (1,3) i (2,3). Aixı́ doncs aquesta casuı́stica aporta un total de 3 · 3, per tant 9 solucions. Sumant totes les solucions obtingudes de les diferents casuı́stiques, observem que aquesta instància té un total de 162 + 162 + 9 solucions, per tant 333 solucions. Executant l’eina desenvolupada amb la instància simple s’obtenen exactament 333 solucions de.
Figure
+6
Outline
Documento similar