跳到主要内容

az-math

自动收集自 crates/core/az-math/README.md

数学工具库,提供矩阵操作和线性规划求解能力。

功能

矩阵工具

  • 创建、转置、访问和批量更新矩阵元素
  • 类型安全的矩阵校验(矩形性检查、边界检查)
  • 向量生成与索引分组工具
  • 支持任意类型矩阵的泛型操作

线性规划

  • 基于活动集枚举法的线性规划求解器
  • 支持最小化/最大化目标函数
  • 支持等式、不等式约束条件
  • 面向运输/配置问题的便捷求解接口(带可选价格矩阵)

数值精度

  • 默认浮点容差 1e-8
  • 默认最大枚举组合数 500,000

安装

Cargo.toml 中添加:

[dependencies]
az-math = { path = "../az-math" } # workspace 内部引用
# 或发布后:
# az-math = "0.1" # crates.io 引用

用法

use az_math::{
ConstraintRelation, GoalType, LinearConstraint, LinearObjective,
LinearProgrammingProblem, create_matrix, transpose_matrix,
};

// 矩阵操作
let matrix = create_matrix::<f64>(3, 4, 0.0);
let transposed = transpose_matrix(&matrix)?;

// 线性规划
let objective = LinearObjective::new(vec![1.0, 2.0], 0.0);
let constraints = vec![
LinearConstraint::new(vec![1.0, 0.0], ConstraintRelation::LessOrEqual, 4.0),
LinearConstraint::new(vec![0.0, 1.0], ConstraintRelation::LessOrEqual, 6.0),
];
let problem = LinearProgrammingProblem::new(GoalType::Minimize, objective, constraints);
let solution = problem.solve()?;

依赖的 crates

  • thiserror - 错误类型派生宏