LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
optimize.h
浏览该文件的文档.
1
8#ifndef LMMC_OPTIMIZE_H
9#define LMMC_OPTIMIZE_H
10
11#include <stddef.h>
12#include "lmmc/status.h"
13#include "lmmc/config.h"
14#include "lmmc/dense.h"
15#include "lmmc/diagnostic.h"
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
29typedef lmmc_status_t (*lmmc_opt_func_t)(const lmmc_vec_t* x, lmmc_vec_t* F, void* user_data);
30
39typedef lmmc_status_t (*lmmc_opt_jac_t)(const lmmc_vec_t* x, lmmc_mat_t* J, void* user_data);
40
49typedef lmmc_status_t (*lmmc_opt_grad_t)(const lmmc_vec_t* x, lmmc_vec_t* grad, void* user_data);
50
58typedef lmmc_real_t (*lmmc_opt_obj_t)(const lmmc_vec_t* x, void* user_data);
59
71
82
92
102
130 void* user_data,
131 lmmc_vec_t* x,
132 const lmmc_optimize_config_t* cfg,
134
156 void* user_data,
157 lmmc_vec_t* x,
158 const lmmc_optimize_config_t* cfg,
160
181 lmmc_opt_obj_t obj,
182 lmmc_opt_grad_t grad,
183 void* user_data,
184 lmmc_vec_t* x,
185 const lmmc_optimize_config_t* cfg,
187
211 lmmc_opt_func_t residual,
213 void* user_data,
214 lmmc_vec_t* x,
215 const lmmc_optimize_config_t* cfg,
217
235 lmmc_opt_obj_t obj,
236 lmmc_opt_grad_t grad,
237 void* user_data,
238 lmmc_vec_t* x,
239 const lmmc_optimize_config_t* cfg,
241
242#ifdef __cplusplus
243}
244#endif
245
246#endif
LMMC binary real type and arithmetic spelling.
double lmmc_real_t
Public and internal LMMC real type.
行优先存储的稠密矩阵。
一维稠密向量。
Unified diagnostic events for LMMC operations.
lmmc_optimize_failure_t
优化失败原因枚举。
@ LMMC_OPT_FAILURE_MAX_ITER
@ LMMC_OPT_FAILURE_NONE
@ LMMC_OPT_FAILURE_SINGULAR_JACOBIAN
@ LMMC_OPT_FAILURE_LINE_SEARCH_FAILED
@ LMMC_OPT_FAILURE_NUMERICAL_ISSUE
lmmc_status_t(*) lmmc_opt_func_t(const lmmc_vec_t *x, lmmc_vec_t *F, void *user_data)
非线性函数回调:计算 F(x)。
lmmc_status_t lmmc_minimize_gradient_descent(lmmc_opt_obj_t obj, lmmc_opt_grad_t grad, void *user_data, lmmc_vec_t *x, const lmmc_optimize_config_t *cfg, lmmc_optimize_result_t *out)
梯度下降法(带 Armijo 回溯线搜索)。
lmmc_status_t lmmc_minimize_lbfgs(lmmc_opt_obj_t obj, lmmc_opt_grad_t grad, void *user_data, lmmc_vec_t *x, const lmmc_optimize_config_t *cfg, lmmc_optimize_result_t *out)
L-BFGS 无约束最小化。
lmmc_status_t lmmc_nleq_broyden(lmmc_opt_func_t F, void *user_data, lmmc_vec_t *x, const lmmc_optimize_config_t *cfg, lmmc_optimize_result_t *out)
Broyden 法求解非线性方程组 F(x) = 0。
lmmc_status_t lmmc_minimize_levenberg_marquardt(lmmc_opt_func_t residual, lmmc_opt_jac_t J, void *user_data, lmmc_vec_t *x, const lmmc_optimize_config_t *cfg, lmmc_optimize_result_t *out)
Levenberg-Marquardt 非线性最小二乘。
lmmc_optimize_failure_t failure_reason
lmmc_status_t(*) lmmc_opt_jac_t(const lmmc_vec_t *x, lmmc_mat_t *J, void *user_data)
Jacobian 回调:计算 J(x)。
lmmc_status_t lmmc_nleq_newton(lmmc_opt_func_t F, lmmc_opt_jac_t J, void *user_data, lmmc_vec_t *x, const lmmc_optimize_config_t *cfg, lmmc_optimize_result_t *out)
Newton 法求解非线性方程组 F(x) = 0。
lmmc_diagnostic_sink_t diagnostics
lmmc_status_t lmmc_optimize_default_config(lmmc_optimize_config_t *cfg)
初始化默认优化配置。
lmmc_status_t(*) lmmc_opt_grad_t(const lmmc_vec_t *x, lmmc_vec_t *grad, void *user_data)
梯度回调:计算 ∇f(x)。
lmmc_real_t(*) lmmc_opt_obj_t(const lmmc_vec_t *x, void *user_data)
目标函数回调:计算标量 f(x)。
优化算法配置参数。
LMMC 通用状态码定义.
lmmc_status_t
LMMC 库统一返回的状态码.