# Modeling and Solving a Latin American University Course Timetabling Problem Instance

^{*}

## Abstract

**:**

## 1. Introduction

## 2. Preliminaries

#### 2.1. University Course Timetabling Problem

- m classes ${c}_{1},\u2206,{c}_{m}$.
- n teachers ${t}_{1},\u2206,{t}_{n}$.
- p periods of time $1,\u2206,p$.
- a non-negative integer matrix ${R}_{m*n}$, called Requirements matrix, where ${r}_{ij}$ is the number of lectures given by teacher ${t}_{j}$ to class ${c}_{i}$.

- Hard constraints: mandatory conditions, the violation of any of them implies a non-feasible timetable.
- Soft constraints: desirable conditions denoting user preferences; the violation of any of them affects the quality of a timetable.

- q courses ${K}_{1},\u2206,{K}_{q}$.
- Each K course consists of ${k}_{i}$ lectures.
- There are r curricula ${S}_{1},\cdots ,{S}_{r}$, wich are groups of courses that have common students. Thus, courses in ${S}_{l}$ must be scheduled all at diferent times.
- A maximum number of lectures ${l}_{k}$ that can be scheduled at period k (that is, the number of rooms available at period k).
- A p number of periods of time $1,\u2206,P$.

#### 2.2. Object Constraint Language (OCL)

- Requirements: use case diagrams.
- System structure: class diagrams, component diagrams.
- System behavior: activity diagrams, sequence diagrams, state diagrams.

#### 2.3. Tabu Search with Probabilistic Aspiration Criterion (TS-PAC)

Algorithm 1: Tabu Search with Probabilistic Aspiration Criterion. |

## 3. Modeling the Timetabling Problem

- The number of students who potentially want to take any course is determined through an online survey. This is known as the potential demand for each course.
- Subsequently, the required courses are offered.
- Next, each professor is asked for the list of courses they choose to teach in the following semester.
- Using these data, the ACademic Assignments [ACA] (allocation of professors to courses) are made considering each professor’s particular constraints, such as research projects, popularization of science, and extension activities.
- Finally, the TimeTabling Process [TTP] is performed.

- Professor: gives courses to groups of students. This entity has a predefined minimum and a maximum number of hours to teach during the semester, depending on her/his classification (visitor, emeritus, eventual, half-time, or full-time) and category (associate or titular).
- Course: includes a number of hours in a week and a level (Undergraduate or Postgraduate).
- Lecture: class given in a specific classroom during a certain period of time.
- Group: number of students who receive classes in common.
- Classroom: physical space with a specific capacity.

- A single teacher teaches a specific course.
- A teacher must only teach one lecture at a time.
- A lecture belongs to a particular course.
- Lectures are taught in only one classroom at a time.
- A lecture is given to a particular group.

#### 3.1. ACA Model

**ACA-HC1.**The courses taught at the DACyTI can be at the undergraduate or postgraduate level.

`context Course`

`inv: level=’Undergraduate’ or level=’Postgraduate’`

**ACA-HC2.**Professors may have one of the following classifications: eventual, half-time, and full time, and, in an extraordinary situation, visitor and emeritus.

`context Professor`

`inv: classification=’Eventual’ or`

`classification=’Half-Time’ or`

`classification=’Full-Time’ or`

`classification=’Visitor’ or`

`classification =’Emeritus’`

**ACA-HC3.**Professors may have one associate or titular category, each with levels A, B, or C.

`context Professor`

`inv: category=’Associate’ or category=’Titular’`

`inv: level=’A’ or level=’B’ or level=’C’`

**ACA-HC4.**The following attribute is defined for the correct validation of the total hours taught by a professor:

`context Professor`

`def: numHours:Integer = academicLoad.numHours->sum()`

**ACA-HC5.**Constraints that are presented in the Staff Regulation regarding the minimum number of class hours for each professor are not absolute, so a convenient method to assign this value is:

`context Professor::setMinHours(hours:Integer)`

`inv: hours>0 and minHours<=maxHours`

`body: minHours=hours`

**ACA-HC6.**Eventual professors can teach at most 19 hours of class.

`context Professor`

`inv: classification=’Eventual’ implies maxHours=19`

**ACA-HC7.**Associate Full-time professors who teach undergrad courses exclusively can teach no more than 25 hours of class.

`context Professor`

`inv: classification=’Full-time’ and category=’Associate’`

`and academicLoad->forAll(c:Course | c.level=’Undergraduate’)`

`implies maxHours=25`

**ACA-HC8.**Associate full-time professors who teach at least one postgraduate course can teach no more than 20 hours of class.

`context Professor`

`inv: classification=’Full-time’ and category=’Associate’`

`and academicLoad->exists(c:Course | c.level=’Postgraduate’)`

`implies maxHours=20`

**ACA-HC9.**Titular full-time professors who teach undergrad courses exclusively can teach no more than 20 hours of class.

`context Professor`

`inv: classification=’Full-time’ and category=’Titular’`

`and academicLoad->forAll(c:Course | c.level=’Undergraduate’)`

`implies maxHours=20`

**ACA-HC10.**Titular full-time professors who teach at least one postgraduate course can teach no more than 10 hours of class.

`context Professor`

`inv: classification=’Full-time’ and category=’Titular’`

`and academicLoad->exists(c:Course | c.level=’Postgraduate’)`

`implies maxHours=10`

**ACA-HC11.**Associate half-time professors teaching exclusively undergrad courses can teach no more than 15 hours of class.

`context Professor`

`inv: classification=’Half-time’ and category=’Associate’`

`and academicLoad->forAll(c:Course | c.level=’Undergraduate’)`

`implies maxHours=15`

**ACA-HC12.**Associate half-time professors who teach at least one postgraduate course can teach no more than 10 h of class.

`context Professor`

`inv: classification=’Half-time’ and category=’Associate’`

`and academicLoad->exists(c:Course | c.level=’Postgraduate’)`

`implies maxHours=10`

**ACA-HC13.**Titular half-time professors who teach undergrad courses exclusively can teach no more than 10 h of class.

`context Professor`

`inv: classification=’Half-time’ and category=’Titular’`

`and academicLoad->forAll(c:Course | c.level=’Undergraduate’)`

`implies maxHours=10`

**ACA-HC14.**Titular half-time professors who teach at least one postgraduate course can teach no more than five hours of class.

`context Professor`

`inv: classification=’Half-time’ and category=’Titular’`

`and academicLoad->exists(c:Course | c.level=’Postgraduate’)`

`implies maxHours=5`

**ACA-HC15.**The number of lecture hours by each professor must not exceed the maximum hours established.

`context Professor`

`inv: numHours<=maxHours`

**ACA-HC16.**The number of lecture hours by each professor must be greater than or equal to the minimum hours assigned.

`context Professor`

`inv: numHours>=minHours`

**ACA-SC1.**Professors choose the courses that they would like to teach in the next semester. It would be desirable to satisfy the course preferences of each professor.

`context Professor`

`inv: academicLoad->intersection(favorites)->notEmpty()`

#### 3.2. TTP Model

**TTP-HC1.**The time period for a lecture corresponds to 1 hour. The number of hours of each course must be assigned to the same number of time periods.

`context Course`

`inv: numHours=lecture->size()`

**TTP-HC2.**The period of time labeled as 0 corresponds to the start period of classes on Monday, and the period labeled as

`TOTAL_PERIODS`represents the final time of the last session on Friday. Both the first and last hours are known as overflow areas, and this type of allocation is called a compact schedule [44].

`context Lecture`

`inv: start>=0 and start<TOTAL_PERIODS`

**TTP-HC3.**TTP-HC3 When considering blocks of time of 1 hour, the initial time of a lecture must be less than the final time by one hour.

`context Lecture`

`inv: end=start+1`

**TTP-HC4.**The capacity of the classroom must fit the number of students in the group that takes a lecture.

`context Lecture`

`inv: classroom.capacity >= academicLoad.group.numStudents`

**TTP-HC5.**TTP-HC5 A group must not take more than one lecture at a time (for ease of definition, the invariant is associated with courses, as each course is tied to one and only one group).

`context Course`

`inv: lecture->forAll(`

`l1:Lecture,l2:Lecture | l1<>l2 implies l1.start<>l2.start)`

**TTP-HC6.**A professor must not teach more than one lecture at a time.

`context Professor`

`inv: lecture->forAll(`

`l1:Lecture,l2:Lecture | l1<>l2 implies l1.start<>l2.start)`

**TTP-SC1.**In the DACyTI, the concept of morning or evening shift does not properly exist due to the flexible educational model [45]. In that sense, the professor’ shifts were modeled as preferences about the period of time they wished to teach their courses.

`context Professor`

`inv: preferredHours->includesAll( Lecture.start->asSet() )`

**TTP-SC2.**In our model, time periods are considered to be blocks of one-hour length, so lectures of the same course scheduled during the same day must be in contiguous hours. The constant

`PERIODS_A_DAY`, equivalent to

`TOTAL_PERIODS`/five days a week, is used in this invariant.

`context Lecture`

`inv: let day= start div PERIODS_A_DAY in`

`let lecturesPerDay= Lecture.allInstances()->`

`select(academicLoad=self.academicLoad and`

`(start div PERIODS_A_DAY) = day)->`

`asSet()->sortedBy(start) in`

`lecturesPerDay->size() > 1 implies`

`lecturesPerDay->iterate(s; i:Integer=0 |`

`if i<lecturesPerDay->size()-1 and s.end=`

`lecturesPerDay->at(i+1).start`

`then i+1`

`else i`

`endif) = lecturesPerDay->size()`

## 4. Solution Proposal

#### 4.1. ACA Solution

- ${n}_{p}=$ number of professors.
- ${n}_{c}=$ number of courses.
- $C=\{{c}_{1},\cdots ,{c}_{{n}_{c}}\}$ corresponds to the set of instances of entity Course.
- $P=\{{p}_{1},\cdots ,{p}_{{n}_{p}}\}$ corresponds to the set of instances of entity Professor.
- ${F}_{{n}_{p}\times {n}_{c}}$ is the preference matrix where true represents professor p wants to teach the course c and false otherwise (Figure 2).
- ${\mathit{ACA}}_{{n}_{c}}$ is a vector that corresponds to the solution (the academic assignments) where each cell c contains the assigned professor (Figure 3).

#### 4.1.1. Creating an Initial Solution

#### 4.1.2. Satisfying Hard Constraints

#### 4.1.3. Soft Constraints: Maximizing Professors’ Course Preferences

#### 4.2. TTP Solution

- ${n}_{r}=$ number of classrooms.
- ${n}_{g}=$ number of groups.
- ${n}_{l}=$ number of lectures.
- $R=\{{r}_{1},\cdots ,{r}_{{n}_{r}}\}$ corresponds to the set of instances of entity Classroom.
- $G=\{{g}_{1},\cdots ,{g}_{{n}_{g}}\}$ corresponds to the set of instances of entity Group.
- $L=\{{l}_{1},\cdots ,{l}_{{n}_{l}}\}$ corresponds to the set of instances of entity Lecture.
- ${H}_{{n}_{p}\times \mathtt{TOTAL}\_\mathtt{PERIODS}}$ is a matrix where
`true`represents that professor p desires to teach during that period of time, and false otherwise (Figure 4). - ${\mathit{TTP}}_{{n}_{r}\times \mathtt{TOTAL}\_\mathtt{PERIODS}}$ is a matrix corresponding to the solution (the timetable), where each cell corresponds to a lecture or null otherwise. This data structure has the advantage of automatically satisfying constraints of type TTP-HC2 and TTP-HC3, while facilitating the evaluation of the remaining constraints (Figure 5).

#### 4.2.1. Creating an Initial Solution

#### 4.2.2. Satisfying Hard Constraints

Lecture A: | Lecture B: | Lecture C: | Lecture D: |

professor $\Rightarrow {p}_{1}$ | professor $\Rightarrow {p}_{1}$ | professor $\Rightarrow {p}_{27}$ | professor $\Rightarrow {p}_{54}$ |

course $\Rightarrow {c}_{35}$ | course $\Rightarrow {c}_{87}$ | course $\Rightarrow {c}_{1}$ | course $\Rightarrow {c}_{1}$ |

start $\Rightarrow 1$ | start $\Rightarrow 1$ | start $\Rightarrow 19$ | start $\Rightarrow 19$ |

end $\Rightarrow 2$ | end $\Rightarrow 2$ | end $\Rightarrow 20$ | end $\Rightarrow 20$ |

#### 4.2.3. Soft Constraints: Maximizing Professors’ Shift Preferences and Contiguous Lectures

Lecture X: | Lecture Y: | Lecture Z: | Professor 77: |

professor $\Rightarrow {p}_{51}$ | professor $\Rightarrow {p}_{51}$ | professor $\Rightarrow {p}_{77}$ | category ⇒ Associate |

course $\Rightarrow {c}_{23}$ | course $\Rightarrow {c}_{23}$ | course $\Rightarrow {c}_{96}$ | classification ⇒ Full-Time |

start $\Rightarrow 0$ | start $\Rightarrow 2$ | start ⇒ TOTAL_PERIODS-1 | preferredHours ⇒ |

end $\Rightarrow 1$ | end $\Rightarrow 3$ | end ⇒ TOTAL_PERIODS | $\{0,1,2,3,4,\cdots ,33\}$ |

## 5. Tests and Results

#### 5.1. Software Prototype

#### 5.2. Experiments

- Start solution: through of a greedy algorithm. Different approaches to build an initial solution were used for the ACA phase hard constraints, ACA phase soft constraints, TTP hard constraints, and TTP soft constraints.
- Random seed: a set of random numbers were generated using the random.org platform. The best seed value was 10,769,230.
- Tabu list size: $t={\scriptscriptstyle \sqrt[\phantom{\rule{4pt}{0ex}}]{\mathrm{number}\phantom{\rule{4.pt}{0ex}}\mathrm{of}\phantom{\rule{4.pt}{0ex}}\mathrm{courses}\phantom{\rule{0.166667em}{0ex}}}}$.
- Neighborhood: different neighborhood structures were designed for each phase.
- Aspiration criterion: the probabilistic aspiration criterion described in Section 2.3.
- Stop criterion: variable, since different objective functions were defined for each phase. Additionally, we had to relax hard constraints in order to obtain a feasible solution.

#### 5.3. Results for the ACA Phase

- Course: hard constraint ACA-HC1.
- Professor: hard constraints ACA-HC2 to ACA-HC16 and soft constraint ACA-SC1.

#### 5.4. Results for the TTP Phase

- Course: hard constraint TTP-HC1 and TTP-HC5.
- Lecture: hard constraints TTP-HC2, TTP-HC3, and TTP-HC4. Soft constraint TTP-SC2.
- Professor: hard constraint TTP-HC6 and soft constraint TTP-SC1.

## 6. Conclusions

## Author Contributions

## Funding

## Acknowledgments

## Conflicts of Interest

## Abbreviations

ACA | Academic assignments |

DACyTI | División Académica de Ciencias y Tecnologías de la Información |

OCL | Object Constraint Language |

TS-PAC | Tabu Search with Probabilistic Aspiration Criterion |

TTP | Timetabling problem |

UJAT | Universidad Juárez Autónoma de Tabasco |

UCTP | University Course Timetabling Problem |

UML | Unified Modeling Language |

## References

- Cooper, T.B.; Kingston, J.H. The complexity of timetable construction problems. In Practice and Theory of Automated Timetabling; Burke, E., Ross, P., Eds.; Springer: Berlin/Heidelberg, Germany, 1996; pp. 281–295. [Google Scholar]
- Cruz-Chávez, M.; Flores-Pichardo, M.; Martínez-Oropeza, A.; Moreno-Bernal, P.; Cruz-Rosales, M. Solving a Real Constraint Satisfaction Model for the University Course Timetabling Problem: A Case Study. Math. Probl. Eng.
**2016**, 2016, 14. [Google Scholar] [CrossRef] - Mejía Caballero, J.; Paternina Arboleda, C. Asignación de Horarios de Clases universitarias mediante Algoritmos Evolutivos (Allocation of class schedules using evolutionary algorithms). Rev. Educ. Ing.
**2010**, 5, 140–149. [Google Scholar] [CrossRef] - Pereira, V.; Gomes Costa, H. Linear Integer Model for the Course Timetabling Problem of a Faculty in Rio de Janeiro. Adv. Oper. Res.
**2016**, 2016. [Google Scholar] [CrossRef] - Gotlieb, H. The construction of class-teacher timetables. In Proceedings of IFIP Congress 62; Popplewell, C., Ed.; Information Processing 62: Munich, Germany, 1963; pp. 73–77. [Google Scholar]
- Saviniec, L.; Santos, M.O.; Costa, A.M. Parallel local search algorithms for high school timetabling problems. Eur. J. Oper. Res.
**2018**, 265, 81–98. [Google Scholar] [CrossRef] - De Werra, D. An introduction to timetabling. Eur. J. Oper. Res.
**1985**, 19, 151–162. [Google Scholar] [CrossRef] - Rudová, H.; Müller, T.; Murray, K. Complex university course timetabling. J. Sched.
**2011**, 14, 187–207. [Google Scholar] [CrossRef] - Schaerf, A. A Survey of Automated Timetabling. Artif. Intell. Rev.
**1999**, 13, 87–127. [Google Scholar] [CrossRef] - Burke, E.K.; Mareček, J.; Parkes, A.J.; Rudová, H. Decomposition, reformulation, and diving in university course timetabling. Comput. Oper. Res.
**2010**, 37, 582–597. [Google Scholar] [CrossRef][Green Version] - Chen, M.; Tang, X.; Song, T.; Wu, C.; Liu, S.; Peng, X. A Tabu search algorithm with controlled randomization for constructing feasible university course timetables. Comput. Oper. Res.
**2020**, 123, 105007. [Google Scholar] [CrossRef] - Chiorean, D.; Petraşcu, V.; Ober, I. Using Constraints in Teaching Software Modeling. In Models in Software Engineering; Kienzle, J., Ed.; Springer: Berlin, Germany, 2012; pp. 25–39. [Google Scholar]
- Booch, G.; Rumbaugh, J.; Jacobson, I. The Unified Modeling Language User Guide; Addison-Wesley: Boston, MA, USA, 2005. [Google Scholar]
- Hofrichter, O.; Hamann, L.; Gogolla, M.; Steimke, F. The secret life of OCL constraints. In Proceedings of the 12th Workshop on OCL and Textual Modelling-OCL ‘12; ACM Press: New York, NY, USA, 2012. [Google Scholar] [CrossRef][Green Version]
- Cabot, J.; Gogolla, M. Object Constraint Language (OCL): A Definitive Guide. In Formal Methods for Model-Driven Engineering: 12th International School on Formal Methods for the Design of Computer, Communication, and Software Systems, SFM 2012, Bertinoro, Italy, 18–23 June 2012; Advanced Lectures; Springer: Berlin, Germany, 2012; pp. 58–90. [Google Scholar] [CrossRef][Green Version]
- Ziemann, P.; Gogolla, M. Validating OCL Specifications with the USE Tool: An Example Based on the BART Case Study. Electron. Notes Theor. Comput. Sci.
**2003**, 80, 157–169. [Google Scholar] [CrossRef][Green Version] - Larsson, D.; Mostowski, W. Specifying Java Card API in OCL. Electron. Notes Theor. Comput. Sci.
**2004**, 102, 3–19. [Google Scholar] [CrossRef][Green Version] - Garry, D.; Balfe, T. Experiences using OCL for business rules on financial messaging. In Proceedings of the 12th Workshop on OCL and Textual Modelling (OCL’12); ACM Press: New York, NY, USA, 2004; pp. 65–66. [Google Scholar] [CrossRef]
- Chávez-Bosquez, O.; Pozos-Parra, P. The Latin American laws of correct nutrition: Review, unified interpretation, model and tools. Comput. Biol. Med.
**2016**, 70, 67–79. [Google Scholar] [CrossRef][Green Version] - Gogolla, M.; Büttner, F.; Richters, M. USE: A UML-based specification environment for validating UML and OCL. Sci. Comput. Program.
**2007**, 69, 27–34. [Google Scholar] [CrossRef][Green Version] - Glover, F.; Laguna, M. Tabu Search, 1st ed.; Kluwer Academic Publishers: Norwell, MA, USA, 1997. [Google Scholar]
- Pirim, H.; Bayraktar, E.; Eksioglu, B. Tabu Search: A Comparative Study. In Tabu Search; InTechOpen: London, UK, 2008. [Google Scholar] [CrossRef][Green Version]
- Kergosien, Y.; Lenté, C.; Piton, D.; Billaut, J.C. A tabu search heuristic for the dynamic transportation of patients between care units. Eur. J. Oper. Res.
**2011**, 214, 442–452. [Google Scholar] [CrossRef] - Cunha, V.; Mantovani, J. Planning And Project Of Medium Voltage Electric Power Distribution Systems. IEEE Latin Am. Trans.
**2016**, 15, 2298–2308. [Google Scholar] [CrossRef] - Balliauw, M.; Herremans, D.; Palhazi Cuervo, D.; Sörensen, K. Mathematics and Computation in Music: 5th International Conference, MCM 2015, London, UK, 22–25 June 2015; Chapter Generating Fingerings for Polyphonic Piano Music with a Tabu Search Algorithm; Springer International Publishing: Berlin, Germany, 2015; pp. 149–160. [Google Scholar] [CrossRef]
- Glover, F. Tabu Search: A Tutorial. Interfaces
**1990**, 20, 74–94. [Google Scholar] [CrossRef][Green Version] - Gendreau, M. An Introduction to Tabu Search. In Handbook of Metaheuristics; Glover, F., Kochenberger, G.A., Eds.; Springer: Boston, MA, USA, 2003; pp. 37–54. [Google Scholar] [CrossRef]
- Xing, L.; Liu, Y.; Li, H.; Wu, C.C.; Lin, W.C.; Chen, X. A Novel Tabu Search Algorithm for Multi-AGV Routing Problem. Mathematics
**2020**, 8, 279. [Google Scholar] [CrossRef][Green Version] - Al-Tarawneh, H.; Ayob, M. Using Tabu search with multi-neighborhood structures to solve University Course Timetable UKM case study (faculty of engineering). In Proceedings of the 3rd Conference on Data Mining and Optimization, Putrajaya, Malaysia, 28–29 June 2011; pp. 208–212. [Google Scholar] [CrossRef]
- Hertz, A. Tabu search for large scale timetabling problems. Eur. J. Oper. Res.
**1991**, 54, 39–47. [Google Scholar] [CrossRef] - Minh, K.N.T.T.; Thanh, N.D.T.; Trang, K.T.; Hue, N.T.T. Using Tabu Search for Solving a High School Timetabling Problem. In Advances in Intelligent Information and Database Systems; Springer: Berlin, Germany, 2010; pp. 305–313. [Google Scholar] [CrossRef]
- Oliva, C.; Ramírez, G. Algoritmo de tipo búsqueda tabú para un problema de programación de horarios universitarios vespertinos. INGE CUC
**2013**, 9, 58–65. [Google Scholar] - Schaerf, A. Tabu Search Techniques for Large High-School Timetabling Problems. In Proceedings of the 13th National Conference on Artificial Intelligence (AAAI-96); AAAI Press/MIT Press: Portland, OR, USA, 1996; pp. 363–368. [Google Scholar]
- Chávez-Bosquez, O.; Pozos-Parra, P.; Gómez-Ramos, J. Búsqueda Tabú con Criterio de Aspiración Probabilístico aplicada a la Generación de Horarios Escolares (Tabu Search with Probabilistic Aspiration Criterion solving the timetabling problem). Rev. Mat. Teor. Apl.
**2015**, 22, 153–177. [Google Scholar] [CrossRef][Green Version] - Network, M. International Timetabling Competition. 2003. Available online: http://sferics.idsia.ch/Files/ttcomp2002/ (accessed on 16 September 2018).
- Müller, T.; Rudová, H.; Müllerová, Z. University course timetabling and International Timetabling Competition 2019. In Proceedings of the PATAT 2018: 12th International Conference of the Practice and Theory of Automated Timetabling; Burke, E., Di Gaspero, L., McCollum, B., Musliu, N., Özcan, E., Eds.; Online: Vienna, Austria, 2018; pp. 5–31. [Google Scholar]
- Kingston, J.H. Educational Timetabling. In Automated Scheduling and Planning: From Theory to Practice; Uyar, A.S., Ozcan, E., Urquhart, N., Eds.; Springer: Berlin, Germany, 2013; pp. 91–108. [Google Scholar] [CrossRef]
- Chen, R.M.; Shih, H.F. Solving University Course Timetabling Problems Using Constriction Particle Swarm Optimization with Local Search. Algorithms
**2013**, 6, 227–244. [Google Scholar] [CrossRef] - Mockus, J.; Pupeikienė, L. On Multi-Start Algorithms for Optimization of High School Timetables. Informatica
**2012**, 23, 405–425. [Google Scholar] [CrossRef] - Piechowiak, S.; Kolski, C. Towards a generic object oriented decision support system for university timetabling: An interactive approach. Int. J. Inf. Technol. Decis. Mak.
**2004**, 3, 179–208. [Google Scholar] [CrossRef] - H. Consejo Universitario (University Council). Estatuto del Personal Académico (Academic Staff Regulations); Universidad Juárez Autónoma de Tabasco: Tabasco, Mexico, 1985. [Google Scholar]
- Secretaría de Gobernación (Ministry of the Interior). Constitución Política de los Estados Unidos Mexicanos (Mexican Constitution), 23rd ed.; Dirección General Adjunta del Diario Oficial de la Federación: Ciudad de México, Mexico, 2017. [Google Scholar]
- H. Congreso del Estado de Tabasco (Tabasco State Congress). Ley Orgánica de la Universidad Juárez Autónoma de Tabasco (UJAT Organic Law); Universidad Juárez Autónoma de Tabasco: Tabasco, Mexico, 1987. [Google Scholar]
- Müller, T.; Rudová, H. Real-life curriculum-based timetabling with elective courses and course sections. Ann. Oper. Res.
**2016**, 239, 153–170. [Google Scholar] [CrossRef] - H. Consejo Universitario (University Council). Reglamento Escolar del Modelo Educativo Flexible (School Regulations of the Flexible Educational Model); Universidad Juárez Autónoma de Tabasco: Tabasco, Mexico, 2011. [Google Scholar]
- AdoptOpenJDK.net. AdoptOpenJDK - Prebuilt OpenJDK Binaries. 2019. Available online: https://adoptopenjdk.net (accessed on 16 April 2019).
- MariaDB Foundation. MariaDB Server. 2019. Available online: https://mariadb.org (accessed on 12 December 2019).
- Harder, R. OpenTS - Java Tabu Search. 2001. Available online: https://www.coin-or.org/Ots/ (accessed on 20 November 2018).

**Figure 10.**A configuration of the Tabu Search with Probabilistic Aspiration Criterion (TS-PAC) parameters for the Academic assignments (ACA) phase (hard constraints).

**Figure 13.**Sample configuration of the TS-PAC parameters for the timetable process (TTP) phase (hard constraints).

Data | Semester 1 | Semester 2 |
---|---|---|

Teaching staff (${n}_{p}$) | 107 | 106 |

Number of courses (${n}_{c}$) | 369 | 362 |

Number of professors with course preferences | 107 | 91 |

Average of selected courses per professor | 5 | 5 |

Result | Semester 1 | Semester 2 |
---|---|---|

Unassigned courses | 0 | 0 |

Professors with more hours than allowed | 0 | 0 |

Professors with less hours than allowed | 2 * | 31 |

Professors with no satisfied preferences | 2 * | 9 |

Percentage of course preferences satisfied | 98.13% | 91.50% |

Data | Semester 1 | Semester 2 |
---|---|---|

$\langle \mathrm{professor},\mathrm{course}\rangle $ tuples | 369 | 362 |

Total lectures | 1777 | 1716 |

Periods of time | 60 | 50 |

Classrooms | 43 | 43 |

Result | Semester 1 | Semester 2 |
---|---|---|

Professor clashes | 0 | 0 |

Group clashes | 0 | 0 |

Non-contiguous lectures | 0 | 0 |

Percentage of shift preferences satisfied | 88.87% | 87.50% |

Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations. |

© 2020 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).

## Share and Cite

**MDPI and ACS Style**

Chávez-Bosquez, O.; Hernández-Torruco, J.; Hernández-Ocaña, B.; Canul-Reich, J. Modeling and Solving a Latin American University Course Timetabling Problem Instance. *Mathematics* **2020**, *8*, 1833.
https://doi.org/10.3390/math8101833

**AMA Style**

Chávez-Bosquez O, Hernández-Torruco J, Hernández-Ocaña B, Canul-Reich J. Modeling and Solving a Latin American University Course Timetabling Problem Instance. *Mathematics*. 2020; 8(10):1833.
https://doi.org/10.3390/math8101833

**Chicago/Turabian Style**

Chávez-Bosquez, Oscar, José Hernández-Torruco, Betania Hernández-Ocaña, and Juana Canul-Reich. 2020. "Modeling and Solving a Latin American University Course Timetabling Problem Instance" *Mathematics* 8, no. 10: 1833.
https://doi.org/10.3390/math8101833