{"id":21962434,"url":"https://github.com/scipopt/vipr","last_synced_at":"2025-04-23T21:22:30.891Z","repository":{"id":237318973,"uuid":"761643564","full_name":"scipopt/vipr","owner":"scipopt","description":"VIPR: Verifying Integer Programming Results","archived":false,"fork":false,"pushed_at":"2025-04-08T14:15:25.000Z","size":520,"stargazers_count":7,"open_issues_count":1,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-08T15:27:11.986Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","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/scipopt.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","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":"2024-02-22T08:06:36.000Z","updated_at":"2025-04-08T14:15:29.000Z","dependencies_parsed_at":"2025-01-07T11:20:53.103Z","dependency_job_id":"99a2e993-fb6d-40da-a9b4-5b5459015a64","html_url":"https://github.com/scipopt/vipr","commit_stats":null,"previous_names":["scipopt/vipr"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Fvipr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Fvipr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Fvipr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scipopt%2Fvipr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scipopt","download_url":"https://codeload.github.com/scipopt/vipr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250515327,"owners_count":21443371,"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-29T10:40:16.077Z","updated_at":"2025-04-23T21:22:30.867Z","avatar_url":"https://github.com/scipopt.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VIPR: Verifying Integer Programming Results\n\n## About\n\n*VIPR* is a software project to verify, in exact rational arithmetic, the correctness of results computed by mixed-integer linear programming solvers.  It is based on an elementary file format for LP-based branch-and-cut certificates proposed in the article\n\n\u003e Kevin K.H. Cheung, Ambros Gleixner, and Daniel E. Steffy: [Verifying Integer Programming Results](http://dx.doi.org/10.1007/978-3-319-59250-3_13). In: F. Eisenbrand and J. Koenemann, eds., Integer Programming and Combinatorial Optimization: 19th International Conference, IPCO 2017, pp. 148-160, 2017, [`doi:10.1007/978-3-319-59250-3_13`](http://dx.doi.org/10.1007/978-3-319-59250-3_13).\n\nThis repository contains a detailed technical specification of the certificate file format in [Version 1.0](cert_spec_v1_0.md) and [Version 1.1](cert_spec_v1_1.md), [software](code/) to check, display, compress, and complete certificate files, and [supplementary information](experiments/) on the computational experiments conducted for the article above.\n\nThe specification and handling of incomplete derivations in [Version 1.1](cert_spec_v1_1.md) was added for the purpose of the paper\n\n\u003e Leon Eifler and Ambros Gleixner: [Safe and Verified Gomory Mixed Integer Cuts in a Rational MIP Framework](https://doi.org/10.1137/23M156046X).\n In: SIAM Journal on Optimization 34.1, pp. 742–763, 2024.\n\nPlease cite both publications if you use VIPR in your work.\n\n## Software\n\n*VIPR* currently provides six C++ scripts, each being called from a terminal together with an appropriate `.vipr` certificate file:\n\n- `vprchck`: A program that verifies mixed-integer linear programming certificate files specified in the `.vipr` file format.\n- `vprchck_parallel`: A multi-threaded version of `viprchk`. To ensure highest confidence we continue to support the old single-threaded version.\n- `vipr2html`: A program that converts `.vipr` certificate files to a human readable HTML format (not recommended for large files).\n- `viprttn`: A program that tightens and improves `.vipr` files, potentially reducing their size and allowing for easier checking.\n- `viprcomp`: A program that completes incomplete `.vipr` certificate files in parallel using the exact LP solver `SoPlex`.\n- `viprincomp`: A program that makes derivations incomplete. Only useful for testing `viprcomp`.\n\n## File format specification `.vipr`\n\nA conceptual description of the verified integer programming result (`.vipr`) file format is given in the above articles.  A more detailed technical specification is provided [here](cert_spec_v1_1.md).\n\nA small example is given as [paper_eg3.vipr](code/paper_eg3.vipr).  Certificates for large MIP instances from the literature can be found as part of the [supplementary information](experiments/) of the article.\n\n## Installation\n\nThe `vipr` scripts are compiled using [CMake](https://cmake.org/).\n\n### CMake Build System\n\nCMake is a build system generator that can create, e.g.,\nMakefiles for UNIX and macOS or Visual Studio project files for Windows.\n\nCMake provides an\n[extensive documentation](https://cmake.org/cmake/help/latest/manual/cmake.1.html)\nexplaining available features and use cases as well as an\n[FAQ section](https://cmake.org/Wiki/CMake_FAQ). These are the usual steps on a\nLinux or macOS system:\n\n    mkdir build\n    cd build\n    cmake \u003cpath/to/vipr\u003e\n    make\n\nCMake uses an out-of-source build, i.e., compiled binaries and object files are\nseparated from the source tree and located in another directory, e.g, `build`.\nFrom within this directory, run `cmake \u003cpath/to/vipr\u003e` to configure your build,\nfollowed by `make` to compile the code according to the current configuration.\n\nAfterwards, successive calls to `make` are going to recompile modified source code,\nwithout requiring another call to `cmake`.\n\nNote that in order for `viprcomp` to run, the [SoPlex](https://soplex.zib.de/) and therefore [ZLIB](https://zlib.net/) libraries are required.\n\nIf `viprcomp` should not be compiled, it can be turned off in the `cmake \u003cpath/to/vipr\u003e` call by using `-DVIPRCOMP=off`.\n\n## How to use VIPR\n\nAfter installing, run any of the vipr scripts as `./\u003cviprscript\u003e \u003cpath/to/.vipr-file\u003e`.\n\nThe script `viprcomp` is the only one with the additional option to set verbosity levels as well as the option to disable SoPlex.\nThe verbosity level of SoPlex can be set to levels 0-5 using the flag `--vebosity=\u003clevel\u003e`. Additional debug output can be enabled using `--debugmode=on`.\nIf it is known that only weak derivations need to be completed, perfomance can be improved by setting `--soplex=off`.\n\nAn example call for the completion script: `./viprcomp --verbosity=1 --debugmode=off --soplex=on \u003cpath/to/.vipr-file\u003e`.\n\n## Developers and contributors\n\n- [Kevin K.H. Cheung](https://carleton.ca/math/people/kevin-cheung/), School of Mathematics and Statistics, Carleton University\n- [Ambros Gleixner](http://www.zib.de/gleixner), Zuse Institute and HTW Berlin\n- [Daniel E. Steffy](https://desteffy.github.io), Gurobi Optimization\n- [Leon Eifler](https://www.zib.de/members/eifler), Zuse Institute Berlin\n- Fabian Frickenstein, TU Berlin\n\n## Software for generating `.vipr` certificates\n\nAn [exact rational extension](https://github.com/scipopt/scip/tree/exact-rational) of the solver [SCIP](https://scipopt.org) is able to produce certificates of MIP results.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscipopt%2Fvipr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscipopt%2Fvipr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscipopt%2Fvipr/lists"}