{"id":15057152,"url":"https://github.com/damnpan/esa-mso","last_synced_at":"2026-01-02T06:49:19.426Z","repository":{"id":252021600,"uuid":"839154759","full_name":"damnpan/ESA-MSO","owner":"damnpan","description":null,"archived":false,"fork":false,"pushed_at":"2024-08-07T04:54:14.000Z","size":168,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T12:15:14.722Z","etag":null,"topics":["gurobi-optimization","julia","python"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/damnpan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-07T04:39:16.000Z","updated_at":"2024-08-07T04:54:17.000Z","dependencies_parsed_at":"2024-08-07T08:16:46.904Z","dependency_job_id":null,"html_url":"https://github.com/damnpan/ESA-MSO","commit_stats":null,"previous_names":["damnpan/esa-mso"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damnpan%2FESA-MSO","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damnpan%2FESA-MSO/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damnpan%2FESA-MSO/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damnpan%2FESA-MSO/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/damnpan","download_url":"https://codeload.github.com/damnpan/ESA-MSO/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243725635,"owners_count":20337670,"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":["gurobi-optimization","julia","python"],"created_at":"2024-09-24T22:02:57.391Z","updated_at":"2026-01-02T06:49:19.394Z","avatar_url":"https://github.com/damnpan.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Operations Scheduling \n\n**Julia Code for ESA and MSO Project**  \nUsing Gurobi optimiser to create a small dimension (\u003c50 jobs) operations scheduling optimiser. \n\n- inputs:\n    \n    - variables:\n        - Job id \n        - Job name \n        - Job duration \n        - Number of jobs \n        - Job predecessor-successor pairs \n        - Number of work centers  \n        - Number of machines \n        - Final job(s) id (otherwise assumed to be last job) \n        - Due date for final job(s) \n- outputs:\n    - Gantt chart  \n        - Start and end times of each job and machine assignment \n    - Bar chart \n        - Distribution of machine assignment\n\nThis code is designed to take in two types of input files, applied use cases and test cases. Applied use cases tend to be more linear in nature,  and contain more details such as job names and specific machinery, in addition, there might be long processing times (in days/months). Test case data is used to explore the extreme cases of the scheduling program, it often has more complex input BOM trees, but smaller and more uniform processing times.\n\nUse case notes: the time frame of the scheduler inherently has no units, thus it can be adapted as needed for short/long processes.\n\nNote on files in this folder:  \n*'ready for testing.py'* -\u003e this file is used to create test data, using a specified m, n and number of jobs.\n*'final_code.ipynb'* -\u003e this file is run in Julia version 1.1, using Gurobi Academic License  \n*'pressure_tank.xlsx'* -\u003e data file containing the BOM for a real use case, data sourced by our group.  \n*'testing.xlsx'* -\u003e test case example, produced by the *'ready for testing.py'* file. This is a 9x9 BOM with 50 jobs.\n*'BOM combined.xlsx'* -\u003e integration with GROUP 4's BOM, using randomised duration times.  \n*'LETSA Hueristic model.ipynb'* -\u003e check against LETSA heuristic to determine accuracy and optimality of Julia MILP\n\n\n\n\n**ES02 Group 5**  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamnpan%2Fesa-mso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdamnpan%2Fesa-mso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamnpan%2Fesa-mso/lists"}