From b1fb691cd969cb291647d0c137222f25a1c85992 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Jun 2024 12:07:58 +0100 Subject: [PATCH 01/10] chore(deps): Update pyo3-polars requirement from 0.13 to 0.14 (#193) --- updated-dependencies: - dependency-name: pyo3-polars dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 4406cd4e..7f69e387 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ num = "0.4.0" float-cmp = "0.9.0" ndarray = "0.15.3" polars = { version = "0.39", features = ["lazy", "rows", "ndarray"] } -pyo3-polars = "0.13" +pyo3-polars = "0.14" pyo3 = { version = "0.21", default-features = false } pyo3-log = "0.10" tracing = { version = "0.1", features = ["log"] } From 1b0760347c805623ed26a66abf476a379bf8fd0f Mon Sep 17 00:00:00 2001 From: James Batchelor Date: Mon, 10 Jun 2024 18:51:06 +0100 Subject: [PATCH 02/10] fix: Schema refs to v1 params that are converted to timeseries inputs are now updated to timeseries refs (#191) --- pywr-schema/src/metric.rs | 6 +- pywr-schema/src/model.rs | 55 ++++++++- pywr-schema/src/nodes/virtual_storage.rs | 2 +- .../test_models/v1/timeseries-converted.json | 116 ++++++++++++++++++ .../src/test_models/v1/timeseries.json | 59 +++++++++ 5 files changed, 231 insertions(+), 7 deletions(-) create mode 100644 pywr-schema/src/test_models/v1/timeseries-converted.json create mode 100644 pywr-schema/src/test_models/v1/timeseries.json diff --git a/pywr-schema/src/metric.rs b/pywr-schema/src/metric.rs index d2fc8ecc..18f64665 100644 --- a/pywr-schema/src/metric.rs +++ b/pywr-schema/src/metric.rs @@ -297,11 +297,11 @@ impl NodeReference { } } -impl From for NodeReference{ - fn from (v: String) -> Self { +impl From for NodeReference { + fn from(v: String) -> Self { NodeReference { name: v, - attribute: None + attribute: None, } } } diff --git a/pywr-schema/src/model.rs b/pywr-schema/src/model.rs index cffdb37b..f509507d 100644 --- a/pywr-schema/src/model.rs +++ b/pywr-schema/src/model.rs @@ -5,7 +5,7 @@ use crate::data_tables::DataTable; #[cfg(feature = "core")] use crate::data_tables::LoadedTableCollection; use crate::error::{ConversionError, SchemaError}; -use crate::metric::Metric; +use crate::metric::{Metric, TimeseriesColumns, TimeseriesReference}; use crate::metric_sets::MetricSet; use crate::nodes::NodeAndTimeseries; use crate::outputs::Output; @@ -283,14 +283,14 @@ impl PywrNetwork { .flatten() .collect::>(); - let nodes = nodes_and_ts.into_iter().map(|n| n.node).collect::>(); + let mut nodes = nodes_and_ts.into_iter().map(|n| n.node).collect::>(); let edges = match v1.edges { Some(edges) => edges.into_iter().map(|e| e.into()).collect(), None => Vec::new(), }; - let parameters = if let Some(v1_parameters) = v1.parameters { + let mut parameters = if let Some(v1_parameters) = v1.parameters { let mut unnamed_count: usize = 0; let (parameters, param_ts_data) = convert_parameter_v1_to_v2(v1_parameters, &mut unnamed_count, &mut errors); @@ -300,6 +300,34 @@ impl PywrNetwork { None }; + // closure to update a parameter ref with a timeseries ref when names match. + let update_to_ts_ref = &mut |m: &mut Metric| { + if let Metric::Parameter(p) = m { + let ts_ref = ts_data.iter().find(|ts| ts.name == Some(p.name.clone())); + if let Some(ts_ref) = ts_ref { + // The timeseries requires a name to be used as a reference + let name = match &ts_ref.name { + Some(n) => n.clone(), + None => return, + }; + + let cols = match (&ts_ref.column, &ts_ref.scenario) { + (Some(col), None) => TimeseriesColumns::Column(col.clone()), + (None, Some(scenario)) => TimeseriesColumns::Scenario(scenario.clone()), + (Some(_), Some(_)) => return, + (None, None) => return, + }; + + *m = Metric::Timeseries(TimeseriesReference::new(name, cols)); + } + } + }; + + nodes.visit_metrics_mut(update_to_ts_ref); + if let Some(p) = parameters.as_mut() { + p.visit_metrics_mut(update_to_ts_ref) + } + let timeseries = if !ts_data.is_empty() { let ts = convert_from_v1_data(ts_data, &v1.tables, &mut errors); Some(ts) @@ -977,6 +1005,26 @@ mod tests { panic!("Expected an error due to missing file: {str}"); } } + + #[test] + fn test_v1_conversion() { + let v1_str = include_str!("./test_models/v1/timeseries.json"); + let v1: pywr_v1_schema::PywrModel = serde_json::from_str(v1_str).unwrap(); + + let (v2, errors) = PywrModel::from_v1(v1); + + assert_eq!(errors.len(), 0); + + std::fs::write("tmp.json", serde_json::to_string_pretty(&v2).unwrap()).unwrap(); + + let v2_converted: serde_json::Value = + serde_json::from_str(&serde_json::to_string_pretty(&v2).unwrap()).unwrap(); + + let v2_expected: serde_json::Value = + serde_json::from_str(include_str!("./test_models/v1/timeseries-converted.json")).unwrap(); + + assert_eq!(v2_converted, v2_expected); + } } #[cfg(test)] @@ -988,6 +1036,7 @@ mod core_tests { use ndarray::{Array1, Array2, Axis}; use pywr_core::{metric::MetricF64, recorders::AssertionRecorder, solvers::ClpSolver, test_utils::run_all_solvers}; use std::path::PathBuf; + use std::str::FromStr; fn model_str() -> &'static str { include_str!("./test_models/simple1.json") diff --git a/pywr-schema/src/nodes/virtual_storage.rs b/pywr-schema/src/nodes/virtual_storage.rs index 2b563b8e..50f7e591 100644 --- a/pywr-schema/src/nodes/virtual_storage.rs +++ b/pywr-schema/src/nodes/virtual_storage.rs @@ -2,11 +2,11 @@ use crate::error::ConversionError; #[cfg(feature = "core")] use crate::error::SchemaError; use crate::metric::Metric; +use crate::metric::NodeReference; #[cfg(feature = "core")] use crate::model::LoadArgs; use crate::nodes::core::StorageInitialVolume; use crate::nodes::{NodeAttribute, NodeMeta}; -use crate::metric::NodeReference; use crate::parameters::TryIntoV2Parameter; #[cfg(feature = "core")] use pywr_core::{ diff --git a/pywr-schema/src/test_models/v1/timeseries-converted.json b/pywr-schema/src/test_models/v1/timeseries-converted.json new file mode 100644 index 00000000..8fae7648 --- /dev/null +++ b/pywr-schema/src/test_models/v1/timeseries-converted.json @@ -0,0 +1,116 @@ +{ + "metadata": { + "title": "Simple timeseries", + "description": null, + "minimum_version": null + }, + "timestepper": { + "start": "2021-01-01", + "end": "2021-01-31", + "timestep": 1 + }, + "scenarios": null, + "network": { + "nodes": [ + { + "type": "Input", + "name": "input1", + "max_flow": { + "type": "Timeseries", + "name": "inflow", + "columns": { + "type": "Column", + "name": "inflow1" + } + }, + "min_flow": null, + "cost": null + }, + { + "type": "Input", + "name": "input2", + "max_flow": { + "type": "Parameter", + "name": "factored_flow", + "key": null + }, + "min_flow": null, + "cost": null + }, + { + "type": "Link", + "name": "link1", + "max_flow": null, + "min_flow": null, + "cost": null + }, + { + "type": "Output", + "name": "output1", + "max_flow": { + "type": "Parameter", + "name": "demand", + "key": null + }, + "min_flow": null, + "cost": { + "type": "Constant", + "value": -10.0 + } + } + ], + "edges": [ + { + "from_node": "input1", + "to_node": "link1" + }, + { + "from_node": "input2", + "to_node": "link1" + }, + { + "from_node": "link1", + "to_node": "output1" + } + ], + "parameters": [ + { + "type": "Constant", + "name": "demand", + "value": 100.0 + }, + { + "type": "Aggregated", + "name": "factored_flow", + "agg_func": "product", + "metrics": [ + { + "type": "Timeseries", + "name": "inflow", + "columns": { + "type": "Column", + "name": "inflow1" + } + }, + { + "type": "Constant", + "value": 0.5 + } + ] + } + ], + "tables": null, + "timeseries": [ + { + "name": "inflow", + "provider": { + "type": "Polars", + "time_col": null, + "url": "inflow.csv" + } + } + ], + "metric_sets": null, + "outputs": null + } +} \ No newline at end of file diff --git a/pywr-schema/src/test_models/v1/timeseries.json b/pywr-schema/src/test_models/v1/timeseries.json new file mode 100644 index 00000000..9eda969d --- /dev/null +++ b/pywr-schema/src/test_models/v1/timeseries.json @@ -0,0 +1,59 @@ +{ + "metadata": { + "title": "Simple timeseries" + }, + "timestepper": { + "start": "2021-01-01", + "end": "2021-01-31", + "timestep": 1 + }, + "nodes": [ + { + "name": "input1", + "type": "Input", + "max_flow": "inflow" + }, + { + "name": "input2", + "type": "Input", + "max_flow": "factored_flow" + }, + { + "name": "link1", + "type": "Link" + }, + { + "name": "output1", + "type": "Output", + "max_flow": "demand", + "cost": -10 + } + ], + "edges": [ + ["input1", "link1"], + ["input2", "link1"], + ["link1", "output1"] + ], + "parameters": { + "demand": { + "type": "constant", + "value": 100.0 + }, + "inflow": { + "type": "dataframe", + "url" : "inflow.csv", + "parse_dates": true, + "dayfirst": true, + "index_col": 0, + "column": "inflow1" + }, + "factored_flow": { + "type": "aggregated", + "agg_func":"product", + "parameters": [ + "inflow", + 0.5 + ] + } + } +} From 70ba15d4af5306003459014f54a354ea3d0f0014 Mon Sep 17 00:00:00 2001 From: knoxsp Date: Wed, 12 Jun 2024 14:18:37 +0100 Subject: [PATCH 03/10] docs: Add a page on the procedure for contributing to documentation (#196) --------- Co-authored-by: Stephen Knox --- .gitignore | 2 + pywr-book/src/SUMMARY.md | 1 + pywr-book/src/building_documentation.md | 64 ++++++++++++++++++ .../making_documentation/docs_example.png | Bin 0 -> 175290 bytes .../src/images/making_documentation/fork.png | Bin 0 -> 28779 bytes .../src/images/making_documentation/pr1.png | Bin 0 -> 26662 bytes .../src/images/making_documentation/pr2.png | Bin 0 -> 17140 bytes .../src/images/making_documentation/pr3.png | Bin 0 -> 44880 bytes .../src/images/making_documentation/pr4.png | Bin 0 -> 44561 bytes .../src/images/making_documentation/pr5.png | Bin 0 -> 155665 bytes pywr-book/src/introduction.md | 2 +- 11 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 pywr-book/src/building_documentation.md create mode 100644 pywr-book/src/images/making_documentation/docs_example.png create mode 100644 pywr-book/src/images/making_documentation/fork.png create mode 100644 pywr-book/src/images/making_documentation/pr1.png create mode 100644 pywr-book/src/images/making_documentation/pr2.png create mode 100644 pywr-book/src/images/making_documentation/pr3.png create mode 100644 pywr-book/src/images/making_documentation/pr4.png create mode 100644 pywr-book/src/images/making_documentation/pr5.png diff --git a/.gitignore b/.gitignore index aa769a1c..e2339635 100644 --- a/.gitignore +++ b/.gitignore @@ -224,3 +224,5 @@ Cargo.lock # These are backup files generated by rustfmt **/*.rs.bk + +.DS_Store diff --git a/pywr-book/src/SUMMARY.md b/pywr-book/src/SUMMARY.md index d4fbe8be..3ba6792b 100644 --- a/pywr-book/src/SUMMARY.md +++ b/pywr-book/src/SUMMARY.md @@ -18,3 +18,4 @@ - [Version control](./model-management/version-control.md) - [Packaging](./model-management/packaging.md) - [Deployment & Docker](./model-management/deployment.md) +- [Documentation](./building_documentation.md) diff --git a/pywr-book/src/building_documentation.md b/pywr-book/src/building_documentation.md new file mode 100644 index 00000000..7a6c9c36 --- /dev/null +++ b/pywr-book/src/building_documentation.md @@ -0,0 +1,64 @@ +# Contributing to Documentation + +The documentation for Pywr V2 is located in the pywr-next repository, [here](https://github.com/pywr/pywr-next) in the `pywr-book` subfolder. + +The documentation is written using 'markdown', a format which enables easy formatting for the web. + +This website can help get started: [www.markdownguide.org](https://www.markdownguide.org) + +To contribute documentation for Pywr V2, we recommend following the steps below to ensure we can review and integrate any changes as easily as possible. + +## Steps to create documentation + +1. Fork the pywr-next repository + +![Fork the repository](./images/making_documentation/fork.png "Fork") + +2. Clone the fork + +``` + git clone https://github.com/MYUSER/pywr-next +``` + +3. Create a branch + +``` + git checkout -b my-awesome-docs +``` + +4. Open the book documentation in your favourite editor + +``` + vi pywr-next/pywr-book/introduction.md +``` + +Which should look something like this: + +![An example docs file](./images/making_documentation/docs_example.png "Docs example") + +5. Having modified the documentation, add and commit the changes using the commit format + +``` +git add introduction.md" +``` + +``` +git commit -m "docs: Add an example documentation" +``` + +6. Create a pull request from your branch + 1. In your fork, click on the 'Pull Requests' tab + ![Pull request](./images/making_documentation/pr1.png "Pull Request") + + 2. Click on 'New Pull Request' + ![Pull request](./images/making_documentation/pr2.png "Pull Request") + + 3. Choose your branch from the drop-down on the right-hand-side + ![Pull request](./images/making_documentation/pr3.png "Pull Request") + + 4. Click 'Create Pull Request' when the button appears + ![Pull request](./images/making_documentation/pr4.png "Pull Request") + + 5. Add a note if you want, and click 'Create Pull Request' + ![Pull request](./images/making_documentation/pr5.png "Pull Request") + diff --git a/pywr-book/src/images/making_documentation/docs_example.png b/pywr-book/src/images/making_documentation/docs_example.png new file mode 100644 index 0000000000000000000000000000000000000000..9c08470ca1a06f2d117750d2cb70c77b2ca7ef10 GIT binary patch literal 175290 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 E59F!Tg#Z8m literal 0 HcmV?d00001 diff --git a/pywr-book/src/images/making_documentation/pr1.png b/pywr-book/src/images/making_documentation/pr1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd028f90bf91c84d92020cfb433f0edace78e465 GIT binary patch literal 26662 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 a=S9ymqOTezSgDABA7y!Uxe^)Ufd2svXsq@C literal 0 HcmV?d00001 diff --git a/pywr-book/src/images/making_documentation/pr4.png b/pywr-book/src/images/making_documentation/pr4.png new file mode 100644 index 0000000000000000000000000000000000000000..ade214ef0a3c4be7b1e19df7660cb5fdc0145c10 GIT binary patch literal 44561 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≻mOF>ETdqTRbhuF(dBw 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\n\nThe constraint matrix is\ngiven in standard compressed sparse column (without gaps).\n
    \n
  • start[i] stores the starting index of the ith column\n
  • index[k] stores the row index of the kth nonzero element\n
  • value[k] stores the coefficient of the kth nonzero element\n
"] + pub fn Cbc_loadProblem( + model: *mut Cbc_Model, + numcols: ::std::os::raw::c_int, + numrows: ::std::os::raw::c_int, + start: *const CoinBigIndex, + index: *const ::std::os::raw::c_int, + value: *const f64, + collb: *const f64, + colub: *const f64, + obj: *const f64, + rowlb: *const f64, + rowub: *const f64, + ); +} +extern "C" { + #[doc = " @brief Set the name of a column\n\n @param model problem object\n @param iColumn column index\n @param column name"] + pub fn Cbc_setColName(model: *mut Cbc_Model, iColumn: ::std::os::raw::c_int, name: *const ::std::os::raw::c_char); +} +extern "C" { + #[doc = " @brief Set the name of a row\n\n @param model problem object\n @param iRow row index\n @param name row name"] + pub fn Cbc_setRowName(model: *mut Cbc_Model, iRow: ::std::os::raw::c_int, name: *const ::std::os::raw::c_char); +} +extern "C" { + #[doc = " @brief Sets optimization direction\n\n @param model problem object\n @param sense: direction of optimization (1 - minimize, -1 - maximize, 0 - ignore)"] + pub fn Cbc_setObjSense(model: *mut Cbc_Model, sense: f64); +} +extern "C" { + #[doc = " @brief Set the lower bound of a single constraint\n\n @param model problem object\n @param index row index\n @param value new row lower bound"] + pub fn Cbc_setRowLower(model: *mut Cbc_Model, index: ::std::os::raw::c_int, value: f64); +} +extern "C" { + #[doc = " @brief Set the upper bound of a single constraint\n\n @param model problem object\n @param index row index\n @param value new row upper bound"] + pub fn Cbc_setRowUpper(model: *mut Cbc_Model, index: ::std::os::raw::c_int, value: f64); +} +extern "C" { + #[doc = " @brief Set the objective coefficient of a single variable\n\n @param model problem object\n @param index variable index\n @param value new objective function coefficient for this variable"] + pub fn Cbc_setObjCoeff(model: *mut Cbc_Model, index: ::std::os::raw::c_int, value: f64); +} +extern "C" { + #[doc = " @brief Set the lower bound of a single variable\n\n @param model problem object\n @param index variable index\n @param value variable lower bound"] + pub fn Cbc_setColLower(model: *mut Cbc_Model, index: ::std::os::raw::c_int, value: f64); +} +extern "C" { + #[doc = " @brief Set the upper bound of a single variable\n\n @param model problem object\n @param index variable index\n @param value new variable upper bound"] + pub fn Cbc_setColUpper(model: *mut Cbc_Model, index: ::std::os::raw::c_int, value: f64); +} +extern "C" { + #[doc = " @brief Set this variable to be continuous\n\n @param model problem object\n @param iColumn column index"] + pub fn Cbc_setContinuous(model: *mut Cbc_Model, iColumn: ::std::os::raw::c_int); +} +extern "C" { + #[doc = " @brief Set this variable to be integer\n\n @param model problem object\n @param iColumn column index"] + pub fn Cbc_setInteger(model: *mut Cbc_Model, iColumn: ::std::os::raw::c_int); +} +extern "C" { + #[doc = " @brief Cbc_Model destructor"] + pub fn Cbc_deleteModel(model: *mut Cbc_Model); +} +extern "C" { + #[doc = " @brief Enter initial feasible solution\n\n Enter an initial feasible solution. Only the non-zero main\n binary/integer decision variables need to be informed.\n Auxiliary and/or continuous variables are computed\n automatically.\n\n @param model problem object\n @param count number of variables\n @param colNames names of variables\n @param colValues variable values\n"] + pub fn Cbc_setMIPStart( + model: *mut Cbc_Model, + count: ::std::os::raw::c_int, + colNames: *mut *const ::std::os::raw::c_char, + colValues: *const f64, + ); +} +extern "C" { + #[doc = " @brief Enter initial feasible solution\n\n Enter an initial feasible solution. Only the non-zero main\n binary/integer decision variables need to be informed.\n Auxiliary and/or continuous variables are computed\n automatically. Same as setMIPStart but using variable indexes.\n\n @param model problem object\n @param count number of variables\n @param colIdxs indexes of variables\n @param colValues variable values\n"] + pub fn Cbc_setMIPStartI( + model: *mut Cbc_Model, + count: ::std::os::raw::c_int, + colIdxs: *const ::std::os::raw::c_int, + colValues: *const f64, + ); +} +extern "C" { + #[doc = " @brief Creates a copy of the current model\n\n @param model problem object\n @return model copy"] + pub fn Cbc_clone(model: *mut Cbc_Model) -> *mut Cbc_Model; +} +extern "C" { + #[doc = " @brief Queries problem name\n\n @param model problem object\n @param maxNumberCharacters space in string array\n @param array string where problem name will be saved"] + pub fn Cbc_problemName( + model: *mut Cbc_Model, + maxNumberCharacters: ::std::os::raw::c_int, + array: *mut ::std::os::raw::c_char, + ); +} +extern "C" { + #[doc = " @brief Number of nonzero elements in constraint matrix\n\n @param model problem object\n @return number of non-zero entries in constraint matrix"] + pub fn Cbc_getNumElements(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Number of variables in the model\n @param model problem object\n @return number of columns (variables)"] + pub fn Cbc_getNumCols(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Number of integer variables in the model\n\n @param model problem object\n @return number of integer variables in this model"] + pub fn Cbc_getNumIntegers(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Number of constraints in the model\n @param model problem object\n @return number of rows (constraints) in the model"] + pub fn Cbc_getNumRows(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Queries row name\n\n @param model problem object\n @param row index\n @param name string where row name will be stored\n @param string where row name will be stored"] + pub fn Cbc_getRowName( + model: *mut Cbc_Model, + iRow: ::std::os::raw::c_int, + name: *mut ::std::os::raw::c_char, + maxLength: usize, + ); +} +extern "C" { + #[doc = " Queries column name\n\n @param model problem object\n @param iColumn column index\n @param name where name will be stored\n @param maxLength maximum length of name string"] + pub fn Cbc_getColName( + model: *mut Cbc_Model, + iColumn: ::std::os::raw::c_int, + name: *mut ::std::os::raw::c_char, + maxLength: usize, + ); +} +extern "C" { + #[doc = " @brief Number of non-zero entries in a row\n\n @param model problem object\n @param row row index\n @return number of non-zero entries in row"] + pub fn Cbc_getRowNz(model: *mut Cbc_Model, row: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Indices of variables that appear on a row\n\n @param model problem object\n @param row row index\n @return vector with indexes of columns that appear on this row"] + pub fn Cbc_getRowIndices(model: *mut Cbc_Model, row: ::std::os::raw::c_int) -> *const ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Coefficients of variables that appear on this row\n\n @param model problem object\n @param row row index\n @return coefficients of variables that appear on this row"] + pub fn Cbc_getRowCoeffs(model: *mut Cbc_Model, row: ::std::os::raw::c_int) -> *const f64; +} +extern "C" { + #[doc = " @brief Number of non-zero entries in a column\n\n @param model problem object\n @param col column index\n @return numbef of rows that this column appears"] + pub fn Cbc_getColNz(model: *mut Cbc_Model, col: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Indices of rows that a column appears\n\n @param model problem object\n @param col column index\n @return indices of rows that this column appears"] + pub fn Cbc_getColIndices(model: *mut Cbc_Model, col: ::std::os::raw::c_int) -> *const ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Coefficients that a column appear in rows\n\n @param model problem object\n @param col column index\n @return coefficients of this column in rows"] + pub fn Cbc_getColCoeffs(model: *mut Cbc_Model, col: ::std::os::raw::c_int) -> *const f64; +} +extern "C" { + #[doc = " @brief Right hand side of a row\n\n @param model problem object\n @param row row index\n @return row right hand side"] + pub fn Cbc_getRowRHS(model: *mut Cbc_Model, row: ::std::os::raw::c_int) -> f64; +} +extern "C" { + #[doc = " @brief Sense a row\n @param model problem object\n @param row row index\n @return row sense: E for =, L for <=, G for >= and R for ranged row"] + pub fn Cbc_getRowSense(model: *mut Cbc_Model, row: ::std::os::raw::c_int) -> ::std::os::raw::c_char; +} +extern "C" { + #[doc = " @brief Direction of optimization\n\n @param model problem object\n @return Direction of optimization (1 - minimize, -1 - maximize, 0 - ignore)"] + pub fn Cbc_getObjSense(model: *mut Cbc_Model) -> f64; +} +extern "C" { + #[doc = " @brief Constraint lower bounds\n\n @param model problem object\n @return vector with lower bounds of constraints"] + pub fn Cbc_getRowLower(model: *mut Cbc_Model) -> *const f64; +} +extern "C" { + #[doc = " @brief Constraint upper bounds\n\n @param model problem object\n @return constraint upper bounds"] + pub fn Cbc_getRowUpper(model: *mut Cbc_Model) -> *const f64; +} +extern "C" { + #[doc = " @brief Objective vector\n\n @param model problem object\n @return vector with coefficients of variables in the objective function"] + pub fn Cbc_getObjCoefficients(model: *mut Cbc_Model) -> *const f64; +} +extern "C" { + #[doc = " @brief Variable lower bounds\n\n @param model problem object\n @return vector with lower bounds of variables"] + pub fn Cbc_getColLower(model: *mut Cbc_Model) -> *const f64; +} +extern "C" { + #[doc = " @brief Variable upper bounds\n\n @param model problem object\n @return vector with column upper bounds"] + pub fn Cbc_getColUpper(model: *mut Cbc_Model) -> *const f64; +} +extern "C" { + #[doc = " @brief Determine whether the ith variable is integer restricted\n\n @param model problem object\n @param i variable index\n @return 1 if variable is integer, 0 otherwise"] + pub fn Cbc_isInteger(model: *mut Cbc_Model, i: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Read an mps file from the given filename\n\n @param model problem object\n @param fileName file name"] + pub fn Cbc_readMps(model: *mut Cbc_Model, filename: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Read an lp file from the given filename\n\n @param model problem object\n @param fileName file name"] + pub fn Cbc_readLp(model: *mut Cbc_Model, filename: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Write an mps file from the given filename\n\n @param model problem object\n @param fileName file name"] + pub fn Cbc_writeMps(model: *mut Cbc_Model, filename: *const ::std::os::raw::c_char); +} +extern "C" { + #[doc = " @brief Write an lp file from the given filename\n\n @param model problem object\n @param fileName file name"] + pub fn Cbc_writeLp(model: *mut Cbc_Model, filename: *const ::std::os::raw::c_char); +} +extern "C" { + #[doc = " Provide an initial feasible solution to accelerate branch-and-bound\nNote that feasibility of the solution is *not* verified."] + pub fn Cbc_setInitialSolution(model: *mut Cbc_Model, sol: *const f64); +} +extern "C" { + #[doc = " \"Column start\" vector of constraint matrix. Same format as Cbc_loadProblem()"] + pub fn Cbc_getVectorStarts(model: *mut Cbc_Model) -> *const CoinBigIndex; +} +extern "C" { + #[doc = " \"Row index\" vector of constraint matrix"] + pub fn Cbc_getIndices(model: *mut Cbc_Model) -> *const ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Coefficient vector of constraint matrix"] + pub fn Cbc_getElements(model: *mut Cbc_Model) -> *const f64; +} +extern "C" { + #[doc = " Maximum lenght of a row or column name"] + pub fn Cbc_maxNameLength(model: *mut Cbc_Model) -> usize; +} +extern "C" { + #[doc = " Print the model"] + pub fn Cbc_printModel(model: *mut Cbc_Model, argPrefix: *const ::std::os::raw::c_char); +} +extern "C" { + #[doc = "@name Solver parameters */\n/**@{*/\n/** Set parameter \"name\" to value \"value\". Note that this\n translates directly to using \"-name value\" as a\n command-line argument to Cbc."] + pub fn Cbc_setParameter( + model: *mut Cbc_Model, + name: *const ::std::os::raw::c_char, + value: *const ::std::os::raw::c_char, + ); +} +extern "C" { + #[doc = " returns the allowable gap"] + pub fn Cbc_getAllowableGap(model: *mut Cbc_Model) -> f64; +} +extern "C" { + #[doc = " sets the allowable gap"] + pub fn Cbc_setAllowableGap(model: *mut Cbc_Model, allowedGap: f64); +} +extern "C" { + #[doc = " returns the allowable fraction gap"] + pub fn Cbc_getAllowableFractionGap(model: *mut Cbc_Model) -> f64; +} +extern "C" { + #[doc = " sets the allowable fraction gap"] + pub fn Cbc_setAllowableFractionGap(model: *mut Cbc_Model, allowedFracionGap: f64); +} +extern "C" { + #[doc = " returns the allowable percentage gap"] + pub fn Cbc_getAllowablePercentageGap(model: *mut Cbc_Model) -> f64; +} +extern "C" { + #[doc = " sets the allowable percentage gap"] + pub fn Cbc_setAllowablePercentageGap(model: *mut Cbc_Model, allowedPercentageGap: f64); +} +extern "C" { + #[doc = " returns the time limit for the search process"] + pub fn Cbc_getMaximumSeconds(model: *mut Cbc_Model) -> f64; +} +extern "C" { + #[doc = " sets the time limit for the search process"] + pub fn Cbc_setMaximumSeconds(model: *mut Cbc_Model, maxSeconds: f64); +} +extern "C" { + #[doc = " returns the maximum number of nodes that can be explored in the search tree"] + pub fn Cbc_getMaximumNodes(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " sets the maximum number of nodes that can be explored in the search tree"] + pub fn Cbc_setMaximumNodes(model: *mut Cbc_Model, maxNodes: ::std::os::raw::c_int); +} +extern "C" { + #[doc = " returns solution limit for the search process"] + pub fn Cbc_getMaximumSolutions(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " sets a solution limit as a stopping criterion"] + pub fn Cbc_setMaximumSolutions(model: *mut Cbc_Model, maxSolutions: ::std::os::raw::c_int); +} +extern "C" { + #[doc = " returns the current log leven"] + pub fn Cbc_getLogLevel(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " sets the log level"] + pub fn Cbc_setLogLevel(model: *mut Cbc_Model, logLevel: ::std::os::raw::c_int); +} +extern "C" { + #[doc = " returns the cutoff"] + pub fn Cbc_getCutoff(model: *mut Cbc_Model) -> f64; +} +extern "C" { + #[doc = " sets the cutoff"] + pub fn Cbc_setCutoff(model: *mut Cbc_Model, cutoff: f64); +} +extern "C" { + #[doc = "@}*/\n/**@name Message handling. Call backs are handled by ONE function */\n/**@{*/\n/** Pass in Callback function.\nMessage numbers up to 1000000 are Clp, Coin ones have 1000000 added"] + pub fn Cbc_registerCallBack(model: *mut Cbc_Model, userCallBack: cbc_callback); +} +extern "C" { + #[doc = " Unset Callback function"] + pub fn Cbc_clearCallBack(model: *mut Cbc_Model); +} +extern "C" { + pub fn Cbc_addCutCallback( + model: *mut Cbc_Model, + cutcb: cbc_cut_callback, + name: *const ::std::os::raw::c_char, + appData: *mut ::std::os::raw::c_void, + ); +} +extern "C" { + #[doc = "@name Solving the model */\n/**@{"] + pub fn Cbc_solve(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Best feasible solution vector\n\n @param model problem object\n @return vector with best solution found"] + pub fn Cbc_getColSolution(model: *mut Cbc_Model) -> *const f64; +} +extern "C" { + #[doc = " @brief Best known bound on the optimal objective value\n\n @param model problem object\n @return best possible cost (lower bound)"] + pub fn Cbc_getBestPossibleObjValue(model: *mut Cbc_Model) -> f64; +} +extern "C" { + #[doc = " @brief Best integer feasible solution\n\n Best integer feasible solution or NULL if no integer feas sol found\n\n @param model problem object\n @return vector with the best solution found or NULL if no feasible solution was found"] + pub fn Cbc_bestSolution(model: *mut Cbc_Model) -> *mut f64; +} +extern "C" { + #[doc = " @brief number of integer feasible solution saved\n\n @param model problem object\n @return number of saved solutions"] + pub fn Cbc_numberSavedSolutions(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Vector with the i-th saved solution\n\n @param model problem object\n @param whichSol index of the solution to be retrieved\n @return vector with integer feasible solution"] + pub fn Cbc_savedSolution(model: *mut Cbc_Model, whichSol: ::std::os::raw::c_int) -> *const f64; +} +extern "C" { + #[doc = " @brief Cost of the whichSol solution\n\n @param model problem object\n @param whichSol solution index\n @return solution cost"] + pub fn Cbc_savedSolutionObj(model: *mut Cbc_Model, whichSol: ::std::os::raw::c_int) -> f64; +} +extern "C" { + #[doc = " @brief Queries vector of reduced costs\n\n @param model problem object\n @return reduced cost vector"] + pub fn Cbc_getReducedCost(model: *mut Cbc_Model) -> *const f64; +} +extern "C" { + #[doc = " If optimization was abandoned due to numerical difficulties\n\n @param model problem object\n @return 1 if numerical difficulties interrupted the optimization, 0 otherwise"] + pub fn Cbc_isAbandoned(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief If the optimal solution was found\n\n @param model problem object\n @return 1 if optimal solution was found, 0 otherwise"] + pub fn Cbc_isProvenOptimal(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief If infeasibility was proven\n\n If model is infeasible, please note that infeasibility can also be declared\n if cutoff is informed and no solution better than the cutoff exists.\n\n @param model problem object\n @return 1 if model is infeasible, 0 otherwise"] + pub fn Cbc_isProvenInfeasible(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Is continuous model unbounded ?\n\n @param model problem object\n @return 1 if model is unbounded, 0 otherwise"] + pub fn Cbc_isContinuousUnbounded(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Objective value of best feasible solution\n\n @param model problem object\n @return cost of the best solution found"] + pub fn Cbc_getObjValue(model: *mut Cbc_Model) -> f64; +} +extern "C" { + #[doc = " @brief Final optimization status\n\n Returns the optimization status. For more info check function\n isProvenOptimal, isProvenInfeasible, etc. Check also secondary status.\n Possible status are:\n\n -1 before branchAndBound\n 0 finished - check isProvenOptimal or isProvenInfeasible to see if solution found (or check value of best solution)\n 1 stopped - on maxnodes, maxsols, maxtime\n 2 execution abandoned due to numerical dificulties\n 5 user programmed interruption\n\n @param model problem object\n @return problem status"] + pub fn Cbc_status(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Secondary status of problem\n\n Returns additional information regarding the optimization status\n\n -1 unset (status_ will also be -1)\n 0 search completed with solution\n 1 linear relaxation not feasible (or worse than cutoff)\n 2 stopped on gap\n 3 stopped on nodes\n 4 stopped on time\n 5 stopped on user event\n 6 stopped on solutions\n 7 linear relaxation unbounded\n 8 stopped on iteration limit\n\n @model problem object\n @return optimization status"] + pub fn Cbc_secondaryStatus(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Sum of primal infeasibilities"] + pub fn Cbc_sumPrimalInfeasibilities(model: *mut Cbc_Model) -> f64; +} +extern "C" { + #[doc = " Number of primal infeasibilities"] + pub fn Cbc_numberPrimalInfeasibilities(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Just check solution (for external use) - sets sum of\ninfeasibilities etc"] + pub fn Cbc_checkSolution(model: *mut Cbc_Model); +} +extern "C" { + #[doc = " Number of iterations"] + pub fn Cbc_getIterationCount(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Node limit reached?"] + pub fn Cbc_isNodeLimitReached(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Time limit reached?"] + pub fn Cbc_isSecondsLimitReached(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Solution limit reached?"] + pub fn Cbc_isSolutionLimitReached(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Are there numerical difficulties (for initialSolve) ?"] + pub fn Cbc_isInitialSolveAbandoned(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Is optimality proven (for initialSolve) ?"] + pub fn Cbc_isInitialSolveProvenOptimal(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Is primal infeasiblity proven (for initialSolve) ?"] + pub fn Cbc_isInitialSolveProvenPrimalInfeasible(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " \"row\" solution\n This is the vector A*x, where A is the constraint matrix\n and x is the current solution."] + pub fn Cbc_getRowActivity(model: *mut Cbc_Model) -> *const f64; +} +extern "C" { + #[doc = " Number of nodes explored in B&B tree"] + pub fn Cbc_getNodeCount(model: *mut Cbc_Model) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " Print the solution"] + pub fn Cbc_printSolution(model: *mut Cbc_Model); +} +extern "C" { + #[doc = " @brief Returns number of cols in OsiSolverInterface object"] + pub fn Osi_getNumCols(osi: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Returns column name in OsiSolverInterface object"] + pub fn Osi_getColName( + osi: *mut ::std::os::raw::c_void, + i: ::std::os::raw::c_int, + name: *mut ::std::os::raw::c_char, + maxLen: ::std::os::raw::c_int, + ); +} +extern "C" { + #[doc = " @brief Returns column lower bounds in OsiSolverInterface object"] + pub fn Osi_getColLower(osi: *mut ::std::os::raw::c_void) -> *const f64; +} +extern "C" { + #[doc = " @brief Returns column upper bounds in OsiSolverInterface object"] + pub fn Osi_getColUpper(osi: *mut ::std::os::raw::c_void) -> *const f64; +} +extern "C" { + #[doc = " @brief Returns integrality information for columns in OsiSolverInterface object"] + pub fn Osi_isInteger(osi: *mut ::std::os::raw::c_void, col: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Returns number of rows in OsiSolverInterface object"] + pub fn Osi_getNumRows(osi: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Osi_getRowNz(osi: *mut ::std::os::raw::c_void, row: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Indices of variables that appear on a row"] + pub fn Osi_getRowIndices( + osi: *mut ::std::os::raw::c_void, + row: ::std::os::raw::c_int, + ) -> *const ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Coefficients of variables that appear on this row\n\n @param model problem object\n @param row row index\n @return coefficients of variables that appear on this row"] + pub fn Osi_getRowCoeffs(osi: *mut ::std::os::raw::c_void, row: ::std::os::raw::c_int) -> *const f64; +} +extern "C" { + #[doc = " @brief Right hand side of a row\n\n @param model problem object\n @param row row index\n @return row right hand side"] + pub fn Osi_getRowRHS(osi: *mut ::std::os::raw::c_void, row: ::std::os::raw::c_int) -> f64; +} +extern "C" { + #[doc = " @brief Sense a row\n @param model problem object\n @param row row index\n @return row sense: E for =, L for <=, G for >= and R for ranged row"] + pub fn Osi_getRowSense(osi: *mut ::std::os::raw::c_void, row: ::std::os::raw::c_int) -> ::std::os::raw::c_char; +} +extern "C" { + #[doc = " @brief Returns solution vector in OsiSolverInterface object"] + pub fn Osi_getColSolution(osi: *mut ::std::os::raw::c_void) -> *const f64; +} +extern "C" { + #[doc = " adds a row cut (used in callback)"] + pub fn OsiCuts_addRowCut( + osiCuts: *mut ::std::os::raw::c_void, + nz: ::std::os::raw::c_int, + idx: *const ::std::os::raw::c_int, + coef: *const f64, + sense: ::std::os::raw::c_char, + rhs: f64, + ); +} diff --git a/clp-sys/src/bindings.rs b/coin-or-sys/src/clp.rs similarity index 100% rename from clp-sys/src/bindings.rs rename to coin-or-sys/src/clp.rs diff --git a/coin-or-sys/src/lib.rs b/coin-or-sys/src/lib.rs new file mode 100644 index 00000000..05c80937 --- /dev/null +++ b/coin-or-sys/src/lib.rs @@ -0,0 +1,53 @@ +#![allow(non_upper_case_globals)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] + +pub mod clp { + include!("clp.rs"); +} + +pub mod cbc { + include!("cbc.rs"); +} + +#[cfg(test)] +mod tests { + use super::cbc::{Cbc_deleteModel, Cbc_getVersion, Cbc_newModel}; + use super::clp::{Clp_Version, Clp_deleteModel, Clp_newModel}; + + #[test] + fn test_clp_version() { + unsafe { + let c_buf = Clp_Version(); + let c_str = std::ffi::CStr::from_ptr(c_buf); + let version = c_str.to_str().unwrap(); + println!("{}", version); + } + } + + #[test] + fn test_clp_model() { + unsafe { + let model = Clp_newModel(); + Clp_deleteModel(model); + } + } + + #[test] + fn test_cbc_version() { + unsafe { + let c_buf = Cbc_getVersion(); + let c_str = std::ffi::CStr::from_ptr(c_buf); + let version = c_str.to_str().unwrap(); + println!("{}", version); + } + } + + #[test] + fn test_cbc_model() { + unsafe { + let model = Cbc_newModel(); + Cbc_deleteModel(model); + } + } +} diff --git a/coin-or-sys/vendor/Cbc b/coin-or-sys/vendor/Cbc new file mode 160000 index 00000000..d916443d --- /dev/null +++ b/coin-or-sys/vendor/Cbc @@ -0,0 +1 @@ +Subproject commit d916443dfc1262f1e346418b7a76a07540f1e8b2 diff --git a/coin-or-sys/vendor/Cgl b/coin-or-sys/vendor/Cgl new file mode 160000 index 00000000..a01f62e4 --- /dev/null +++ b/coin-or-sys/vendor/Cgl @@ -0,0 +1 @@ +Subproject commit a01f62e4fa70f5308784cc4cc0b3947f7d2b52b6 diff --git a/clp-sys/vendor/Clp b/coin-or-sys/vendor/Clp similarity index 100% rename from clp-sys/vendor/Clp rename to coin-or-sys/vendor/Clp diff --git a/clp-sys/vendor/CoinUtils b/coin-or-sys/vendor/CoinUtils similarity index 100% rename from clp-sys/vendor/CoinUtils rename to coin-or-sys/vendor/CoinUtils diff --git a/coin-or-sys/vendor/Osi b/coin-or-sys/vendor/Osi new file mode 160000 index 00000000..2997cda8 --- /dev/null +++ b/coin-or-sys/vendor/Osi @@ -0,0 +1 @@ +Subproject commit 2997cda8e85ccc6712c4b05404e7aa70500e422f diff --git a/pywr-core/Cargo.toml b/pywr-core/Cargo.toml index 8d5da74d..8ff77f88 100644 --- a/pywr-core/Cargo.toml +++ b/pywr-core/Cargo.toml @@ -21,7 +21,7 @@ num = { workspace = true } float-cmp = { workspace = true } hdf5 = { workspace = true } csv = { workspace = true } -clp-sys = { path = "../clp-sys", version = "0.1.0" } +coin-or-sys = { path = "../coin-or-sys", version = "0.1.0" } ipm-ocl = { path = "../ipm-ocl", optional = true } ipm-simd = { path = "../ipm-simd", optional = true } tracing = { workspace = true } diff --git a/pywr-core/src/solvers/clp/mod.rs b/pywr-core/src/solvers/clp/mod.rs index 414c9dd1..93f67dd5 100644 --- a/pywr-core/src/solvers/clp/mod.rs +++ b/pywr-core/src/solvers/clp/mod.rs @@ -7,7 +7,7 @@ use crate::solvers::{Solver, SolverFeatures, SolverTimings}; use crate::state::State; use crate::timestep::Timestep; use crate::PywrError; -use clp_sys::*; +use coin_or_sys::clp::*; use libc::{c_double, c_int}; pub use settings::{ClpSolverSettings, ClpSolverSettingsBuilder}; use std::ffi::CString; From 0da507c8c779dd7e6c879031bfd04c917bcb6e03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jul 2024 11:13:07 +0100 Subject: [PATCH 10/10] chore(deps): Update nalgebra requirement from 0.32.3 to 0.33.0 (#211) Updates the requirements on [nalgebra](https://github.com/dimforge/nalgebra) to permit the latest version. - [Changelog](https://github.com/dimforge/nalgebra/blob/main/CHANGELOG.md) - [Commits](https://github.com/dimforge/nalgebra/commits) --- updated-dependencies: - dependency-name: nalgebra dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pywr-core/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pywr-core/Cargo.toml b/pywr-core/Cargo.toml index 8ff77f88..aae94e35 100644 --- a/pywr-core/Cargo.toml +++ b/pywr-core/Cargo.toml @@ -26,7 +26,7 @@ ipm-ocl = { path = "../ipm-ocl", optional = true } ipm-simd = { path = "../ipm-simd", optional = true } tracing = { workspace = true } highs-sys = { version = "1.6.2", optional = true } -nalgebra = "0.32.3" +nalgebra = "0.33.0" chrono = { workspace = true } polars = { workspace = true }

}vBmj}{O;c3nZe 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 lQ~$}S{~T2Rf1Lgt?)rM$SX(=fhCRTS>2-^1 Date: Thu, 20 Jun 2024 13:53:08 +0100 Subject: [PATCH 04/10] feat: Allow timeseries with single data column to be used without specifying column name (#203) --- pywr-schema/src/metric.rs | 15 +++---- pywr-schema/src/model.rs | 6 +-- pywr-schema/src/test_models/timeseries.json | 6 +-- .../src/timeseries/align_and_resample.rs | 14 +++++-- pywr-schema/src/timeseries/mod.rs | 42 +++++++++++++++++++ pywr-schema/src/timeseries/polars_dataset.rs | 4 +- 6 files changed, 66 insertions(+), 21 deletions(-) diff --git a/pywr-schema/src/metric.rs b/pywr-schema/src/metric.rs index 18f64665..510d1ee8 100644 --- a/pywr-schema/src/metric.rs +++ b/pywr-schema/src/metric.rs @@ -63,14 +63,15 @@ impl Metric { } Self::Timeseries(ts_ref) => { let param_idx = match &ts_ref.columns { - TimeseriesColumns::Scenario(scenario) => { + Some(TimeseriesColumns::Scenario(scenario)) => { args.timeseries .load_df(network, ts_ref.name.as_ref(), args.domain, scenario.as_str())? } - TimeseriesColumns::Column(col) => { + Some(TimeseriesColumns::Column(col)) => { args.timeseries .load_column(network, ts_ref.name.as_ref(), col.as_str())? } + None => args.timeseries.load_single_column(network, ts_ref.name.as_ref())?, }; Ok(MetricF64::ParameterValue(param_idx)) } @@ -211,12 +212,12 @@ impl TryFromV1Parameter for Metric { }; let cols = match (&t.column, &t.scenario) { - (Some(col), None) => TimeseriesColumns::Column(col.clone()), - (None, Some(scenario)) => TimeseriesColumns::Scenario(scenario.clone()), + (Some(col), None) => Some(TimeseriesColumns::Column(col.clone())), + (None, Some(scenario)) => Some(TimeseriesColumns::Scenario(scenario.clone())), (Some(_), Some(_)) => { return Err(ConversionError::AmbiguousColumnAndScenario(name.clone())) } - (None, None) => return Err(ConversionError::MissingColumnOrScenario(name.clone())), + (None, None) => None, }; Self::Timeseries(TimeseriesReference::new(name, cols)) @@ -238,11 +239,11 @@ pub enum TimeseriesColumns { #[derive(serde::Deserialize, serde::Serialize, Debug, Clone, JsonSchema)] pub struct TimeseriesReference { name: String, - columns: TimeseriesColumns, + columns: Option, } impl TimeseriesReference { - pub fn new(name: String, columns: TimeseriesColumns) -> Self { + pub fn new(name: String, columns: Option) -> Self { Self { name, columns } } diff --git a/pywr-schema/src/model.rs b/pywr-schema/src/model.rs index f509507d..344f8841 100644 --- a/pywr-schema/src/model.rs +++ b/pywr-schema/src/model.rs @@ -312,10 +312,10 @@ impl PywrNetwork { }; let cols = match (&ts_ref.column, &ts_ref.scenario) { - (Some(col), None) => TimeseriesColumns::Column(col.clone()), - (None, Some(scenario)) => TimeseriesColumns::Scenario(scenario.clone()), + (Some(col), None) => Some(TimeseriesColumns::Column(col.clone())), + (None, Some(scenario)) => Some(TimeseriesColumns::Scenario(scenario.clone())), (Some(_), Some(_)) => return, - (None, None) => return, + (None, None) => None, }; *m = Metric::Timeseries(TimeseriesReference::new(name, cols)); diff --git a/pywr-schema/src/test_models/timeseries.json b/pywr-schema/src/test_models/timeseries.json index d9113c8a..5d08d794 100644 --- a/pywr-schema/src/test_models/timeseries.json +++ b/pywr-schema/src/test_models/timeseries.json @@ -73,11 +73,7 @@ "metrics": [ { "type": "Timeseries", - "name": "inflow", - "columns": { - "type": "Column", - "name": "inflow1" - } + "name": "inflow" }, { "type": "Constant", diff --git a/pywr-schema/src/timeseries/align_and_resample.rs b/pywr-schema/src/timeseries/align_and_resample.rs index e91390c2..eadce8f7 100644 --- a/pywr-schema/src/timeseries/align_and_resample.rs +++ b/pywr-schema/src/timeseries/align_and_resample.rs @@ -9,6 +9,7 @@ pub fn align_and_resample( df: DataFrame, time_col: &str, domain: &ModelDomain, + drop_time_col: bool, ) -> Result { // Ensure type of time column is datetime and that it is sorted let sort_options = SortMultipleOptions::default() @@ -78,12 +79,16 @@ pub fn align_and_resample( Ordering::Equal => df, }; - let df = slice_end(df, time_col, domain)?; + let mut df = slice_end(df, time_col, domain)?; if df.height() != domain.time().timesteps().len() { return Err(TimeseriesError::DataFrameTimestepMismatch(name.to_string())); } + if drop_time_col { + let _ = df.drop_in_place(time_col)?; + } + Ok(df) } @@ -141,7 +146,7 @@ mod tests { ) .unwrap(); - df = align_and_resample("test", df, "time", &domain).unwrap(); + df = align_and_resample("test", df, "time", &domain, false).unwrap(); let expected_dates = Series::new( "time", @@ -195,7 +200,7 @@ mod tests { ) .unwrap(); - df = align_and_resample("test", df, "time", &domain).unwrap(); + df = align_and_resample("test", df, "time", &domain, false).unwrap(); let expected_values = Series::new( "values", @@ -235,7 +240,7 @@ mod tests { ) .unwrap(); - df = align_and_resample("test", df, "time", &domain).unwrap(); + df = align_and_resample("test", df, "time", &domain, false).unwrap(); let expected_values = Series::new("values", values); let resampled_values = df.column("values").unwrap(); @@ -244,6 +249,7 @@ mod tests { let expected_dates = Series::new("time", time) .cast(&DataType::Datetime(TimeUnit::Nanoseconds, None)) .unwrap(); + let resampled_dates = df.column("time").unwrap(); assert!(resampled_dates.equals(&expected_dates)); } diff --git a/pywr-schema/src/timeseries/mod.rs b/pywr-schema/src/timeseries/mod.rs index bcbd275f..756b568b 100644 --- a/pywr-schema/src/timeseries/mod.rs +++ b/pywr-schema/src/timeseries/mod.rs @@ -44,6 +44,10 @@ pub enum TimeseriesError { DataFrameTimestepMismatch(String), #[error("A timeseries dataframe with the name '{0}' already exists.")] TimeseriesDataframeAlreadyExists(String), + #[error("The timeseries dataset '{0}' has more than one column of data so a column or scenario name must be provided for any reference")] + TimeseriesColumnOrScenarioRequired(String), + #[error("The timeseries dataset '{0}' has no columns")] + TimeseriesDataframeHasNoColumns(String), #[error("Polars error: {0}")] #[cfg(feature = "core")] PolarsError(#[from] PolarsError), @@ -149,6 +153,44 @@ impl LoadedTimeseriesCollection { } } + pub fn load_single_column( + &self, + network: &mut pywr_core::network::Network, + name: &str, + ) -> Result, TimeseriesError> { + let df = self + .timeseries + .get(name) + .ok_or(TimeseriesError::TimeseriesNotFound(name.to_string()))?; + + let cols = df.get_column_names(); + + if cols.len() > 1 { + return Err(TimeseriesError::TimeseriesColumnOrScenarioRequired(name.to_string())); + }; + + let col = cols.first().ok_or(TimeseriesError::ColumnNotFound { + col: "".to_string(), + name: name.to_string(), + })?; + + let series = df.column(col)?; + + let array = series.cast(&Float64)?.f64()?.to_ndarray()?.to_owned(); + let name = format!("{}_{}", name, col); + + match network.get_parameter_index_by_name(&name) { + Ok(idx) => Ok(idx), + Err(e) => match e { + PywrError::ParameterNotFound(_) => { + let p = Array1Parameter::new(&name, array, None); + Ok(network.add_parameter(Box::new(p))?) + } + _ => Err(TimeseriesError::PywrCore(e)), + }, + } + } + pub fn load_df( &self, network: &mut pywr_core::network::Network, diff --git a/pywr-schema/src/timeseries/polars_dataset.rs b/pywr-schema/src/timeseries/polars_dataset.rs index e522748d..892a62d1 100644 --- a/pywr-schema/src/timeseries/polars_dataset.rs +++ b/pywr-schema/src/timeseries/polars_dataset.rs @@ -83,11 +83,11 @@ mod core { }; df = match self.time_col { - Some(ref col) => align_and_resample(name, df, col, domain)?, + Some(ref col) => align_and_resample(name, df, col, domain, true)?, None => { // If a time col has not been provided assume it is the first column let first_col = df.get_column_names()[0].to_string(); - align_and_resample(name, df, first_col.as_str(), domain)? + align_and_resample(name, df, first_col.as_str(), domain, true)? } }; From 1cf63d6f94a9261ef110094e51e7f2212dbc8036 Mon Sep 17 00:00:00 2001 From: James Tomlinson Date: Mon, 24 Jun 2024 11:59:45 +0100 Subject: [PATCH 05/10] fix: Fix dependency features when building pywr-core alone. (#206) --- Cargo.toml | 2 +- pywr-core/Cargo.toml | 2 +- pywr-schema/Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7f69e387..aaa4368f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,5 +47,5 @@ tracing = { version = "0.1", features = ["log"] } csv = "1.1" hdf5 = { git = "https://github.com/aldanor/hdf5-rust.git", package = "hdf5", features = ["static", "zlib"] } pywr-v1-schema = { git = "https://github.com/pywr/pywr-schema/", tag = "v0.13.0", package = "pywr-schema" } -chrono = { version = "0.4.34" } +chrono = { version = "0.4.34", features = ["serde"] } schemars = { version = "0.8.16", features = ["chrono"] } diff --git a/pywr-core/Cargo.toml b/pywr-core/Cargo.toml index 04097ff3..8d5da74d 100644 --- a/pywr-core/Cargo.toml +++ b/pywr-core/Cargo.toml @@ -30,7 +30,7 @@ nalgebra = "0.32.3" chrono = { workspace = true } polars = { workspace = true } -pyo3 = { workspace = true, features = ["chrono"] } +pyo3 = { workspace = true, features = ["chrono", "macros"] } rayon = "1.6.1" diff --git a/pywr-schema/Cargo.toml b/pywr-schema/Cargo.toml index 3372e037..ffd07a11 100644 --- a/pywr-schema/Cargo.toml +++ b/pywr-schema/Cargo.toml @@ -32,7 +32,7 @@ serde_json = { workspace = true } thiserror = { workspace = true } pywr-v1-schema = { workspace = true } pywr-core = { path = "../pywr-core", optional = true } -chrono = { workspace = true, features = ["serde"] } +chrono = { workspace = true } pywr-schema-macros = { path = "../pywr-schema-macros" } [dev-dependencies] From 4b21179b32e10cadbd39b9c48983f52f0ddc76c8 Mon Sep 17 00:00:00 2001 From: James Batchelor Date: Mon, 24 Jun 2024 12:01:16 +0100 Subject: [PATCH 06/10] feat: Use millisecond precision when resampling and aligning timeseries (#205) Switch to using milliseconds as the main unit for comparison and resampling. Polars is also updated to v0.40.0 --- Cargo.toml | 2 +- pywr-core/src/lib.rs | 2 + pywr-core/src/timestep.rs | 55 ++++++++++++++++--- .../src/timeseries/align_and_resample.rs | 28 +++++----- pywr-schema/src/timeseries/mod.rs | 2 - pywr-schema/src/timeseries/polars_dataset.rs | 15 +++-- 6 files changed, 75 insertions(+), 29 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index aaa4368f..69f71515 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ thiserror = "1.0.25" num = "0.4.0" float-cmp = "0.9.0" ndarray = "0.15.3" -polars = { version = "0.39", features = ["lazy", "rows", "ndarray"] } +polars = { version = "0.40", features = ["lazy", "rows", "ndarray"] } pyo3-polars = "0.14" pyo3 = { version = "0.21", default-features = false } pyo3-log = "0.10" diff --git a/pywr-core/src/lib.rs b/pywr-core/src/lib.rs index 5cb2e140..d777485e 100644 --- a/pywr-core/src/lib.rs +++ b/pywr-core/src/lib.rs @@ -165,6 +165,8 @@ pub enum PywrError { TimestepRangeGenerationError(String), #[error("Could not create timesteps for frequency '{0}'")] TimestepGenerationError(String), + #[error("Pywr does not currently support timesteps of varying duration")] + TimestepDurationMismatch, #[error("aggregation error: {0}")] Aggregation(#[from] AggregationError), } diff --git a/pywr-core/src/timestep.rs b/pywr-core/src/timestep.rs index 55adf34d..83403278 100644 --- a/pywr-core/src/timestep.rs +++ b/pywr-core/src/timestep.rs @@ -7,6 +7,10 @@ use std::ops::Add; use crate::PywrError; const SECS_IN_DAY: i64 = 60 * 60 * 24; +const MILLISECS_IN_DAY: i64 = 1000 * SECS_IN_DAY; +const MILLISECS_IN_HOUR: i64 = 1000 * 60 * 60; +const MILLISECS_IN_MINUTE: i64 = 1000 * 60; +const MILLISECS_IN_SECOND: i64 = 1000; /// A newtype for `chrono::TimeDelta` that provides a couple of useful convenience methods. #[pyclass] @@ -59,9 +63,37 @@ impl PywrDuration { self.0.num_seconds() as f64 / SECS_IN_DAY as f64 } - /// Returns the number of nanoseconds in the duration. - pub fn whole_nanoseconds(&self) -> Option { - self.0.num_nanoseconds() + /// Returns the number of milliseconds in the duration. + pub fn milliseconds(&self) -> i64 { + self.0.num_milliseconds() + } + + /// Convert the duration to a string representation that can be parsed by polars + /// see: https://docs.rs/polars/latest/polars/prelude/struct.Duration.html#method.parse + pub fn duration_string(&self) -> String { + let milliseconds = self.milliseconds(); + let mut duration = String::new(); + let days = milliseconds / MILLISECS_IN_DAY; + if days > 0 { + duration.push_str(&format!("{}d", days)); + } + let hours = (milliseconds % MILLISECS_IN_DAY) / MILLISECS_IN_HOUR; + if hours > 0 { + duration.push_str(&format!("{}h", hours)); + } + let minutes = (milliseconds % MILLISECS_IN_HOUR) / MILLISECS_IN_MINUTE; + if minutes > 0 { + duration.push_str(&format!("{}m", minutes)); + } + let seconds = (milliseconds % MILLISECS_IN_MINUTE) / MILLISECS_IN_SECOND; + if seconds > 0 { + duration.push_str(&format!("{}s", seconds)); + } + let milliseconds = milliseconds % MILLISECS_IN_SECOND; + if milliseconds > 0 { + duration.push_str(&format!("{}ms", milliseconds)); + } + duration } } @@ -195,15 +227,13 @@ impl Timestepper { #[derive(Debug)] pub struct TimeDomain { timesteps: Vec, + duration: PywrDuration, } impl TimeDomain { /// Return the duration of each time-step. pub fn step_duration(&self) -> PywrDuration { - // This relies on the assumption that all time-steps are the same length. - // Ideally, this invariant would be refactored to have the duration stored here in `TimeDomain`, - // rather than in `Timestep`. - self.timesteps.first().expect("Not time-steps defined.").duration + self.duration } pub fn timesteps(&self) -> &[Timestep] { @@ -233,7 +263,11 @@ impl TryFrom for TimeDomain { fn try_from(value: Timestepper) -> Result { let timesteps = value.timesteps()?; - Ok(Self { timesteps }) + let duration = timesteps.first().expect("No time-steps defined.").duration; + match timesteps.iter().all(|t| t.duration == duration) { + true => Ok(Self { timesteps, duration }), + false => Err(PywrError::TimestepDurationMismatch), + } } } @@ -313,23 +347,28 @@ mod test { let duration = PywrDuration::days(5); assert_eq!(duration.whole_days(), Some(5)); assert_eq!(duration.fractional_days(), 5.0); + assert_eq!(duration.duration_string(), String::from("5d")); let duration: PywrDuration = TimeDelta::hours(12).into(); assert_eq!(duration.whole_days(), None); assert_eq!(duration.fractional_days(), 0.5); + assert_eq!(duration.duration_string(), String::from("12h")); let duration: PywrDuration = TimeDelta::minutes(30).into(); assert_eq!(duration.whole_days(), None); assert_eq!(duration.fractional_days(), 1.0 / 48.0); + assert_eq!(duration.duration_string(), String::from("30m")); let duration_secs = SECS_IN_DAY + 1; let duration: PywrDuration = TimeDelta::seconds(duration_secs).into(); assert_eq!(duration.whole_days(), None); assert_eq!(duration.fractional_days(), duration_secs as f64 / SECS_IN_DAY as f64); + assert_eq!(duration.duration_string(), String::from("1d1s")); let duration_secs = SECS_IN_DAY - 1; let duration: PywrDuration = TimeDelta::seconds(duration_secs).into(); assert_eq!(duration.whole_days(), None); assert_eq!(duration.fractional_days(), duration_secs as f64 / SECS_IN_DAY as f64); + assert_eq!(duration.duration_string(), String::from("23h59m59s")); } } diff --git a/pywr-schema/src/timeseries/align_and_resample.rs b/pywr-schema/src/timeseries/align_and_resample.rs index eadce8f7..ca71edc7 100644 --- a/pywr-schema/src/timeseries/align_and_resample.rs +++ b/pywr-schema/src/timeseries/align_and_resample.rs @@ -19,7 +19,7 @@ pub fn align_and_resample( let df = df .clone() .lazy() - .with_columns([col(time_col).cast(DataType::Datetime(TimeUnit::Nanoseconds, None))]) + .with_columns([col(time_col).cast(DataType::Datetime(TimeUnit::Milliseconds, None))]) .collect()? .sort([time_col], sort_options)?; @@ -43,13 +43,10 @@ pub fn align_and_resample( None => return Err(TimeseriesError::TimeseriesDurationNotFound(name.to_string())), }; - let model_duration = domain - .time() - .step_duration() - .whole_nanoseconds() - .ok_or(TimeseriesError::NoDurationNanoSeconds)?; + let model_duration = domain.time().step_duration(); + let model_duration_string = model_duration.duration_string(); - let df = match model_duration.cmp(×eries_duration) { + let df = match model_duration.milliseconds().cmp(×eries_duration) { Ordering::Greater => { // Downsample df.clone() @@ -58,9 +55,9 @@ pub fn align_and_resample( col(time_col), [], DynamicGroupOptions { - every: Duration::new(model_duration), - period: Duration::new(model_duration), - offset: Duration::new(0), + every: Duration::parse(model_duration_string.as_str()), + period: Duration::parse(model_duration_string.as_str()), + offset: Duration::parse("0d"), start_by: StartBy::DataPoint, ..Default::default() }, @@ -73,7 +70,12 @@ pub fn align_and_resample( // TODO: this does not extend the dataframe beyond its original end date. Should it do when using a forward fill strategy? // The df could be extend by the length of the duration it is being resampled to. df.clone() - .upsample::<[String; 0]>([], "time", Duration::new(model_duration), Duration::new(0))? + .upsample::<[String; 0]>( + [], + "time", + Duration::parse(model_duration_string.as_str()), + Duration::parse("0d"), + )? .fill_null(FillNullStrategy::Forward(None))? } Ordering::Equal => df, @@ -155,7 +157,7 @@ mod tests { NaiveDateTime::parse_from_str("2021-01-14 00:00:00", "%Y-%m-%d %H:%M:%S").unwrap(), ], ) - .cast(&DataType::Datetime(TimeUnit::Nanoseconds, None)) + .cast(&DataType::Datetime(TimeUnit::Milliseconds, None)) .unwrap(); let resampled_dates = df.column("time").unwrap(); assert!(resampled_dates.equals(&expected_dates)); @@ -247,7 +249,7 @@ mod tests { assert!(resampled_values.equals(&expected_values)); let expected_dates = Series::new("time", time) - .cast(&DataType::Datetime(TimeUnit::Nanoseconds, None)) + .cast(&DataType::Datetime(TimeUnit::Milliseconds, None)) .unwrap(); let resampled_dates = df.column("time").unwrap(); diff --git a/pywr-schema/src/timeseries/mod.rs b/pywr-schema/src/timeseries/mod.rs index 756b568b..78b78d32 100644 --- a/pywr-schema/src/timeseries/mod.rs +++ b/pywr-schema/src/timeseries/mod.rs @@ -38,8 +38,6 @@ pub enum TimeseriesError { TimeseriesUnparsableFileFormat { provider: String, path: String }, #[error("A scenario group with name '{0}' was not found")] ScenarioGroupNotFound(String), - #[error("Duration could not be represented as nanoseconds")] - NoDurationNanoSeconds, #[error("The length of the resampled timeseries dataframe '{0}' does not match the number of model timesteps.")] DataFrameTimestepMismatch(String), #[error("A timeseries dataframe with the name '{0}' already exists.")] diff --git a/pywr-schema/src/timeseries/polars_dataset.rs b/pywr-schema/src/timeseries/polars_dataset.rs index 892a62d1..4989c52a 100644 --- a/pywr-schema/src/timeseries/polars_dataset.rs +++ b/pywr-schema/src/timeseries/polars_dataset.rs @@ -52,11 +52,16 @@ mod core { Some(ext) => { let ext = ext.to_str().map(|s| s.to_lowercase()); match ext.as_deref() { - Some("csv") => CsvReader::from_path(fp)? - .infer_schema(None) - .with_try_parse_dates(true) - .has_header(true) - .finish()?, + Some("csv") => { + let parse_options = CsvParseOptions::default().with_try_parse_dates(true); + + CsvReadOptions::default() + .with_schema(None) + .with_has_header(true) + .with_parse_options(parse_options) + .try_into_reader_with_file_path(Some(fp))? + .finish()? + } Some("parquet") => { todo!() } From 9a4604ece19a68901256b6d2f992633bd981f01d Mon Sep 17 00:00:00 2001 From: James Batchelor Date: Mon, 24 Jun 2024 16:46:50 +0100 Subject: [PATCH 07/10] chore(deps): Update polars requirement from 0.40 to 0.41.2 (#209) --- Cargo.toml | 4 ++-- pywr-schema/src/timeseries/align_and_resample.rs | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 69f71515..d875ec08 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,8 +39,8 @@ thiserror = "1.0.25" num = "0.4.0" float-cmp = "0.9.0" ndarray = "0.15.3" -polars = { version = "0.40", features = ["lazy", "rows", "ndarray"] } -pyo3-polars = "0.14" +polars = { version = "0.41.2", features = ["lazy", "rows", "ndarray"] } +pyo3-polars = "0.15" pyo3 = { version = "0.21", default-features = false } pyo3-log = "0.10" tracing = { version = "0.1", features = ["log"] } diff --git a/pywr-schema/src/timeseries/align_and_resample.rs b/pywr-schema/src/timeseries/align_and_resample.rs index ca71edc7..6106829c 100644 --- a/pywr-schema/src/timeseries/align_and_resample.rs +++ b/pywr-schema/src/timeseries/align_and_resample.rs @@ -74,7 +74,6 @@ pub fn align_and_resample( [], "time", Duration::parse(model_duration_string.as_str()), - Duration::parse("0d"), )? .fill_null(FillNullStrategy::Forward(None))? } From c2fed0d5822c9f780dd675ddb70528d9acadc4cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Jun 2024 14:05:45 +0100 Subject: [PATCH 08/10] chore(deps): Update nalgebra-sparse requirement from 0.9.0 to 0.10.0 (#210) Updates the requirements on [nalgebra-sparse](https://github.com/dimforge/nalgebra) to permit the latest version. - [Changelog](https://github.com/dimforge/nalgebra/blob/main/CHANGELOG.md) - [Commits](https://github.com/dimforge/nalgebra/compare/v0.9.0...v0.10.0) --- updated-dependencies: - dependency-name: nalgebra-sparse dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- ipm-common/Cargo.toml | 2 +- ipm-ocl/Cargo.toml | 2 +- ipm-simd/Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ipm-common/Cargo.toml b/ipm-common/Cargo.toml index 665c1746..48fb25b6 100644 --- a/ipm-common/Cargo.toml +++ b/ipm-common/Cargo.toml @@ -6,5 +6,5 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -nalgebra-sparse = "0.9.0" +nalgebra-sparse = "0.10.0" log = "0.4.19" diff --git a/ipm-ocl/Cargo.toml b/ipm-ocl/Cargo.toml index 51e98668..6f1f0133 100644 --- a/ipm-ocl/Cargo.toml +++ b/ipm-ocl/Cargo.toml @@ -7,6 +7,6 @@ edition = "2021" [dependencies] ipm-common = { path = "../ipm-common" } -nalgebra-sparse = "0.9.0" +nalgebra-sparse = "0.10.0" ocl = "0.19" log = "0.4.19" diff --git a/ipm-simd/Cargo.toml b/ipm-simd/Cargo.toml index 2f772e27..61a114d5 100644 --- a/ipm-simd/Cargo.toml +++ b/ipm-simd/Cargo.toml @@ -7,6 +7,6 @@ edition = "2021" [dependencies] ipm-common = { path = "../ipm-common" } -nalgebra-sparse = "0.9.0" +nalgebra-sparse = "0.10.0" log = "0.4.19" colamd = "0.1.0" From d9f2a78678afdcaf04a2c2753d63fdd598fd22ce Mon Sep 17 00:00:00 2001 From: James Tomlinson Date: Tue, 25 Jun 2024 14:06:52 +0100 Subject: [PATCH 09/10] feat: Add additional COIN-OR bindings for Cbc. (#208) This requires adding Cgl and Osi libraries. Currently these are vendored in the same way as Clp. --- .gitmodules | 13 +- Cargo.toml | 4 +- clp-sys/build.rs | 195 ------ clp-sys/src/lib.rs | 28 - {clp-sys => coin-or-sys}/Cargo.toml | 4 +- coin-or-sys/build.rs | 492 ++++++++++++++ coin-or-sys/src/cbc.rs | 634 ++++++++++++++++++ .../src/bindings.rs => coin-or-sys/src/clp.rs | 0 coin-or-sys/src/lib.rs | 53 ++ coin-or-sys/vendor/Cbc | 1 + coin-or-sys/vendor/Cgl | 1 + {clp-sys => coin-or-sys}/vendor/Clp | 0 {clp-sys => coin-or-sys}/vendor/CoinUtils | 0 coin-or-sys/vendor/Osi | 1 + pywr-core/Cargo.toml | 2 +- pywr-core/src/solvers/clp/mod.rs | 2 +- 16 files changed, 1199 insertions(+), 231 deletions(-) delete mode 100644 clp-sys/build.rs delete mode 100644 clp-sys/src/lib.rs rename {clp-sys => coin-or-sys}/Cargo.toml (85%) create mode 100644 coin-or-sys/build.rs create mode 100644 coin-or-sys/src/cbc.rs rename clp-sys/src/bindings.rs => coin-or-sys/src/clp.rs (100%) create mode 100644 coin-or-sys/src/lib.rs create mode 160000 coin-or-sys/vendor/Cbc create mode 160000 coin-or-sys/vendor/Cgl rename {clp-sys => coin-or-sys}/vendor/Clp (100%) rename {clp-sys => coin-or-sys}/vendor/CoinUtils (100%) create mode 160000 coin-or-sys/vendor/Osi diff --git a/.gitmodules b/.gitmodules index e18a59d3..d674f2f0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,15 @@ [submodule "clp-sys/vendor/Clp"] - path = clp-sys/vendor/Clp + path = coin-or-sys/vendor/Clp url = https://github.com/coin-or/Clp [submodule "clp-sys/vendor/CoinUtils"] - path = clp-sys/vendor/CoinUtils + path = coin-or-sys/vendor/CoinUtils url = https://github.com/coin-or/CoinUtils.git +[submodule "coin-or-sys/vendor/Cgl"] + path = coin-or-sys/vendor/Cgl + url = https://github.com/coin-or/Cgl.git +[submodule "coin-or-sys/vendor/Cbc"] + path = coin-or-sys/vendor/Cbc + url = https://github.com/coin-or/Cbc.git +[submodule "coin-or-sys/vendor/Osi"] + path = coin-or-sys/vendor/Osi + url = https://github.com/coin-or/Osi diff --git a/Cargo.toml b/Cargo.toml index d875ec08..4653f03b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = [ "ipm-common", "ipm-ocl", "ipm-simd", - "clp-sys", + "coin-or-sys", "pywr-core", "pywr-schema", "pywr-cli", @@ -16,7 +16,7 @@ exclude = [ ] # IPM packages are not default because they require nightly (portable_simd). default-members = [ - "clp-sys", + "coin-or-sys", "pywr-core", "pywr-schema", "pywr-cli", diff --git a/clp-sys/build.rs b/clp-sys/build.rs deleted file mode 100644 index 1e2c5336..00000000 --- a/clp-sys/build.rs +++ /dev/null @@ -1,195 +0,0 @@ -use std::env; - -fn make_builder() -> cc::Build { - let target = env::var("TARGET").expect("Could not find TARGET in environment."); - let mut builder = cc::Build::new() - .cpp(true) - .warnings(false) - .extra_warnings(false) - .define("NDEBUG", None) - .define("HAVE_STDIO_H", None) - .define("HAVE_STDLIB_H", None) - .define("HAVE_STRING_H", None) - .define("HAVE_INTTYPES_H", None) - .define("HAVE_STDINT_H", None) - .define("HAVE_STRINGS_H", None) - .define("HAVE_SYS_TYPES_H", None) - .define("HAVE_SYS_STAT_H", None) - .define("HAVE_UNISTD_H", None) - .define("HAVE_CMATH", None) - .define("HAVE_CFLOAT", None) - // .define("HAVE_DLFCN_H", None) - .define("HAVE_MEMORY_H", None) - .to_owned(); - - if target.contains("msvc") { - builder.flag("-EHsc"); - // Flag required for macros __cplusplus to work correctly. - // See: https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ - builder.flag("/Zc:__cplusplus"); - builder.flag("/std:c++14"); - } else { - builder.flag("-std=c++11"); - builder.flag("-w"); - } - - builder -} - -fn main() { - const COIN_UTILS_SRC: &str = "vendor/CoinUtils/CoinUtils/src"; - const COIN_CLP_SRC: &str = "vendor/Clp/Clp/src"; - - // Compile CoinUtils - let mut builder = make_builder(); - - builder - .flag(&format!("-I{}", COIN_UTILS_SRC)) - .file(format!("{}/CoinAlloc.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinBuild.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinDenseFactorization.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinDenseVector.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinError.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinFactorization1.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinFactorization2.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinFactorization3.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinFactorization4.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinFileIO.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinFinite.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinIndexedVector.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinLpIO.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinMessage.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinMessageHandler.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinModel.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinModelUseful2.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinModelUseful.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinMpsIO.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinOslFactorization2.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinOslFactorization3.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinOslFactorization.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPackedMatrix.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPackedVectorBase.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPackedVector.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinParam.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinParamUtils.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPostsolveMatrix.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPrePostsolveMatrix.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveDoubleton.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveDual.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveDupcol.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveEmpty.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveFixed.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveForcing.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveHelperFunctions.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveImpliedFree.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveIsolated.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveMatrix.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveMonitor.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolvePsdebug.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveSingleton.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveSubst.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveTighten.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveTripleton.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveUseless.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinPresolveZeros.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinRational.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinSearchTree.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinShallowPackedVector.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinSimpFactorization.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinSnapshot.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinStructuredModel.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinWarmStartBasis.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinWarmStartDual.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinWarmStartPrimalDual.cpp", COIN_UTILS_SRC)) - .file(format!("{}/CoinWarmStartVector.cpp", COIN_UTILS_SRC)) - .compile("CoinUtils"); - - // Compile CoinUtils - - let mut builder = make_builder(); - - builder - .flag(&format!("-I{}", COIN_UTILS_SRC)) - .flag(&format!("-I{}", COIN_CLP_SRC)) - .file(format!("{}/ClpCholeskyBase.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpCholeskyDense.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpCholeskyPardiso.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpCholeskyTaucs.cpp", COIN_CLP_SRC)) - // Need to have AMD or CHOLMOD to compile ClpCholeskyUfl. - //.file(format!("{}/ClpCholeskyUfl.cpp", COIN_CLP_SRC)) - //.file(format!("{}/ClpCholeskyWssmp.cpp", COIN_CLP_SRC)) - //.file(format!("{}/ClpCholeskyWssmpKKT.cpp", COIN_CLP_SRC)) - .file(format!("{}/Clp_C_Interface.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpConstraint.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpConstraintLinear.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpConstraintQuadratic.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpDualRowDantzig.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpDualRowPivot.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpDualRowSteepest.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpDummyMatrix.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpDynamicExampleMatrix.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpDynamicMatrix.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpEventHandler.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpFactorization.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpGubDynamicMatrix.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpGubMatrix.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpHelperFunctions.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpInterior.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpLinearObjective.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpLsqr.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpMatrixBase.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpMessage.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpModel.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpNetworkBasis.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpNetworkMatrix.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpNode.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpObjective.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpNonLinearCost.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPackedMatrix.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPdcoBase.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPdco.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPEDualRowDantzig.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPEDualRowSteepest.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPEPrimalColumnDantzig.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPEPrimalColumnSteepest.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPESimplex.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPlusMinusOneMatrix.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPredictorCorrector.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPresolve.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPrimalColumnDantzig.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPrimalColumnPivot.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpPrimalColumnSteepest.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpQuadraticObjective.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpSimplex.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpSimplexDual.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpSimplexNonlinear.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpSimplexOther.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpSimplexPrimal.cpp", COIN_CLP_SRC)) - .file(format!("{}/ClpSolve.cpp", COIN_CLP_SRC)) - // .file(format!("{}/ClpSolver.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcBaseFactorization1.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcBaseFactorization2.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcBaseFactorization3.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcBaseFactorization4.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcBaseFactorization5.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcDenseFactorization.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcFactorization1.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcFactorization2.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcFactorization3.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcFactorization4.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcFactorization5.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcHelperFunctions.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcOrderedFactorization1.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcOrderedFactorization2.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcOrderedFactorization3.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcOrderedFactorization4.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcOrderedFactorization5.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcSmallFactorization1.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcSmallFactorization2.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcSmallFactorization3.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcSmallFactorization4.cpp", COIN_CLP_SRC)) - // .file(format!("{}/CoinAbcSmallFactorization5.cpp", COIN_CLP_SRC)) - .file(format!("{}/Idiot.cpp", COIN_CLP_SRC)) - .file(format!("{}/IdiSolve.cpp", COIN_CLP_SRC)) - .compile("Clp"); -} diff --git a/clp-sys/src/lib.rs b/clp-sys/src/lib.rs deleted file mode 100644 index ef877157..00000000 --- a/clp-sys/src/lib.rs +++ /dev/null @@ -1,28 +0,0 @@ -#![allow(non_upper_case_globals)] -#![allow(non_camel_case_types)] -#![allow(non_snake_case)] - -include!("bindings.rs"); - -#[cfg(test)] -mod tests { - use super::{Clp_Version, Clp_deleteModel, Clp_newModel}; - - #[test] - fn test_clp_version() { - unsafe { - let c_buf = Clp_Version(); - let c_str = std::ffi::CStr::from_ptr(c_buf); - let version = c_str.to_str().unwrap(); - println!("{}", version); - } - } - - #[test] - fn test_model() { - unsafe { - let model = Clp_newModel(); - Clp_deleteModel(model); - } - } -} diff --git a/clp-sys/Cargo.toml b/coin-or-sys/Cargo.toml similarity index 85% rename from clp-sys/Cargo.toml rename to coin-or-sys/Cargo.toml index 2281569b..01082411 100644 --- a/clp-sys/Cargo.toml +++ b/coin-or-sys/Cargo.toml @@ -1,9 +1,9 @@ [package] -name = "clp-sys" +name = "coin-or-sys" version = "0.1.0" authors = ["James Tomlinson "] edition = "2021" -description = "Low-level bindings to COIN-OR CLP (Coin-or linear programming)." +description = "Low-level bindings to COIN-OR CLP (Coin-or linear programming) and CBC (Coin-or branch and cut)." license = "MIT OR Apache-2.0" repository = "https://github.com/pywr/pywr-next/" diff --git a/coin-or-sys/build.rs b/coin-or-sys/build.rs new file mode 100644 index 00000000..92958688 --- /dev/null +++ b/coin-or-sys/build.rs @@ -0,0 +1,492 @@ +use std::env; + +fn make_builder() -> cc::Build { + let target = env::var("TARGET").expect("Could not find TARGET in environment."); + let mut builder = cc::Build::new() + .cpp(true) + .warnings(false) + .extra_warnings(false) + .define("NDEBUG", None) + .define("HAVE_STDIO_H", None) + .define("HAVE_STDLIB_H", None) + .define("HAVE_STRING_H", None) + .define("HAVE_INTTYPES_H", None) + .define("HAVE_STDINT_H", None) + .define("HAVE_STRINGS_H", None) + .define("HAVE_SYS_TYPES_H", None) + .define("HAVE_SYS_STAT_H", None) + .define("HAVE_UNISTD_H", None) + .define("HAVE_CMATH", None) + .define("HAVE_CFLOAT", None) + // .define("HAVE_DLFCN_H", None) + .define("HAVE_MEMORY_H", None) + .to_owned(); + + if target.contains("msvc") { + builder.flag("-EHsc"); + // Flag required for macros __cplusplus to work correctly. + // See: https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ + builder.flag("/Zc:__cplusplus"); + builder.flag("/std:c++14"); + } else { + builder.flag("-std=c++11"); + builder.flag("-w"); + } + + builder +} + +const COIN_UTILS_PATH: &str = "vendor/CoinUtils/CoinUtils/src"; + +const COIN_UTILS_SRCS: [&str; 57] = [ + "CoinAlloc.cpp", + "CoinBuild.cpp", + "CoinDenseFactorization.cpp", + "CoinDenseVector.cpp", + "CoinError.cpp", + "CoinFactorization1.cpp", + "CoinFactorization2.cpp", + "CoinFactorization3.cpp", + "CoinFactorization4.cpp", + "CoinFileIO.cpp", + "CoinFinite.cpp", + "CoinIndexedVector.cpp", + "CoinLpIO.cpp", + "CoinMessage.cpp", + "CoinMessageHandler.cpp", + "CoinModel.cpp", + "CoinModelUseful2.cpp", + "CoinModelUseful.cpp", + "CoinMpsIO.cpp", + "CoinOslFactorization2.cpp", + "CoinOslFactorization3.cpp", + "CoinOslFactorization.cpp", + "CoinPackedMatrix.cpp", + "CoinPackedVectorBase.cpp", + "CoinPackedVector.cpp", + "CoinParam.cpp", + "CoinParamUtils.cpp", + "CoinPostsolveMatrix.cpp", + "CoinPrePostsolveMatrix.cpp", + "CoinPresolveDoubleton.cpp", + "CoinPresolveDual.cpp", + "CoinPresolveDupcol.cpp", + "CoinPresolveEmpty.cpp", + "CoinPresolveFixed.cpp", + "CoinPresolveForcing.cpp", + "CoinPresolveHelperFunctions.cpp", + "CoinPresolveImpliedFree.cpp", + "CoinPresolveIsolated.cpp", + "CoinPresolveMatrix.cpp", + "CoinPresolveMonitor.cpp", + "CoinPresolvePsdebug.cpp", + "CoinPresolveSingleton.cpp", + "CoinPresolveSubst.cpp", + "CoinPresolveTighten.cpp", + "CoinPresolveTripleton.cpp", + "CoinPresolveUseless.cpp", + "CoinPresolveZeros.cpp", + "CoinRational.cpp", + "CoinSearchTree.cpp", + "CoinShallowPackedVector.cpp", + "CoinSimpFactorization.cpp", + "CoinSnapshot.cpp", + "CoinStructuredModel.cpp", + "CoinWarmStartBasis.cpp", + "CoinWarmStartDual.cpp", + "CoinWarmStartPrimalDual.cpp", + "CoinWarmStartVector.cpp", +]; + +/// Compile CoinUtils +fn compile_coin_utils() { + let mut builder = make_builder(); + + builder.flag(&format!("-I{}", COIN_UTILS_PATH)); + + for src in COIN_UTILS_SRCS.iter() { + builder.file(format!("{}/{}", COIN_UTILS_PATH, src)); + } + + builder.compile("CoinUtils"); +} + +const OSI_SRC_PATH: &str = "vendor/Osi/Osi/src/Osi"; +const OSI_SRCS: [&str; 12] = [ + "OsiAuxInfo.cpp", + "OsiBranchingObject.cpp", + "OsiChooseVariable.cpp", + "OsiColCut.cpp", + "OsiCut.cpp", + "OsiCuts.cpp", + "OsiNames.cpp", + "OsiPresolve.cpp", + "OsiRowCut.cpp", + "OsiRowCutDebugger.cpp", + "OsiSolverBranch.cpp", + "OsiSolverInterface.cpp", +]; + +/// Compiler Osi +/// +/// This does not include any of the interfaces, but is required for Cgl. +fn compile_osi() { + let mut builder = make_builder(); + + builder + .flag(&format!("-I{}", COIN_UTILS_PATH)) + .flag(&format!("-I{}", OSI_SRC_PATH)); + + for src in OSI_SRCS.iter() { + builder.file(format!("{}/{}", OSI_SRC_PATH, src)); + } + + builder.compile("Osi"); +} + +const CLP_SRC_PATH: &str = "vendor/Clp/Clp/src"; +const CLP_OSI_SRC_PATH: &str = "vendor/Clp/Clp/src/OsiClp"; + +const CLP_SRCS: [&str; 53] = [ + "ClpCholeskyBase.cpp", + "ClpCholeskyDense.cpp", + "ClpCholeskyPardiso.cpp", + "ClpCholeskyTaucs.cpp", + // Need to have AMD or CHOLMOD to compile ClpCholeskyUfl. + //"ClpCholeskyUfl.cpp", + //"ClpCholeskyWssmp.cpp", + //"ClpCholeskyWssmpKKT.cpp", + "Clp_C_Interface.cpp", + "ClpConstraint.cpp", + "ClpConstraintLinear.cpp", + "ClpConstraintQuadratic.cpp", + "ClpDualRowDantzig.cpp", + "ClpDualRowPivot.cpp", + "ClpDualRowSteepest.cpp", + "ClpDummyMatrix.cpp", + "ClpDynamicExampleMatrix.cpp", + "ClpDynamicMatrix.cpp", + "ClpEventHandler.cpp", + "ClpFactorization.cpp", + "ClpGubDynamicMatrix.cpp", + "ClpGubMatrix.cpp", + "ClpHelperFunctions.cpp", + "ClpInterior.cpp", + "ClpLinearObjective.cpp", + "ClpLsqr.cpp", + "ClpMatrixBase.cpp", + "ClpMessage.cpp", + "ClpModel.cpp", + "ClpNetworkBasis.cpp", + "ClpNetworkMatrix.cpp", + "ClpNode.cpp", + "ClpObjective.cpp", + "ClpNonLinearCost.cpp", + "ClpPackedMatrix.cpp", + "ClpPdcoBase.cpp", + "ClpPdco.cpp", + "ClpPEDualRowDantzig.cpp", + "ClpPEDualRowSteepest.cpp", + "ClpPEPrimalColumnDantzig.cpp", + "ClpPEPrimalColumnSteepest.cpp", + "ClpPESimplex.cpp", + "ClpPlusMinusOneMatrix.cpp", + "ClpPredictorCorrector.cpp", + "ClpPresolve.cpp", + "ClpPrimalColumnDantzig.cpp", + "ClpPrimalColumnPivot.cpp", + "ClpPrimalColumnSteepest.cpp", + "ClpQuadraticObjective.cpp", + "ClpSimplex.cpp", + "ClpSimplexDual.cpp", + "ClpSimplexNonlinear.cpp", + "ClpSimplexOther.cpp", + "ClpSimplexPrimal.cpp", + "ClpSolve.cpp", + "Idiot.cpp", + "IdiSolve.cpp", +]; + +fn compile_clp() { + let mut builder = make_builder(); + + builder + .include(COIN_UTILS_PATH) + .include(OSI_SRC_PATH) + .include(CLP_SRC_PATH); + + for src in CLP_SRCS.iter() { + builder.file(format!("{}/{}", CLP_SRC_PATH, src)); + } + + builder.file(format!("{}/OsiClpSolverInterface.cpp", CLP_OSI_SRC_PATH)); + builder.include(CLP_OSI_SRC_PATH); + + builder.compile("Clp"); +} + +const CGL_SRC_PATH: &str = "vendor/Cgl/Cgl/src"; +const CGL_SRCS: [&str; 5] = [ + "CglCutGenerator.cpp", + "CglMessage.cpp", + "CglParam.cpp", + "CglStored.cpp", + "CglTreeInfo.cpp", +]; + +fn compile_cgl() -> Vec { + let mut builder = make_builder(); + + let mut extra_include_dirs = vec![]; + + builder + .include(COIN_UTILS_PATH) + .include(OSI_SRC_PATH) + .include(CLP_SRC_PATH) + .include(CLP_OSI_SRC_PATH) + .include(CGL_SRC_PATH); + + for src in CGL_SRCS.iter() { + builder.file(format!("{}/{}", CGL_SRC_PATH, src)); + } + + { + let pth = format!("{}/CglAllDifferent", CGL_SRC_PATH); + builder.file(format!("{}/CglAllDifferent.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglClique", CGL_SRC_PATH); + builder.file(format!("{}/CglClique.cpp", pth)); + builder.file(format!("{}/CglCliqueHelper.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglDuplicateRow", CGL_SRC_PATH); + builder.file(format!("{}/CglDuplicateRow.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglFlowCover", CGL_SRC_PATH); + builder.file(format!("{}/CglFlowCover.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglGMI", CGL_SRC_PATH); + builder.file(format!("{}/CglGMI.cpp", pth)); + builder.file(format!("{}/CglGMIParam.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglGomory", CGL_SRC_PATH); + builder.file(format!("{}/CglGomory.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglKnapsackCover", CGL_SRC_PATH); + builder.file(format!("{}/CglKnapsackCover.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglLandP", CGL_SRC_PATH); + builder.file(format!("{}/CglLandP.cpp", pth)); + builder.file(format!("{}/CglLandPMessages.cpp", pth)); + builder.file(format!("{}/CglLandPSimplex.cpp", pth)); + builder.file(format!("{}/CglLandPTabRow.cpp", pth)); + builder.file(format!("{}/CglLandPUtils.cpp", pth)); + builder.file(format!("{}/CglLandPValidator.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglMixedIntegerRounding", CGL_SRC_PATH); + builder.file(format!("{}/CglMixedIntegerRounding.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglMixedIntegerRounding2", CGL_SRC_PATH); + builder.file(format!("{}/CglMixedIntegerRounding2.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglOddHole", CGL_SRC_PATH); + builder.file(format!("{}/CglOddHole.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglPreProcess", CGL_SRC_PATH); + builder.file(format!("{}/CglPreProcess.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglProbing", CGL_SRC_PATH); + builder.file(format!("{}/CglProbing.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglRedSplit", CGL_SRC_PATH); + builder.file(format!("{}/CglRedSplit.cpp", pth)); + builder.file(format!("{}/CglRedSplitParam.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglRedSplit2", CGL_SRC_PATH); + builder.file(format!("{}/CglRedSplit2.cpp", pth)); + builder.file(format!("{}/CglRedSplit2Param.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglResidualCapacity", CGL_SRC_PATH); + builder.file(format!("{}/CglResidualCapacity.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglSimpleRounding", CGL_SRC_PATH); + builder.file(format!("{}/CglSimpleRounding.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglTwomir", CGL_SRC_PATH); + builder.file(format!("{}/CglTwomir.cpp", pth)); + extra_include_dirs.push(pth); + } + + { + let pth = format!("{}/CglZeroHalf", CGL_SRC_PATH); + builder.file(format!("{}/CglZeroHalf.cpp", pth)); + builder.file(format!("{}/Cgl012cut.cpp", pth)); + extra_include_dirs.push(pth); + } + + builder.includes(&extra_include_dirs); + builder.compile("Cgl"); + + extra_include_dirs +} + +const CBC_SRC_PATH: &str = "vendor/Cbc/Cbc/src"; + +const CBC_SRCS: [&str; 75] = [ + // Solver + "Cbc_C_Interface.cpp", + "CbcCbcParam.cpp", + "Cbc_ampl.cpp", + "CbcSolver.cpp", + "CbcSolverHeuristics.cpp", + "CbcSolverAnalyze.cpp", + "CbcSolverExpandKnapsack.cpp", + "CbcMipStartIO.cpp", + "CbcLinked.cpp", + "CbcLinkedUtils.cpp", + "unitTestClp.cpp", + // Lib + "CbcBranchAllDifferent.cpp", + "CbcBranchCut.cpp", + "CbcBranchDecision.cpp", + "CbcBranchDefaultDecision.cpp", + "CbcBranchDynamic.cpp", + "CbcBranchingObject.cpp", + "CbcBranchLotsize.cpp", + "CbcBranchToFixLots.cpp", + "CbcCompareDefault.cpp", + "CbcCompareDepth.cpp", + "CbcCompareEstimate.cpp", + "CbcCompareObjective.cpp", + "CbcConsequence.cpp", + "CbcClique.cpp", + "CbcCountRowCut.cpp", + "CbcCutGenerator.cpp", + "CbcCutModifier.cpp", + "CbcCutSubsetModifier.cpp", + "CbcDummyBranchingObject.cpp", + "CbcEventHandler.cpp", + "CbcFathom.cpp", + "CbcFathomDynamicProgramming.cpp", + "CbcFixVariable.cpp", + "CbcFullNodeInfo.cpp", + "CbcFollowOn.cpp", + "CbcGeneral.cpp", + "CbcGeneralDepth.cpp", + "CbcHeuristic.cpp", + "CbcHeuristicDINS.cpp", + "CbcHeuristicDive.cpp", + "CbcHeuristicDiveCoefficient.cpp", + "CbcHeuristicDiveFractional.cpp", + "CbcHeuristicDiveGuided.cpp", + "CbcHeuristicDiveLineSearch.cpp", + "CbcHeuristicDivePseudoCost.cpp", + "CbcHeuristicDiveVectorLength.cpp", + "CbcHeuristicFPump.cpp", + "CbcHeuristicGreedy.cpp", + "CbcHeuristicLocal.cpp", + "CbcHeuristicPivotAndFix.cpp", + "CbcHeuristicRandRound.cpp", + "CbcHeuristicRENS.cpp", + "CbcHeuristicRINS.cpp", + "CbcHeuristicVND.cpp", + "CbcHeuristicDW.cpp", + "CbcMessage.cpp", + "CbcModel.cpp", + "CbcNode.cpp", + "CbcNodeInfo.cpp", + "CbcNWay.cpp", + "CbcObject.cpp", + "CbcObjectUpdateData.cpp", + "CbcPartialNodeInfo.cpp", + "CbcSimpleInteger.cpp", + "CbcSimpleIntegerDynamicPseudoCost.cpp", + "CbcSimpleIntegerPseudoCost.cpp", + "CbcSOS.cpp", + "CbcStatistics.cpp", + "CbcStrategy.cpp", + "CbcSubProblem.cpp", + "CbcSymmetry.cpp", + "CbcThread.cpp", + "CbcTree.cpp", + "CbcTreeLocal.cpp", +]; + +fn compile_cbc(cgl_include_dirs: &[String]) { + let mut builder = make_builder(); + + builder + .include(COIN_UTILS_PATH) + .include(OSI_SRC_PATH) + .include(CLP_SRC_PATH) + .include(CLP_OSI_SRC_PATH) + .include(CGL_SRC_PATH) + .include(CBC_SRC_PATH); + + builder.includes(cgl_include_dirs); + + for src in CBC_SRCS.iter() { + builder.file(format!("{}/{}", CBC_SRC_PATH, src)); + } + builder.define("CBC_THREAD_SAFE", None); + builder.define("COIN_HAS_CLP", None); + builder.compile("Cbc"); +} + +fn main() { + compile_coin_utils(); + compile_clp(); + compile_osi(); + let cgl_include_dirs = compile_cgl(); + compile_cbc(&cgl_include_dirs); +} diff --git a/coin-or-sys/src/cbc.rs b/coin-or-sys/src/cbc.rs new file mode 100644 index 00000000..71390c44 --- /dev/null +++ b/coin-or-sys/src/cbc.rs @@ -0,0 +1,634 @@ +/* automatically generated by rust-bindgen 0.69.4 */ + +pub type Clp_Simplex = ::std::os::raw::c_void; +pub type clp_callback = ::std::option::Option< + unsafe extern "C" fn( + model: *mut Clp_Simplex, + msgno: ::std::os::raw::c_int, + ndouble: ::std::os::raw::c_int, + dvec: *const f64, + nint: ::std::os::raw::c_int, + ivec: *const ::std::os::raw::c_int, + nchar: ::std::os::raw::c_int, + cvec: *mut *mut ::std::os::raw::c_char, + ), +>; +pub type Sbb_Model = ::std::os::raw::c_void; +pub type Cbc_Model = ::std::os::raw::c_void; +#[doc = " typedef for user call back.\nThe cvec are constructed so don't need to be const"] +pub type sbb_callback = ::std::option::Option< + unsafe extern "C" fn( + model: *mut Sbb_Model, + msgno: ::std::os::raw::c_int, + ndouble: ::std::os::raw::c_int, + dvec: *const f64, + nint: ::std::os::raw::c_int, + ivec: *const ::std::os::raw::c_int, + nchar: ::std::os::raw::c_int, + cvec: *mut *mut ::std::os::raw::c_char, + ), +>; +pub type cbc_callback = ::std::option::Option< + unsafe extern "C" fn( + model: *mut Cbc_Model, + msgno: ::std::os::raw::c_int, + ndouble: ::std::os::raw::c_int, + dvec: *const f64, + nint: ::std::os::raw::c_int, + ivec: *const ::std::os::raw::c_int, + nchar: ::std::os::raw::c_int, + cvec: *mut *mut ::std::os::raw::c_char, + ), +>; +#[doc = " typedef for cbc cut callback osiSolver needs to be an OsiSolverInterface object,\n osiCuts is an OsiCuts object and appdata is a pointer that will be passed to the cut\n generation, you can use it to point to a data structure with information about the original problem,\n for instance"] +pub type cbc_cut_callback = ::std::option::Option< + unsafe extern "C" fn( + osiSolver: *mut ::std::os::raw::c_void, + osiCuts: *mut ::std::os::raw::c_void, + appdata: *mut ::std::os::raw::c_void, + ), +>; +pub type CoinBigIndex = ::std::os::raw::c_int; +pub type wchar_t = ::std::os::raw::c_int; +#[repr(C)] +#[repr(align(16))] +#[derive(Debug, Copy, Clone)] +pub struct max_align_t { + pub __clang_max_align_nonce1: ::std::os::raw::c_longlong, + pub __bindgen_padding_0: u64, + pub __clang_max_align_nonce2: u128, +} +#[test] +fn bindgen_test_layout_max_align_t() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(max_align_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 16usize, + concat!("Alignment of ", stringify!(max_align_t)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).__clang_max_align_nonce1) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(max_align_t), + "::", + stringify!(__clang_max_align_nonce1) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).__clang_max_align_nonce2) as usize - ptr as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(max_align_t), + "::", + stringify!(__clang_max_align_nonce2) + ) + ); +} +extern "C" { + #[doc = " Current version of Cbc"] + pub fn Cbc_getVersion() -> *const ::std::os::raw::c_char; +} +extern "C" { + #[doc = " @brief Creates an empty problem"] + pub fn Cbc_newModel() -> *mut Cbc_Model; +} +extern "C" { + #[doc = " @brief Sets problem name.\n\n @param model problem object\n @param array string with problem name"] + pub fn Cbc_setProblemName(model: *mut Cbc_Model, array: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + #[doc = " @brief Creates a new column\n\n Creates a new column (variable)\n\n @param model problem object\n @param name variable name\n @param lb column lower bound\n @param ub column upper bound\n @param obj objective function coefficient\n @param isInteger 1 if variable is integral, 0 otherwise\n @param nz number of rows (constraints) where this column appears, can be 0 if constraints will be added later\n @param rows index of rows where this column appears, NULL if rows will be added later\n @param coefs coefficients that this column appears in its rows, NULL if rows will be added later"] + pub fn Cbc_addCol( + model: *mut Cbc_Model, + name: *const ::std::os::raw::c_char, + lb: f64, + ub: f64, + obj: f64, + isInteger: ::std::os::raw::c_char, + nz: ::std::os::raw::c_int, + rows: *mut ::std::os::raw::c_int, + coefs: *mut f64, + ); +} +extern "C" { + #[doc = " @brief Adds a new row\n\n Adds a new row (linear constraint) to the problem\n\n @param model problem object\n @param name constraint name\n @param nz number of variables with non-zero coefficients in this row\n @param cols index of variables that appear in this row\n @param coefs cofficients that that variables appear\n @param sense constraint sense: L if <=, G if >=, E if =, R if ranged and N if free\n @param rhs right hand size"] + pub fn Cbc_addRow( + model: *mut Cbc_Model, + name: *const ::std::os::raw::c_char, + nz: ::std::os::raw::c_int, + cols: *const ::std::os::raw::c_int, + coefs: *const f64, + sense: ::std::os::raw::c_char, + rhs: f64, + ); +} +extern "C" { + #[doc = " @brief Add SOS constraints to the model using row-order matrix"] + pub fn Cbc_addSOS( + model: *mut Cbc_Model, + numRows: ::std::os::raw::c_int, + rowStarts: *const ::std::os::raw::c_int, + colIndices: *const ::std::os::raw::c_int, + weights: *const f64, + type_: ::std::os::raw::c_int, + ); +} +extern "C" { + #[doc = " Loads a problem (the constraints on the\nrows are given by lower and upper bounds). If a pointer is NULL then the\nfollowing values are the default:\n