{"id":50903797,"url":"https://github.com/hsma-tools/lokigi","last_synced_at":"2026-06-16T05:05:35.577Z","repository":{"id":350250696,"uuid":"1199445452","full_name":"hsma-tools/lokigi","owner":"hsma-tools","description":"[WIP - alpha] A Python library for location optimization, focussing on solving methods that can output a range of solutions rather than just the 'best' option","archived":false,"fork":false,"pushed_at":"2026-06-11T18:06:10.000Z","size":829076,"stargazers_count":1,"open_issues_count":64,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T19:19:45.048Z","etag":null,"topics":["facility-location","facility-location-problem","location-allocation","location-optimization","maximal-covering-location-problem","p-center","p-median","python"],"latest_commit_sha":null,"homepage":"https://hsma-tools.github.io/lokigi/lokigi_docs/","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/hsma-tools.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-02T11:01:05.000Z","updated_at":"2026-06-11T17:41:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"e8f03696-238f-43d3-9f2a-9ee5e5f7d97b","html_url":"https://github.com/hsma-tools/lokigi","commit_stats":null,"previous_names":["hsma-tools/lokigi"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/hsma-tools/lokigi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hsma-tools%2Flokigi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hsma-tools%2Flokigi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hsma-tools%2Flokigi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hsma-tools%2Flokigi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hsma-tools","download_url":"https://codeload.github.com/hsma-tools/lokigi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hsma-tools%2Flokigi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34391761,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["facility-location","facility-location-problem","location-allocation","location-optimization","maximal-covering-location-problem","p-center","p-median","python"],"created_at":"2026-06-16T05:05:34.756Z","updated_at":"2026-06-16T05:05:35.573Z","avatar_url":"https://github.com/hsma-tools.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## lokigi - Generate, rank, analyse and visualise the best candidate solutions for facility location problems\n\n| | |\n| --- | --- |\n| **Project info:** | ![Code licence](https://img.shields.io/badge/Licence-MIT-A6CE39?\u0026labelColor=gray)   [![ORCID](https://img.shields.io/badge/ORCID_Sammi_Rosser-0000--0002--9552--8988-A6CE39?\u0026logo=orcid\u0026logoColor=white)](https://orcid.org/0000-0002-9552-8988)  [![All Contributors](https://img.shields.io/github/all-contributors/hsma-tools/lokigi?color=ee8449\u0026style=flat-square)](#contributors)  |\n| **Installation:** | [![PyPI](https://img.shields.io/pypi/v/lokigi?\u0026labelColor=gray)](https://pypi.org/project/lokigi/)   |\n| **Metrics:** | [![PyPI downloads all time](https://static.pepy.tech/badge/lokigi)](https://pepy.tech/project/lokigi)    [![PyPI downloads monthly](https://static.pepy.tech/badge/lokigi/month)](https://pepy.tech/project/lokigi)    [![PyPI downloads weekly](https://static.pepy.tech/badge/lokigi/week)](https://pepy.tech/project/lokigi)      ![GitHub Repo stars](https://img.shields.io/github/stars/hsma-tools/lokigi)     |\n| **Activity:** | ![GitHub forks](https://img.shields.io/github/forks/hsma-tools/lokigi)    ![GitHub last commit](https://img.shields.io/github/last-commit/hsma-tools/lokigi)    ![GitHub Release Date](https://img.shields.io/github/release-date/hsma-tools/lokigi) [![GitHub open-pull-requests](https://badgen.net/github/open-prs/hsma-tools/lokigi)](https://GitHub.com/hsma-tools/lokigi/pulls?q=is%3Aopen) |\n| **Build \u0026 quality status:** | [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)    [![Tests](https://github.com/hsma-tools/lokigi/actions/workflows/tests.yml/badge.svg)](https://github.com/hsma-tools/lokigi/actions/workflows/tests.yml)   [![Documentation](https://github.com/hsma-tools/lokigi/actions/workflows/docker_quarto.yml/badge.svg)](https://github.com/hsma-tools/lokigi/actions/workflows/docker_quarto.yml)  |\n| **Supported platforms:** | ![3.11\\|3.12\\|3.13\\|3.14](https://img.shields.io/badge/Python-3.10%7C3.11%7C3.12%7C3.13%7C3.14-blue)    ![OS](https://img.shields.io/badge/OS-Windows%20%7C%20Linux%20%7C%20macOS-blue?logo=windows\u0026logo=linux\u0026logo=apple) |\n\n\n---\n\nlokigi means 'to locate' or 'to place' in the Esperanto language.\n\n(or it's the backronym '**L**ocation **O**ptimisation: **K**-best solution **I**nspection, **G**eneration \u0026 **I**nsights' - whichever floats your boat)\n\nlokigi exists to make the process of providing decision support for healthcare problems with a geographical component easier.\n\nA range of fantastic libraries exist for geographic optimization (e.g. [spopt](https://pysal.org/spopt/)), but many use linear programming to optimize the solution, meaning you emerge with a single optimal solution. For healthcare contexts, this often isn't ideal - decision makers need a range of near-optimal solutions to balance against real-world constraints.\n\nBuilding on [work from Dr Tom Monks](https://github.com/health-data-science-OR/healthcare-logistics/tree/master/optimisation) and [previous rounds of the Health Service Modelling Associates programme](https://hsma.co.uk/hsma_content/modules/current_module_details/3_geographic_modelling_visualisation.html), lokigi is designed to make it easier to beginner programmers to tackle location optimization problems for the benefit of their organisations.\n\nLokigi is planned to expand to boundary optimisation problems in the future.\n\n# Getting started\n\nHead to the [documentation](https://hsma-tools.github.io/lokigi/lokigi_docs/) to find out how to use the package.\n\nInstall the package with `pip install lokigi`\n\n\u003e [!WARNING]\n\u003e Lokigi is currently in an alpha state and not advised to be used for production. However, we would welcome feedback as we move towards a full release.\n\nConda support coming very soon.\n\n## Contributors\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://hsma.co.uk\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/29951987?v=4?s=100\" width=\"100px;\" alt=\"Sammi Rosser\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSammi Rosser\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/hsma-tools/lokigi/commits?author=Bergam0t\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/hsma-tools/lokigi/commits?author=Bergam0t\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/hsma-tools/lokigi/commits?author=Bergam0t\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/hsma-tools/lokigi/issues?q=author%3ABergam0t\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#content-Bergam0t\" title=\"Content\"\u003e🖋\u003c/a\u003e \u003ca href=\"#design-Bergam0t\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"#example-Bergam0t\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"#ideas-Bergam0t\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#infra-Bergam0t\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"#maintenance-Bergam0t\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#projectManagement-Bergam0t\" title=\"Project Management\"\u003e📆\u003c/a\u003e \u003ca href=\"#research-Bergam0t\" title=\"Research\"\u003e🔬\u003c/a\u003e \u003ca href=\"#tutorial-Bergam0t\" title=\"Tutorials\"\u003e✅\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://experts.exeter.ac.uk/19244-thomas-monks\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/881493?v=4?s=100\" width=\"100px;\" alt=\"Tom Monks\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTom Monks\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/hsma-tools/lokigi/commits?author=TomMonks\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-TomMonks\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#mentoring-TomMonks\" title=\"Mentoring\"\u003e🧑‍🏫\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://sites.google.com/nihr.ac.uk/hsma\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/43324262?v=4?s=100\" width=\"100px;\" alt=\"Dr Daniel Chalk\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDr Daniel Chalk\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#mentoring-hsma-chief-elf\" title=\"Mentoring\"\u003e🧑‍🏫\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.linkedin.com/in/amyheather\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/92166537?v=4?s=100\" width=\"100px;\" alt=\"Amy Heather\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAmy Heather\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-amyheather\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"https://github.com/hsma-tools/lokigi/commits?author=amyheather\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\n\n## Note\n\nThis package builds on work from the metapy project from Dr Tom Monks.\n\nMetapy can be found [here](https://github.com/health-data-science-OR/healthcare-logistics/tree/master/optimisation/metapy).\n\nMetapy is release under the MIT licence. The licence is reproduced below in line with the terms of the licence.\n\n\u003e MIT License\n\n\u003e Copyright (c) 2020 health-data-science-OR\n\n\u003e Permission is hereby granted, free of charge, to any person obtaining a copy\n\u003e of this software and associated documentation files (the \"Software\"), to deal\n\u003e in the Software without restriction, including without limitation the rights\n\u003e to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\u003e copies of the Software, and to permit persons to whom the Software is\n\u003e furnished to do so, subject to the following conditions:\n\n\u003e The above copyright notice and this permission notice shall be included in all\n\u003e copies or substantial portions of the Software.\n\n\u003e THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\u003e IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\u003e FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\u003e AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\u003e LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\u003e OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\u003e SOFTWARE.\n\nModified metapy code is noted within the source code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhsma-tools%2Flokigi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhsma-tools%2Flokigi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhsma-tools%2Flokigi/lists"}