#线性规划 #单纯形 #Tableau #线性规划问题

bin+lib rulp

一个提供解析、创建和解决线性规划问题功能的库

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017年6月1日

#20 in #单纯形

MIT 许可证

45KB
1K SLoC

rulp

该软件包当前版本为 0.1.0。阅读 API 文档以了解更多信息。

摘要

Rulp 是一个用 Rust 编写的线性规划库。Rulp 的目标是提供简单方便的方法,使用户能够解析或构建线性规划问题,并解决它们。

实现

该项目使用 Rust 实现。目前该库主要使用 rulinalg 库进行矩阵格式化。

用法

库的用法在 API 文档中描述得很好,包括示例代码。

安装

该库最容易与 cargo 一起使用。只需在您的 Cargo.toml 文件中包含以下内容

[dependencies]
rulp="0.1.0"

然后使用以下方式导入库

extern crate rulinalg;

然后导入模块,您就完成了!

fn minimize_text_test() {
	let text_problem = "	
		# Radiation Example;

		var x_1;
		var x_2;

		minimize healthy_anatomy_exposure: 0.4*x_1 + 0.5*x_2;
		subject to critical_tissues: 0.3*x_1 + 0.1*x_2 <= 2.7;
		subject to tumor_region: 0.5*x_1 + 0.5*x_2 == 6;
		subject to tumor_center: 0.6*x_1 + 0.4*x_2 >= 6;
	";

	let builder = Builder::new();
	let lp = Parser::lp_from_text(text_problem, builder);
	println!("{}", lp);
	let solver = SimplexSolver::new(lp);
	let solution = solver.solve();
	print!("finished solving");
	print!("{:?}", &solution);

	let expected_sol = vec![7.5, 4.5];
	let sol = solution.values.unwrap();
	for i in 0 .. expected_sol.len() {
		assert_approx_eq!(expected_sol[i], sol[i]);
	}
	assert_approx_eq!(5.25, solution.objective.unwrap());
}

依赖项

~5.5MB
~105K SLoC