{"id":19138074,"url":"https://github.com/lemonpi/discrete-optimization-notes","last_synced_at":"2025-06-24T15:10:17.524Z","repository":{"id":73435372,"uuid":"117129452","full_name":"LemonPi/discrete-optimization-notes","owner":"LemonPi","description":"Notes for the Discrete Optimization course on Coursera (and assignment solutions)","archived":false,"fork":false,"pushed_at":"2019-03-29T06:27:28.000Z","size":4599,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-22T18:40:52.971Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/LemonPi.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":"2018-01-11T17:15:05.000Z","updated_at":"2022-07-28T14:22:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"3c760137-3809-477c-ace0-1306fac801d3","html_url":"https://github.com/LemonPi/discrete-optimization-notes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LemonPi/discrete-optimization-notes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LemonPi%2Fdiscrete-optimization-notes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LemonPi%2Fdiscrete-optimization-notes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LemonPi%2Fdiscrete-optimization-notes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LemonPi%2Fdiscrete-optimization-notes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LemonPi","download_url":"https://codeload.github.com/LemonPi/discrete-optimization-notes/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LemonPi%2Fdiscrete-optimization-notes/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261700855,"owners_count":23196506,"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":[],"created_at":"2024-11-09T06:41:39.215Z","updated_at":"2025-06-24T15:10:17.494Z","avatar_url":"https://github.com/LemonPi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Discrete Optimization Coursera course\nGoal is to solve optimization problems that are best modelled discretely.\nA continuous model is preferred because gradient based methods like stochastic gradient descent\nwill work much faster (so try to make the problem continuous before falling back on these methods).\n\nRecent research has looked into embedding discrete spaces in continuous latent space: [auto chemical design](https://pubs.acs.org/doi/full/10.1021/acscentsci.7b00572)\n\n### Modelling\nProblems can be modelled using a graph or integer linear programming.\n\n### Solutions\nEither exact (complete) or heuristic.\nUse heuristic when:\n- problem too large or high dimensional\n- formulating problem in exact form too difficult\n- feasible solution needed quickly\n\n#### Brute force (exact)\nJust enumerate all solutions, check feasibility and cost function. Often O(n!)\n\n#### Branch and bound (exact)\nCommon general method of dividing into subproblems.\nAvoid full enumeration by pruning by bounds checking.\n\n#### Heuristic Principles\n1. Construction: incrementally build up solution, such as greedily selecting best\n2. Improvement: modify initial feasible solution to improve cost via some kind of neighbourhood (local search, such as with simulated annealing)\n3. Partitioning: divide into subproblems which are solved separately (DP)\n4. Parallel search: several solutions considered simultaneously then compared against each other (genetic)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flemonpi%2Fdiscrete-optimization-notes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flemonpi%2Fdiscrete-optimization-notes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flemonpi%2Fdiscrete-optimization-notes/lists"}