|
LMMC
Lamina Mathematic core
|
#include "optimize_internal.h"结构体 | |
| struct | lmmc_lbfgs_workspace_t |
函数 | |
| 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 无约束最小化。 | |
| struct lmmc_lbfgs_workspace_t |
在文件 optimize_lbfgs.c 第 3 行定义.
| 成员变量 | ||
|---|---|---|
| lmmc_opt_workspace_t | arena | |
| lmmc_vec_t | g | |
| lmmc_vec_t | q | |
| lmmc_vec_t | x_new | |
| lmmc_vec_t | g_new | |
| lmmc_vec_t | alpha | |
| lmmc_vec_t | rho | |
| lmmc_mat_t | s | |
| lmmc_mat_t | y | |
| size_t | history_count | |
| size_t | oldest | |
| 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 无约束最小化。
使用两循环递归与 m 个存储的 (s,y) 对。含 Armijo 回溯线搜索。
| [in] | obj | 目标函数回调。 |
| [in] | grad | 梯度回调。 |
| [in] | user_data | 传递给回调的用户数据。 |
| [in,out] | x | 初始猜测 / 输出解。 |
| [in] | cfg | 算法配置(lbfgs_memory 指定 m)。 |
| [out] | out | 迭代结果。 |
在文件 optimize_lbfgs.c 第 157 行定义.
引用了 lmmc_opt_workspace_t::allocation, lmmc_lbfgs_workspace_t::arena, lmmc_optimize_result_t::failure_reason, lmmc_optimize_result_t::final_residual, lmmc_lbfgs_workspace_t::g, lmmc_optimize_config_t::lbfgs_memory, lmmc_memory_free(), lmmc_minimize_lbfgs(), LMMC_OPT_FAILURE_NONE, LMMC_OPT_FAILURE_NUMERICAL_ISSUE, lmmc_optimize_arguments_valid(), lmmc_optimize_emit(), lmmc_optimize_norm(), lmmc_optimize_result_init(), lmmc_optimize_stop(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_optimize_result_t::num_iter , 以及 lmmc_vec_t::size.
被这些函数引用 lmmc_minimize_lbfgs().