Skip to content

Releases: scipopt/russcip

v0.8.2

01 Jun 20:56
53b4101
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.8.1...v0.8.2

v0.8.1

08 May 15:59
Compare
Choose a tag to compare

Updates

  • In this version, you can now attach any data to the Model instance using the
    set_data method, and retrieve it using the get_data and get_data_mut methods.
    This is useful for communicating data between plugins, or storing other representations of the
    variables/constraints in the model.

     let mut model = Model::new();
     
     // Some user-defined data
     struct MyData {
         title: String,
     }
     
     let data = MyData {
         title: "My Data".to_string(),
     };
     
     // Attach the data to the model
     model.set_data(data);
     
     // Retrieve the data
     let data_ref = model.get_data::<MyData>().unwrap();
     assert_eq!(data_ref.title, "My Data");
     
     // Mutate the data
     let data_mut = model.get_data_mut::<MyData>().unwrap();
     data_mut.title = "New Title".to_string();
     assert_eq!(data_mut.title, "New Title");
  • This release also brings support to SCIP's diving and probing modes, through the start_diving and start_probing methods. Returning a Diver and Prober objects that allow access to methods only available in diving and probing modes respectively, where the mode is exited safely, when the corresponding object is dropped.

  • New ergonomic builder for the Row object through row() function.

What's Changed

Full Changelog: v0.8.0...v0.8.1

v0.8.0

22 Apr 16:46
621a012
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.7.1...v0.8.0

v0.7.1

15 Mar 09:06
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.7.0...v0.7.1

v0.7.0

09 Mar 08:14
84714d9
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.6.1...v0.7.0

v0.6.1

27 Jan 10:54
Compare
Choose a tag to compare

What's Changed

This release introduces a new ergonomic way to build models.

use russcip::prelude::*;

let mut model = Model::default().minimize();
let x = model.add(var().binary().obj(1.0));
let y = model.add(var().binary().obj(2.0));
model.add(cons().coef(&x, 1.0).coef(&y, 1.0).eq(1.0));

let solved = model.solve();
assert_eq!(solved.status(), Status::Optimal);
assert_eq!(solved.obj_val(), 1.0);

Merged PRs

Full Changelog: v0.6.0...v0.6.1

v0.6.0

25 Jan 12:43
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.5.1...v0.6.0

v0.5.0

09 Jan 16:17
b4977e1
Compare
Choose a tag to compare

What's changed

  • This release brings a bunch of API changes related to plugins:
    • Now all plugin traits get passed Model<Solving> object, enabling easy access for methods available in the solving stage, and removing the need for saving it in the struct implementing the plugin trait using model.clone_for_plugins(). That's why this release also removes the method.
    • Additionally, callbacks now also include wrappers for the SCIP plugin objects, for example in the Separator trait's execute_lp method now a SCIPSeparator also gets passed, with which one would query its data like the Separator's name or ask it to create a row with this separator as its origin.
    • The EventHdlr plugin callback now also gets passed an Event object representing which event was triggered in that specific call. This struct will in the future include methods that give access to the specific event data for different events.
  • Added wrappers for SCIP_COL and SCIP_ROW with access to most of their methods.
  • Refactoring:
    • Simplification of the trait implementations of the different Model stages.
    • Remove the HasSCIPPtr trait and refactor common functionality in different stages to not depend on macros.

Merged PRs

Full Changelog: v0.4.2...v0.5.0

v0.4.2

31 Dec 09:14
d6279c1
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.4.0...v0.4.2

v0.4.0

24 Oct 11:51
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.3.4...v0.4.0