{"id":22859721,"url":"https://github.com/pyconuk/conferencescheduler","last_synced_at":"2025-08-05T18:28:18.857Z","repository":{"id":62564324,"uuid":"89591645","full_name":"PyconUK/ConferenceScheduler","owner":"PyconUK","description":"A Python tool to assist the task of scheduling a conference http://conference-scheduler.readthedocs.org","archived":false,"fork":false,"pushed_at":"2018-06-28T14:37:46.000Z","size":562,"stargazers_count":52,"open_issues_count":5,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-14T17:37:52.547Z","etag":null,"topics":["linear-programming","python","scheduling"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PyconUK.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-04-27T11:47:12.000Z","updated_at":"2024-12-18T16:42:01.000Z","dependencies_parsed_at":"2022-11-03T16:45:18.132Z","dependency_job_id":null,"html_url":"https://github.com/PyconUK/ConferenceScheduler","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyconUK%2FConferenceScheduler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyconUK%2FConferenceScheduler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyconUK%2FConferenceScheduler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyconUK%2FConferenceScheduler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyconUK","download_url":"https://codeload.github.com/PyconUK/ConferenceScheduler/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251754037,"owners_count":21638432,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["linear-programming","python","scheduling"],"created_at":"2024-12-13T09:07:53.338Z","updated_at":"2025-04-30T17:45:06.426Z","avatar_url":"https://github.com/PyconUK.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"|Coverage Status| |Build Status| |Build status| |Code Issues|\n\nConference Scheduler\n====================\n\nOverview\n========\n\nA Python tool to assist the task of scheduling a conference which:\n\n- Can take an existing schedule and validate it against a set of\n  constraints\n- Can calculate a new valid, optimal schedule\n- Can calculate a new, valid schedule also optimised to be the minimum change\n  necessary from another given schedule\n- Has the resources, constraints and optimisations defined below built in\n- Has a simple mechanism for defining new constraints and optimisations\n- Is a standalone tool which takes simple data types as input and produces\n  simple data types as output (i.e. does no IO or presentation)\n\nThe full documentation can be found at\n`conference-scheduler.readthedocs.org \u003chttp://conference-scheduler.readthedocs.org/\u003e`__.\n\nTerms\n=====\n\n-  Slot - a combination of room and period\n-  Session - an ordered series of slots (e.g. 'the session in room 1\n   between coffee and lunch on Friday')\n-  Event - a talk or workshop\n-  Demand - the predicted size of audience for an event\n-  Capacity - the capacity of venues\n\nConstraints\n===========\n\n-  All events must be scheduled\n-  A slot may only have a maximum of one event scheduled\n-  An event must not be scheduled in a slot for which it has been marked\n   as unavailable\n-  An event must not be scheduled at the same time as another event for\n   which it has been marked not to clash\n-  An event may be tagged and, if so, must be scheduled in a session\n   where it shares at least one tag with all other events in that\n   session\n\nOptimisation\n============\n\nTwo options:\n\n-  The sum of 'potential disappointments' should be minimised where\n   'potential disappointments' is defined as the excess of demand over\n   room capacity for every scheduled event\n-  Minimise the number of changes from a given schedule.\n\nExamples\n========\n\nSome examples of situations which have arisen at previous conferences\nand could be handled by the unavailability, clashing and tagging\nconstraints:\n\n- A conference organiser says \"Talks X and Y are on similar subject matter and\n  likely to appeal to a similar audience. Let's try not to schedule them\n  against each other.\"\n- A conference organiser says \"Talks X, Y and Z are likely to appeal to a\n  similar audience. Let's try to schedule them sequentially in the same room so\n  that we minimise the movement of people from one room to another.\"\n- A conference organiser says \"The audience for Talk X would benefit greatly\n  from the speech-to-text provision. Let's schedule that one in the main hall.\"\n- A potential session chair says \"I'd like to attend workshop X, so please\n  don't schedule me to chair a session that clashes with it.\"\n- A potential session chair says \"I'm happy to chair a session but I've\n  never done it before, so please don't schedule me in the main hall.\"\n- A speaker says \"I'd like to attend talk X, so please don't schedule my\n  talk in the same slot.\"\n- A first-time speaker is assigned a mentor and requests that the mentor chairs\n  the session in which they are scheduled to give their talk.\n\nAcknowledgements\n================\n\nThis repository was inspired by a talk given by David MacIver at PyCon\nUK 2016: http://2016.pyconuk.org/talks/easy-solutions-to-hard-problems/\n\n.. |Coverage Status| image:: https://coveralls.io/repos/github/PyconUK/ConferenceScheduler/badge.svg?branch=master\n   :target: https://coveralls.io/github/PyconUK/ConferenceScheduler?branch=master\n.. |Build Status| image:: https://travis-ci.org/PyconUK/ConferenceScheduler.svg?branch=master\n   :target: https://travis-ci.org/PyconUK/ConferenceScheduler\n.. |Build status| image:: https://ci.appveyor.com/api/projects/status/cvi70xoqqbwnwxdy?svg=true\n   :target: https://ci.appveyor.com/project/meatballs/conferencescheduler\n.. |Code Issues| image:: https://www.quantifiedcode.com/api/v1/project/db6b0af308a947d098c5f6205e2a90b4/badge.svg\n   :target: https://www.quantifiedcode.com/app/project/db6b0af308a947d098c5f6205e2a90b4\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyconuk%2Fconferencescheduler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyconuk%2Fconferencescheduler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyconuk%2Fconferencescheduler/lists"}