2 个版本
使用旧的 Rust 2015
0.1.1 | 2018 年 11 月 30 日 |
---|---|
0.1.0 | 2018 年 11 月 29 日 |
在 机器人 类别中排名 #101
25KB
599 行
Rust Casadi 接口
这是一个 CasADi 函数的接口,形式为 phi(u; p)
,其中 u
是决策变量,p
是参数。
- 使用 CasADi 的 MATLAB 或 Python 接口,您可以定义一个成本函数
- 我们提供了辅助函数,可以生成给定函数及其雅可比的 C 代码
- 然后
icasadi
提供了从 Rust 到 C 代码的便捷接口 - 这是一个
无 std
库,可以用于嵌入式设备 - 并且
icasadi
可以用于用 Rust 编写的嵌入式数值优化模块
该库可在 crates.io 上找到,网址为 https://crates.io/crates/icasadi
Python 中的代码生成
即将推出
MATLAB 中的代码生成
这是一个此类函数的示例(MATLAB 示例)
% File: matlab/example.m
nu = 10; % number of decision variables
np = 2; % number of parameters
u = casadi.SX.sym('u', nu); % decision variables
p = casadi.SX.sym('p', np); % parameters
phi = (p'*p) * cos(sin(u))' * u; % cost function phi(u; p)
然后我们可以使用以下方法为该函数及其雅可比创建 C 代码
[cost, grad_cost] = casadi_generate_c_code(u, p, phi);
这将创建两个函数
cost
:将(u, p)
映射到phi(u; p)
,grad_cost
:在(u, p)
上评估的phi
的雅可比矩阵
以下是一个使用示例
// File: main.rs
extern crate icasadi;
fn main() {
let u = [1.0, 2.0, 3.0, -5.0, 1.0, 10.0, 14.0, 17.0, 3.0, 5.0];
let p = [1.0, -1.0];
let mut cost_value = 0.0;
let mut jac = [0.0; 10];
icasadi_cost(u, p, &phival); // compute the cost
icasadi_grad(u, p, cost_jacobian); // compute the Jacobian of the cost
println!("cost value = {}", cost_value);
println!("jacobian = {:#?}", jac);
}
编译、运行、测试
要构建项目,运行
$ cargo build
要编译主函数(main.rs
),运行
$ cargo run
要运行单元测试,请执行
$ cargo test
依赖项
~210KB