Skip to main content

Crate otspot_core

Crate otspot_core 

Source
Expand description

§otspot — 数理最適化ソルバー

線形計画法(LP)・二次計画法(QP)と混合整数問題(MILP / MIQP)を解く Rust ソルバークレート。 LP は改訂単体法(Revised Simplex)、QP は内点法(IPM / IP-PMM)を核とし、 実行不可能・非有界の判定と完全な主双対情報の出力に対応する。

§主要モジュール

モジュール役割
sparseCSC 形式の疎行列・疎ベクトル演算
problem問題定義(LpProblem / QpProblemSolveStatusSolverResult
lpLP 求解エントリポイント(solve_lp_with
qp内点法ソルバー(QP、IPM / IP-PMM)
mip混合整数ソルバー(MILP / MIQP、branch-and-bound)
optionsSolverOptionsTolerance

§使用例

MPS ファイルから LP 問題を読み込んで解く (via the otspot facade):

use std::path::Path;
use otspot::io::mps;

let prob = mps::parse_mps_file(Path::new("problem.mps")).expect("MPS読み込み失敗");
let result = otspot_core::solve(&prob);
println!("最適値: {:?}", result);

Re-exports§

pub use error::SolverError;
pub use error::MpsError;
pub use options::BranchingStrategy;
pub use options::DualPricing;
pub use options::GlobalOptimizationConfig;
pub use options::LpWarmStart;
pub use options::MipBranching;
pub use options::MipConfig;
pub use options::SolverOptions;
pub use options::Tolerance;
pub use options::WarmStartBasis;
pub use sparse::CscMatrix;
pub use problem::SolveRoute;
pub use problem::SolveStats;
pub use problem::SolveStatus;
pub use problem::SolverResult;
pub use problem::certificate::BoundGapCertificate;
pub use problem::certificate::NotProven;
pub use problem::certificate::OptimalCertificate;
pub use qp::certificate::prove_optimal;
pub use qp::solve_qp;
pub use qp::solve_qp_global;
pub use qp::solve_qp_with;
pub use qp::QpProblem;
pub use qp::QpWarmStart;
pub use mip::solve_milp;
pub use mip::solve_milp_with_stats;
pub use mip::solve_miqp;
pub use mip::solve_miqp_with_stats;
pub use mip::MilpProblem;
pub use mip::MipProblemError;
pub use mip::MipStats;
pub use mip::MiqpProblem;
pub use lp::solve_lp_with;

Modules§

error
lp
LP-specific entry point.
mip
Mixed-integer programming (MILP / MIQP) via branch-and-bound.
options
Solver configuration parameters.
problem
LP問題定義モジュール
qp
QP ソルバー: min 1/2 x’Qx + c’x s.t. Ax (≤|=|≥) b, lb ≤ x ≤ ub (OSQP/qpOASES 標準の「1/2 あり」規約)
sparse
疎行列・疎ベクトル演算モジュール
tolerances
数値許容値の一元管理モジュール

Functions§

solve
Solve an LP with default options.
solve_with
Solve an LP with the supplied options. When options.presolve is set, presolve runs before the simplex.