{"id":13749082,"url":"https://github.com/scipopt/russcip","last_synced_at":"2025-04-05T03:08:46.832Z","repository":{"id":65174961,"uuid":"576772209","full_name":"scipopt/russcip","owner":"scipopt","description":"Rust interface for SCIP","archived":false,"fork":false,"pushed_at":"2024-10-24T11:50:59.000Z","size":2560,"stargazers_count":38,"open_issues_count":17,"forks_count":11,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-10-25T01:12:39.318Z","etag":null,"topics":["mixed-integer-programming","optimization","rust"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/russcip","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scipopt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2022-12-10T23:25:55.000Z","updated_at":"2024-10-24T18:41:47.000Z","dependencies_parsed_at":"2024-03-18T07:46:29.621Z","dependency_job_id":"2025f28e-62d4-4261-b93a-a96d22c89393","html_url":"https://github.com/scipopt/russcip","commit_stats":{"total_commits":116,"total_committers":5,"mean_commits":23.2,"dds":0.06034482758620685,"last_synced_commit":"769540133ee459fdf0049cfc791368581a1966d4"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Frusscip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Frusscip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Frusscip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Frusscip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scipopt","download_url":"https://codeload.github.com/scipopt/russcip/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247280270,"owners_count":20912967,"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":["mixed-integer-programming","optimization","rust"],"created_at":"2024-08-03T07:00:55.009Z","updated_at":"2025-04-05T03:08:46.817Z","avatar_url":"https://github.com/scipopt.png","language":"Rust","readme":"# russcip\n\n[![tests](https://github.com/mmghannam/russcip/actions/workflows/build_and_test.yml/badge.svg)](https://github.com/mmghannam/russcip/actions/workflows/build_and_test.yml)\n[![coverage](https://img.shields.io/codecov/c/github/scipopt/russcip)](https://app.codecov.io/gh/scipopt/russcip/)\n[![][img_crates]][crates] [![][img_doc]][doc]\n\n\n[img_crates]: https://img.shields.io/crates/v/russcip.svg\n\n[crates]: https://crates.io/crates/russcip\n\n[img_doc]: https://img.shields.io/badge/rust-documentation-blue.svg\n\n[doc]: https://docs.rs/russcip/\n\n[img_coverage]: https://img.shields.io/codecov/c/github/scipopt/russcip\n\nA safe Rust interface for [SCIP](https://www.scipopt.org/index.php#download). This crate also exposes access to the\nSCIP's C-API through the `ffi` module.\nThe project is currently actively developed, issues/pull-requests are very welcome.\n\n### Installation\nThe easiest way is to run this in your crate directory\n```bash\ncargo add russcip --features bundled\n```\nfor other installation methods, please check [INSTALL.md](INSTALL.md).\n\n### Usage\n\nWe provide multiple examples listed [here](examples/README.md), and you can also check the [documentation](https://docs.rs/russcip/).\n\n## Accessing unsafe functions\n\nThe `ffi` module provides access to the raw C-API of SCIP. This can be used to call functions that are not wrapped in\nthe safe interface yet.\nThe `scip_ptr` unsafe function in the `Model` struct, which gives you access to the underlying SCIP raw pointer.\nEach other wrapper struct has a similar function named `inner`, e.g. `Variable::inner` or `Constraint::inner` gives you\na `*mut ffi::SCIP_VAR` or `*mut ffi::SCIP_CONS` respectively.\n\n## Implementing Custom Plugins\n\nSome of SCIP's plugins are imported to the rust interface as traits. Currently the implemented plugins are:\n\n| **Name**           | **File**                                                                        | **Docs**                                                                        |\n|--------------------|---------------------------------------------------------------------------------|---------------------------------------------------------------------------------|\n| Branching rule     | [branchrule.rs](https://github.com/scipopt/russcip/blob/main/src/branchrule.rs) | [docs](https://docs.rs/russcip/latest/russcip/branchrule/trait.BranchRule.html) |\n| Variable Pricer    | [pricer.rs](https://github.com/scipopt/russcip/blob/main/src/pricer.rs)         | [docs](https://docs.rs/russcip/latest/russcip/pricer/trait.Pricer.html)         |\n| Event Handler      | [eventhdlr.rs](https://github.com/scipopt/russcip/blob/main/src/eventhdlr.rs)   | [docs](https://docs.rs/russcip/latest/russcip/eventhdlr/trait.Eventhdlr.html)   |\n| Primal Heuristic   | [heuristic.rs](https://github.com/scipopt/russcip/blob/main/src/heuristic.rs)   | [docs](https://docs.rs/russcip/latest/russcip/heuristic/trait.Heuristic.html)   |\n| Separator          | [separator.rs](https://github.com/scipopt/russcip/blob/main/src/separator.rs)   | [docs](https://docs.rs/russcip/latest/russcip/separator/trait.Separator.html)   |\n| Constraint Handler | [conshdlr.rs](https://github.com/scipopt/russcip/blob/main/src/conshdlr.rs)     | [docs](https://docs.rs/russcip/latest/russcip/conshdlr/trait.Conshdlr.html)     |\n\nTo add a custom plugin to a SCIP `Model` instance, you should implement its trait and call the corresponding\n`include_{PLUGIN_NAME}` method. For examples on implementing the specific plugin trait you can check the tests in the\ncorresponding files.\n\n## Contributing\n\nThinking about contributing to _russcip_? First of all thank you! You can check our\nissues [page](https://github.com/scipopt/russcip/issues), there's a bunch of [\n_good_first_issues_](https://github.com/scipopt/russcip/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22),\nor you can check our contribution [guide](CONTRIBUTING.md). If you'd like to contribute and unsure what to do, or\nthinking about a big feature and want to discuss if it makes sense and what is the best way to do it? you could open a\nnew [issue](https://github.com/scipopt/russcip/issues/new/choose)/[discussion](https://github.com/scipopt/russcip/discussions/new/choose)\nor send me a quick email [@mmghannam](https://github.com/mmghannam).\n\n## About SCIP\n\nSCIP is currently one of the fastest non-commercial solvers for mixed integer programming (MIP) and mixed integer\nnonlinear programming (MINLP). It is also a framework for constraint integer programming and branch-cut-and-price. It\nallows for total control of the solution process and the access of detailed information down to the guts of the solver.\n","funding_links":[],"categories":["Projects"],"sub_categories":["Libraries"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscipopt%2Frusscip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscipopt%2Frusscip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscipopt%2Frusscip/lists"}