GithubHelp home page GithubHelp logo

leonsering / bwinf_career_information_day_scheduling Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 1.98 MB

Submission of the second round of the German National Competition in Computer Science in 2007/2008.

Home Page: https://leon.sering.eu/project/bwinf_career_information_day_scheduling/

License: MIT License

QMake 0.44% Makefile 5.30% C++ 94.27%
competition cplusplus integer-programming optimization-algorithms scheduling-algorithms glpk-solver

bwinf_career_information_day_scheduling's Introduction

Career Information Day Scheduling

This project was one part of my submission for the second round of the 26th German National Competition in Compute Science (Bundeswettbewerb Informatik) held in 2007 and 2008. It was my first mixed integer program and I had a lot of fun, spending all my holidays on this exercise.

Task

The goal is to schedule a career information day at a school:

  • 16 talks by parents about their work

  • 4 time slots

  • students provide a preference list of 6 talks they would like to attend

  • each talk has a minimum and maximum number of participants

The task is to write a simple-to-use software that schedules the talks to the 4 time slots and optimizes the satisfaction of students and parents with the GNU Linear Programming Kit (GLPK).

The full tasks can be found here (in German).

My solution

I decided to use C++ with Qt4 as GUI and lifted the requirements of exactly 16 talks and 4 time slots to obtain a tool that would also be useful for other scheduling tasks. Also, the weight of preference of the students is fully flexible, meaning that all wishes could be equally good, or the first preference is much more preferred. The full documentation, which was part of the assignment, can be found here (in German).

Fortunately, my submission was successful, and I could attend the third and final round (which was an in-person assessment), where I was selected as "award winner".

Requirements

  • Qt 4.3.2

  • GLPK 4.27

Install (all Platforms)

As Qt4 is not supported anymore on newer operating systems, we recommend using a virtual machine VirtualBox running Ubuntu 14.04.6 Trusty Tahr.

  1. Install GLPK

  2. Run make in the main directory to compile the program.

Usage

  • Run the program with ./Informationstag

  • Set the number of event slots (Termine).

  • Set the number of preferences/wishes each student can have (Wünsche)

  • Create the talks by choosing a name and a minimum/maximum number of participants in the "Angebot" section. Click "Hinzufügen" to add it to the list.

  • Afterward, create participants by choosing a name and the preferences in the "Teilnehmer" section. It is also possible to create one or ten random participants.

  • Finally, use weights for the priorities in the "Prioritäten" section. These are the coefficient in the objective.

  • There are two optimization algorithms, a "fast" and an "optimal" one. For choosing the optimal algorithm, select the "Optimal" checkbox.

  • Press "Plan erstellen" to run the optimization algorithm that creates a schedule.

bwinf_career_information_day_scheduling's People

Contributors

leonsering avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.