{"id":37663574,"url":"https://github.com/merschformann/sardine-can","last_synced_at":"2026-01-16T11:54:38.667Z","repository":{"id":39700737,"uuid":"257048434","full_name":"merschformann/sardine-can","owner":"merschformann","description":"Humble 3D knapsack / bin packing solver","archived":false,"fork":false,"pushed_at":"2026-01-14T05:25:19.000Z","size":7695,"stargazers_count":105,"open_issues_count":1,"forks_count":23,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-14T09:18:16.346Z","etag":null,"topics":["3d-bin-packing","3d-packing","bin-packing","container-loading-problem","cplex","gui","gurobi","heuristics","knapsack-problem","mixed-integer-programming","packing","packing-algorithm"],"latest_commit_sha":null,"homepage":"","language":"C#","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/merschformann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-04-19T16:31:59.000Z","updated_at":"2026-01-14T05:25:21.000Z","dependencies_parsed_at":"2025-04-13T23:28:08.967Z","dependency_job_id":"a38aa841-16b3-43e0-9c2a-f9e7cb701c32","html_url":"https://github.com/merschformann/sardine-can","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/merschformann/sardine-can","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merschformann%2Fsardine-can","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merschformann%2Fsardine-can/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merschformann%2Fsardine-can/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merschformann%2Fsardine-can/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/merschformann","download_url":"https://codeload.github.com/merschformann/sardine-can/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merschformann%2Fsardine-can/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478391,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["3d-bin-packing","3d-packing","bin-packing","container-loading-problem","cplex","gui","gurobi","heuristics","knapsack-problem","mixed-integer-programming","packing","packing-algorithm"],"created_at":"2026-01-16T11:54:38.202Z","updated_at":"2026-01-16T11:54:38.656Z","avatar_url":"https://github.com/merschformann.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SardineCan \u003cimg src='Material/Icon/sardines.svg' align=\"right\" height=\"90\" /\u003e\n\nSardineCan is a humble 3D knapsack / bin packing solver with some special\nconstraints. It is a collection of constructive heuristics, meta-heuristic\nattempts and linear models with CPLEX \u0026 Gurobi bindings.\n\n![sample screenshot](Material/Screenshots/CO2.png \"Sample screenshot\")\n\n## Outline\n\n- [SC.Service](SC.Service/)\n  - Jobmanager/runner as a RESTful service for integration with other applications.\n- [SC.GUI](SC.GUI/)\n  - GUI for experimenting with the algorithms and rendering instances (download from [latest release](https://github.com/merschformann/sardine-can/releases/latest) - Windows only).\n- [SC.CLI](SC.CLI/)\n  - Command-line interface with a JSON-in/JSON-out style.\n\n## Quickstart\n\nSpin it up (requires [docker](https://docs.docker.com/get-docker/)):\n\n```bash\ndocker run -d --restart always -p 4550:80 --name sardinecan ghcr.io/merschformann/sardinecan:latest\n```\n\nSwagger UI description of the RESTful service can be found here (or at the port\nof your choice): [http://localhost:4550/swagger](http://localhost:4550/swagger)\n\n## Remarks\n\nThe code mainly derives from my (Marius Merschformann) master thesis (2014) and\nwas primarily uploaded to enable colleagues to use it for their projects.\nHowever, it would be great, if it is useful to even more people. :)\n\n### Gurobi \u0026 CPLEX support\n\nUnfortunately, I cannot ship the Gurobi and CPLEX libraries with the code.\nI made an attempt of not relying on these during compile time by moving them to\na Nuget package (Atto.LinearWrap). Even though this part works, I had some\nissues when supplying the dlls later on. Let me know, if you have ideas how to\novercome this.\n\nI hope I can provide a solution for all who have access to Gurobi and/or CPLEX\nin the future, so that the model formulations can also be tested.\n\n### Contributors\n\nThe code mainly originated from the master-thesis of Marius Merschformann\n(2014). Find a copy [here](./Material/MasterThesis/MasterThesis_MariusMerschformann.pdf).\n\nThe implementations around pre-processing were done by Daniel Erdmann and Simon\nMoss during a university project. Further work on ALNS \u0026 some further extensions\nwere done in collaboration with Daniela Guericke.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerschformann%2Fsardine-can","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmerschformann%2Fsardine-can","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerschformann%2Fsardine-can/lists"}