|
LMMC
Lamina Mathematic core
|
#include <math.h>#include <string.h>#include "memory_bridge.h"#include "internal.h"#include "lmmc/linear_algebra.h"#include "lmmc/optimize.h"结构体 | |
| struct | lmmc_opt_workspace_t |
| 工作区由本次调用拥有,视图仅借用存储,释放由调用方负责。 更多... | |
| struct lmmc_opt_workspace_t |
工作区由本次调用拥有,视图仅借用存储,释放由调用方负责。
在文件 optimize_internal.h 第 12 行定义.
| 成员变量 | ||
|---|---|---|
| void * | allocation | |
| lmmc_real_t * | next | |
| size_t * | pivots | |
| 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().
| 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().
| 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().
| 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().
| 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_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().