LMMC
Lamina Mathematic core
Toggle main menu visibility
载入中...
搜索中...
未找到
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
18
extern
"C"
{
19
#endif
20
29
typedef
lmmc_status_t
(*
lmmc_opt_func_t
)(
const
lmmc_vec_t
* x,
lmmc_vec_t
* F,
void
* user_data);
30
39
typedef
lmmc_status_t
(*
lmmc_opt_jac_t
)(
const
lmmc_vec_t
* x,
lmmc_mat_t
* J,
void
* user_data);
40
49
typedef
lmmc_status_t
(*
lmmc_opt_grad_t
)(
const
lmmc_vec_t
* x,
lmmc_vec_t
* grad,
void
* user_data);
50
58
typedef
lmmc_real_t
(*
lmmc_opt_obj_t
)(
const
lmmc_vec_t
* x,
void
* user_data);
59
63
typedef
struct
{
64
lmmc_real_t
abs_tol
;
65
lmmc_real_t
rel_tol
;
66
size_t
max_iter
;
67
size_t
lbfgs_memory
;
68
lmmc_real_t
lm_damping
;
69
lmmc_diagnostic_sink_t
diagnostics
;
70
}
lmmc_optimize_config_t
;
71
75
typedef
enum
{
76
LMMC_OPT_FAILURE_NONE
= 0,
77
LMMC_OPT_FAILURE_MAX_ITER
,
78
LMMC_OPT_FAILURE_NUMERICAL_ISSUE
,
79
LMMC_OPT_FAILURE_LINE_SEARCH_FAILED
,
80
LMMC_OPT_FAILURE_SINGULAR_JACOBIAN
81
}
lmmc_optimize_failure_t
;
82
86
typedef
struct
{
87
int
converged
;
88
size_t
num_iter
;
89
lmmc_real_t
final_residual
;
90
lmmc_optimize_failure_t
failure_reason
;
91
}
lmmc_optimize_result_t
;
92
101
lmmc_status_t
lmmc_optimize_default_config
(
lmmc_optimize_config_t
* cfg);
102
127
lmmc_status_t
lmmc_nleq_newton
(
128
lmmc_opt_func_t
F,
129
lmmc_opt_jac_t
J,
130
void
* user_data,
131
lmmc_vec_t
* x,
132
const
lmmc_optimize_config_t
* cfg,
133
lmmc_optimize_result_t
* out);
134
154
lmmc_status_t
lmmc_nleq_broyden
(
155
lmmc_opt_func_t
F,
156
void
* user_data,
157
lmmc_vec_t
* x,
158
const
lmmc_optimize_config_t
* cfg,
159
lmmc_optimize_result_t
* out);
160
180
lmmc_status_t
lmmc_minimize_lbfgs
(
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,
186
lmmc_optimize_result_t
* out);
187
210
lmmc_status_t
lmmc_minimize_levenberg_marquardt
(
211
lmmc_opt_func_t
residual,
212
lmmc_opt_jac_t
J,
213
void
* user_data,
214
lmmc_vec_t
* x,
215
const
lmmc_optimize_config_t
* cfg,
216
lmmc_optimize_result_t
* out);
217
234
lmmc_status_t
lmmc_minimize_gradient_descent
(
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,
240
lmmc_optimize_result_t
* out);
241
242
#ifdef __cplusplus
243
}
244
#endif
245
246
#endif
config.h
LMMC binary real type and arithmetic spelling.
lmmc_real_t
double lmmc_real_t
Public and internal LMMC real type.
定义
config.h:28
dense.h
lmmc_mat_t
行优先存储的稠密矩阵。
定义
dense_types.h:18
lmmc_vec_t
一维稠密向量。
定义
dense_types.h:31
diagnostic.h
Unified diagnostic events for LMMC operations.
lmmc_diagnostic_sink_t
定义
diagnostic.h:37
lmmc_optimize_failure_t
lmmc_optimize_failure_t
优化失败原因枚举。
定义
optimize.h:75
LMMC_OPT_FAILURE_MAX_ITER
@ LMMC_OPT_FAILURE_MAX_ITER
定义
optimize.h:77
LMMC_OPT_FAILURE_NONE
@ LMMC_OPT_FAILURE_NONE
定义
optimize.h:76
LMMC_OPT_FAILURE_SINGULAR_JACOBIAN
@ LMMC_OPT_FAILURE_SINGULAR_JACOBIAN
定义
optimize.h:80
LMMC_OPT_FAILURE_LINE_SEARCH_FAILED
@ LMMC_OPT_FAILURE_LINE_SEARCH_FAILED
定义
optimize.h:79
LMMC_OPT_FAILURE_NUMERICAL_ISSUE
@ LMMC_OPT_FAILURE_NUMERICAL_ISSUE
定义
optimize.h:78
lmmc_optimize_config_t::abs_tol
lmmc_real_t abs_tol
定义
optimize.h:64
lmmc_opt_func_t
lmmc_status_t(*) lmmc_opt_func_t(const lmmc_vec_t *x, lmmc_vec_t *F, void *user_data)
非线性函数回调:计算 F(x)。
定义
optimize.h:29
lmmc_minimize_gradient_descent
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 回溯线搜索)。
定义
optimize_gradient.c:3
lmmc_minimize_lbfgs
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 无约束最小化。
定义
optimize_lbfgs.c:157
lmmc_nleq_broyden
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。
定义
optimize_broyden.c:79
lmmc_minimize_levenberg_marquardt
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 非线性最小二乘。
定义
optimize_lm.c:141
lmmc_optimize_config_t::lbfgs_memory
size_t lbfgs_memory
定义
optimize.h:67
lmmc_optimize_result_t::failure_reason
lmmc_optimize_failure_t failure_reason
定义
optimize.h:90
lmmc_optimize_result_t::num_iter
size_t num_iter
定义
optimize.h:88
lmmc_opt_jac_t
lmmc_status_t(*) lmmc_opt_jac_t(const lmmc_vec_t *x, lmmc_mat_t *J, void *user_data)
Jacobian 回调:计算 J(x)。
定义
optimize.h:39
lmmc_optimize_config_t::rel_tol
lmmc_real_t rel_tol
定义
optimize.h:65
lmmc_optimize_config_t::max_iter
size_t max_iter
定义
optimize.h:66
lmmc_nleq_newton
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。
定义
optimize_newton.c:47
lmmc_optimize_config_t::lm_damping
lmmc_real_t lm_damping
定义
optimize.h:68
lmmc_optimize_config_t::diagnostics
lmmc_diagnostic_sink_t diagnostics
定义
optimize.h:69
lmmc_optimize_default_config
lmmc_status_t lmmc_optimize_default_config(lmmc_optimize_config_t *cfg)
初始化默认优化配置。
定义
optimize.c:62
lmmc_opt_grad_t
lmmc_status_t(*) lmmc_opt_grad_t(const lmmc_vec_t *x, lmmc_vec_t *grad, void *user_data)
梯度回调:计算 ∇f(x)。
定义
optimize.h:49
lmmc_optimize_result_t::converged
int converged
定义
optimize.h:87
lmmc_opt_obj_t
lmmc_real_t(*) lmmc_opt_obj_t(const lmmc_vec_t *x, void *user_data)
目标函数回调:计算标量 f(x)。
定义
optimize.h:58
lmmc_optimize_result_t::final_residual
lmmc_real_t final_residual
定义
optimize.h:89
lmmc_optimize_config_t
优化算法配置参数。
定义
optimize.h:63
lmmc_optimize_result_t
优化结果。
定义
optimize.h:86
status.h
LMMC 通用状态码定义.
lmmc_status_t
lmmc_status_t
LMMC 库统一返回的状态码.
定义
status.h:22
lmmc
optimize.h
生成于
, 为 LMMC使用
1.18.0