|
LMMC
Lamina Mathematic core
|
#include "optimize_internal.h"| void lmmc_optimize_emit | ( | const lmmc_optimize_config_t * | cfg, |
| const char * | operation, | ||
| size_t | iteration, | ||
| const lmmc_real_t * | values, | ||
| size_t | value_count ) |
在文件 optimize.c 第 3 行定义.
引用了 lmmc_optimize_config_t::diagnostics, lmmc_diagnostic_emit(), LMMC_DIAGNOSTIC_TRACE , 以及 lmmc_optimize_emit().
被这些函数引用 lmmc_minimize_gradient_descent(), lmmc_minimize_lbfgs(), lmmc_minimize_levenberg_marquardt(), lmmc_nleq_broyden(), lmmc_nleq_newton() , 以及 lmmc_optimize_emit().
| int lmmc_optimize_config_is_valid | ( | const lmmc_optimize_config_t * | cfg | ) |
在文件 optimize.c 第 17 行定义.
引用了 lmmc_optimize_config_t::abs_tol, lmmc_optimize_config_t::lbfgs_memory, lmmc_optimize_config_t::lm_damping, lmmc_optimize_config_is_valid(), lmmc_optimize_config_t::max_iter , 以及 lmmc_optimize_config_t::rel_tol.
被这些函数引用 lmmc_optimize_arguments_valid() , 以及 lmmc_optimize_config_is_valid().
| int lmmc_optimize_has_converged | ( | lmmc_real_t | residual, |
| lmmc_real_t | initial_residual, | ||
| const lmmc_optimize_config_t * | cfg ) |
在文件 optimize.c 第 35 行定义.
引用了 lmmc_optimize_config_t::abs_tol, lmmc_optimize_has_converged() , 以及 lmmc_optimize_config_t::rel_tol.
被这些函数引用 lmmc_optimize_has_converged() , 以及 lmmc_optimize_stop().
| lmmc_real_t lmmc_optimize_norm | ( | const lmmc_vec_t * | v | ) |
计算向量的 L2 范数。
在文件 optimize.c 第 48 行定义.
引用了 lmmc_vec_t::data, lmmc_optimize_norm() , 以及 lmmc_vec_t::size.
被这些函数引用 lmmc_minimize_gradient_descent(), lmmc_minimize_lbfgs(), lmmc_minimize_levenberg_marquardt(), lmmc_nleq_broyden(), lmmc_nleq_newton() , 以及 lmmc_optimize_norm().
| lmmc_status_t lmmc_optimize_default_config | ( | lmmc_optimize_config_t * | cfg | ) |
初始化默认优化配置。
默认值:abs_tol=1e-12, rel_tol=1e-10, max_iter=1000, lbfgs_memory=10, lm_damping=1e-3,诊断 sink 为空。 所有求解器在分配工作区或调用用户回调前验证配置。收敛条件为 norm <= abs_tol 或 norm <= rel_tol * initial_norm。
在文件 optimize.c 第 62 行定义.
引用了 lmmc_optimize_config_t::abs_tol, lmmc_optimize_config_t::diagnostics, lmmc_optimize_config_t::lbfgs_memory, lmmc_optimize_config_t::lm_damping, lmmc_optimize_default_config(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_optimize_config_t::max_iter , 以及 lmmc_optimize_config_t::rel_tol.
被这些函数引用 lmmc_ode_implicit_euler_solve(), lmmc_ode_trapezoidal_solve() , 以及 lmmc_optimize_default_config().
| int lmmc_optimize_arguments_valid | ( | const lmmc_vec_t * | x, |
| const lmmc_optimize_config_t * | cfg, | ||
| const lmmc_optimize_result_t * | out ) |
在文件 optimize.c 第 75 行定义.
引用了 lmmc_vec_t::data, lmmc_optimize_arguments_valid(), lmmc_optimize_config_is_valid() , 以及 lmmc_vec_t::size.
被这些函数引用 lmmc_minimize_gradient_descent(), lmmc_minimize_lbfgs(), lmmc_minimize_levenberg_marquardt(), lmmc_nleq_broyden(), lmmc_nleq_newton() , 以及 lmmc_optimize_arguments_valid().
| void lmmc_optimize_result_init | ( | lmmc_optimize_result_t * | out | ) |
在文件 optimize.c 第 82 行定义.
引用了 lmmc_optimize_result_t::converged, lmmc_optimize_result_t::failure_reason, lmmc_optimize_result_t::final_residual, LMMC_OPT_FAILURE_NONE, lmmc_optimize_result_init() , 以及 lmmc_optimize_result_t::num_iter.
被这些函数引用 lmmc_minimize_gradient_descent(), lmmc_minimize_lbfgs(), lmmc_minimize_levenberg_marquardt(), lmmc_nleq_broyden(), lmmc_nleq_newton() , 以及 lmmc_optimize_result_init().
| int lmmc_optimize_stop | ( | lmmc_real_t | norm, |
| lmmc_real_t * | initial, | ||
| size_t | iteration, | ||
| const lmmc_optimize_config_t * | cfg, | ||
| lmmc_optimize_result_t * | out ) |
在文件 optimize.c 第 90 行定义.
引用了 lmmc_optimize_result_t::converged, lmmc_optimize_result_t::failure_reason, lmmc_optimize_result_t::final_residual, LMMC_OPT_FAILURE_MAX_ITER, LMMC_OPT_FAILURE_NUMERICAL_ISSUE, lmmc_optimize_has_converged(), lmmc_optimize_stop() , 以及 lmmc_optimize_config_t::max_iter.
被这些函数引用 lmmc_minimize_gradient_descent(), lmmc_minimize_lbfgs(), lmmc_nleq_broyden(), lmmc_nleq_newton() , 以及 lmmc_optimize_stop().
| lmmc_status_t lmmc_opt_workspace_create | ( | size_t | n, |
| size_t | vectors, | ||
| size_t | matrices, | ||
| size_t | extra, | ||
| int | need_pivots, | ||
| lmmc_opt_workspace_t * | work ) |
在文件 optimize.c 第 130 行定义.
引用了 lmmc_opt_workspace_t::allocation, lmmc_memory_alloc(), lmmc_opt_workspace_create(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_opt_workspace_t::next , 以及 lmmc_opt_workspace_t::pivots.
被这些函数引用 lmmc_minimize_gradient_descent() , 以及 lmmc_opt_workspace_create().
| lmmc_vec_t lmmc_opt_workspace_vector | ( | lmmc_opt_workspace_t * | work, |
| size_t | n ) |
在文件 optimize.c 第 160 行定义.
引用了 lmmc_opt_workspace_vector() , 以及 lmmc_opt_workspace_t::next.
被这些函数引用 lmmc_minimize_gradient_descent() , 以及 lmmc_opt_workspace_vector().
| lmmc_mat_t lmmc_opt_workspace_matrix | ( | lmmc_opt_workspace_t * | work, |
| size_t | n ) |
在文件 optimize.c 第 167 行定义.
引用了 lmmc_opt_workspace_matrix() , 以及 lmmc_opt_workspace_t::next.
被这些函数引用 lmmc_opt_workspace_matrix().
| lmmc_status_t lmmc_optimize_jacobian | ( | lmmc_opt_func_t | F, |
| lmmc_opt_jac_t | J, | ||
| void * | user_data, | ||
| const lmmc_vec_t * | x, | ||
| const lmmc_vec_t * | Fx, | ||
| lmmc_mat_t * | matrix, | ||
| lmmc_vec_t * | x_pert, | ||
| lmmc_vec_t * | F_pert ) |
临时向量由外层求解器一次性分配。
在文件 optimize.c 第 214 行定义.
引用了 lmmc_optimize_jacobian(), LMMC_STATUS_OK , 以及 lmmc_vec_t::size.
被这些函数引用 lmmc_minimize_levenberg_marquardt(), lmmc_nleq_broyden(), lmmc_nleq_newton() , 以及 lmmc_optimize_jacobian().
| int lmmc_optimize_armijo | ( | lmmc_opt_obj_t | obj, |
| void * | user_data, | ||
| const lmmc_vec_t * | x, | ||
| const lmmc_vec_t * | direction, | ||
| lmmc_vec_t * | trial, | ||
| lmmc_real_t * | value, | ||
| lmmc_real_t | derivative, | ||
| int | attempts, | ||
| int | subtract ) |
在文件 optimize.c 第 241 行定义.
引用了 lmmc_vec_t::data, lmmc_optimize_armijo() , 以及 lmmc_vec_t::size.
被这些函数引用 lmmc_minimize_gradient_descent() , 以及 lmmc_optimize_armijo().