{"id":26702330,"url":"https://github.com/alexandresajus/linear-optimization-planning","last_synced_at":"2025-10-08T06:01:25.289Z","repository":{"id":91226597,"uuid":"589943943","full_name":"AlexandreSajus/Linear-Optimization-Planning","owner":"AlexandreSajus","description":"Linear Optimization on a Planning Problem","archived":false,"fork":false,"pushed_at":"2023-02-09T20:28:31.000Z","size":720,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T02:41:06.137Z","etag":null,"topics":["gurobi","optimization","python","tableau"],"latest_commit_sha":null,"homepage":"","language":"Python","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/AlexandreSajus.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":"2023-01-17T10:02:49.000Z","updated_at":"2023-02-03T10:07:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"29f83605-c99d-4b18-89a5-e4a7af4096cf","html_url":"https://github.com/AlexandreSajus/Linear-Optimization-Planning","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AlexandreSajus/Linear-Optimization-Planning","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexandreSajus%2FLinear-Optimization-Planning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexandreSajus%2FLinear-Optimization-Planning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexandreSajus%2FLinear-Optimization-Planning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexandreSajus%2FLinear-Optimization-Planning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexandreSajus","download_url":"https://codeload.github.com/AlexandreSajus/Linear-Optimization-Planning/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexandreSajus%2FLinear-Optimization-Planning/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265742680,"owners_count":23820887,"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","python","tableau"],"created_at":"2025-03-27T02:37:23.019Z","updated_at":"2025-10-08T06:01:25.134Z","avatar_url":"https://github.com/AlexandreSajus.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Linear Optimization on a Planning Problem\nSolving a multi-objective planning problem using the Gurobi linear solver.\n\nThe data folder has example datasets with lists of workers and jobs. The objective is to find a planning to optimize multiple objectives:\n- Maximize the total money generated (gain - penalties of jobs taken)\n- Minimize the maximum amount of different jobs assigned to a worker\n- Minimize the maximum duration of a project\n\nThe model used here is explained in the model.pdf file.\n\nHere is the Pareto Surface of the planning problem on the medium data instance, it reprensents non-dominated solutions to the problem i.e solutions that don't have alternatives that are clearly superior (better on every objective)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media\\pareto2.png\" alt=\"Pareto Surface\" width=\"80%\"/\u003e\n\u003c/p\u003e\n\nWe can choose solutions according to this plot. For example, if we want to choose a planning where workers work maximum 2 projects and projects last maximum 15 days for focus purposes, we can gain 326 in monetary gain maximum using this planning:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media\\planningmedium.png\" alt=\"Example Solution\" width=\"80%\"/\u003e\n\u003c/p\u003e\n\nWe can also choose solutions according to a weighted sum of objectives. For example, here are the plannings if we choose according to money gained and maximum number of projects per worker:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media\\vizPlanning1.png\" alt=\"Weighted Sum Objective\" width=\"80%\"/\u003e\n\u003c/p\u003e\n\nIf we only consider money as an objective, we gain a lot of money but workers have to work on more than 5 different projects during the week which is not ideal. If we limit the number of projects per worker to 2, the colors representing the different jobs become more uniform per worker, but the money gained reduces from 833 to 517\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexandresajus%2Flinear-optimization-planning","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexandresajus%2Flinear-optimization-planning","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexandresajus%2Flinear-optimization-planning/lists"}