PresentationScheduling.jl

Optimal presentation schedules using binary optimization, in Julia via JuMP.
Author thchr
Popularity
5 Stars
Updated Last
3 Months Ago
Started In
June 2024

PresentationScheduling.jl

Build status Coverage

Schedule a list of meetings, distributing research and journal club presentations so as to maximize the time-separation between presentations by the same individual.

Example

using PresentationScheduling

dates = Date("2024-08-28"):Week(2):Date("2024-12-18")
individuals = ["John", "Jane", "Bob", "Alice", "Sven", "Luis", "Jean", "Malcolm"]

presentations_modify = Dict("Malcolm" => 1, "Alice" => 3)
journals_modify = Dict("Malcolm" => 0, "Alice" => 0, "Sven" => 0)
cannot_attend = Dict("Malcolm" => dates[3:end])

schedule = optimize_presentation_schedule(
    individuals, dates, presentations_modify, journals_modify, cannot_attend;
    default_presentations=2,
    min_total=2,
    max_total=3,
    min_presentations=1,
    max_presentations=3,
    min_journals=0,
    max_journals=1,
    time_limit=20)

Which returns a PresentationSchedule that displays as a time-table:

show_schedule(individuals, dates, m, cannot_attend)

Used By Packages

No packages found.