Git Product home page Git Product logo

socially-distanced-seat-allocation's Introduction

socially-distanced-seat-allocation

Overview

This is the repository for my social-distancing seat allocation project for creating optimal seating plans in lecture halls and theatres whilst maintaining social distancing.

gif demoing the GUI

The project contains code for a GUI (demonstrated above) that takes a PDF of an architectural plan, converts it to image format and displays it to the window. The user can then zoom and pan across the image, marking the location of all seat locations within the hall before running an integrated seat allocation algorithm which aims to maximise the number of seats allocated, subject to the constraint that the allocated seats must be seperated by 2m+. The UI then returns and visualises this seating arrangement, before entering 'post-allocation' mode, in which the user can manually add, remove or adjust the positions of allocated seats in the hall.

There are currently two allocation algorithms available: additionAllocator and eliminationAllocator, although feel free to pull this repo and write your own!

Download and Run Instructions

To run the software, simply download a zip of the master branch and run seatAllocationGUI.py. We're yet to properly test cross-platform compatibility or implement automatic package installation, so apologies in advance for any errors! Please refer to the list of currently known issues for troubleshooting.

Currently Known Issues and Common Problems:

  • The UI does not currently support dark mode on newer versions of macOS - this will likely be fixed in the future by requiring a newer version of PyQt5 (v5.12.2) which can handle dark mode.

  • The software uses package pdf2image found here, which can be a little tricky to get running. The pdf2image package uses poppler - a PDF rendering library - which is installed differently depending on your OS, please see here for detailed instructions. If you are comfortable with the anaconda distribution, I would recommend using conda to install both libraries by running the following from Anaconda Prompt:

conda install -c conda-forge pdf2image

conda install -c conda-forge poppler

  • Further errors with using poppler on Windows: if you've installed @oschwartz10612 version on your system, you'll need to add the bin/ folder to PATH. If you need help doing this, I'd recommend this helpful tutorial, or just google 'adding to PATH environment variable' :)

Motivations and Context

I began this project during a work-experience placement with the University of Birmingham in the summer of 2021. The original intention of this software was to make the process of creating socially-distanced seating plans easier than the previous method; which takes place in the MATLAB console terminal and requires manual concatenation of selected seat coordinate arrays grabbed using MATLAB's 'ginput' functionality, followed by manual visualisation and plotting. I think I've achieved this goal!

It's also my hope that this software will aid the reimplementation of some in-person teaching at UoB and other higher educational institutions in the coming academic year, or at least safely increase room capacities: this methodology of computer assisted seat planning increased room capacities by up to 10% in certain halls at UoB, when compared to the manual methods used at the start of the pandemic.

Although this software was originally created for use in higher-educational settings, I see no reason why theatres, libraries or anyone else with architectural drawings shouldn't use this software for socially-distanced seat allocation, so help yourself!

Contributing to this Project

If this project interests you and you'd like to write and implement your own allocation algorithms, I've (hopefully) designed this project so this'll be straightforward! I'm planning on writing some documentation that will help this process...

Thanks

I'd like to say a big thank you my supervisors, Richard Mason and Jonathan Watkins, and the University of Birmingham for supporting me through their Work Experience Bursary Scheme. Richard and Jon: thanks for your support - I've really enjoyed this project and hope you'll find it useful!

socially-distanced-seat-allocation's People

Contributors

andra516 avatar jonathanwatkins avatar

Stargazers

 avatar

Watchers

 avatar  avatar

socially-distanced-seat-allocation's Issues

dark mode compatibility on macOS

UI does not display well when opened with macOS in dark mode
MicrosoftTeams-image

Possible resolution: require PyQt5 v5.12.2 or above which can support dark mode, see this article

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.