LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
optimize.c 文件参考
optimize.c 的引用(Include)关系图:

浏览该文件的源代码.

函数

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)
int lmmc_optimize_config_is_valid (const lmmc_optimize_config_t *cfg)
int lmmc_optimize_has_converged (lmmc_real_t residual, lmmc_real_t initial_residual, const lmmc_optimize_config_t *cfg)
lmmc_real_t lmmc_optimize_norm (const lmmc_vec_t *v)
 计算向量的 L2 范数。
lmmc_status_t lmmc_optimize_default_config (lmmc_optimize_config_t *cfg)
 初始化默认优化配置。
int lmmc_optimize_arguments_valid (const lmmc_vec_t *x, const lmmc_optimize_config_t *cfg, const lmmc_optimize_result_t *out)
void lmmc_optimize_result_init (lmmc_optimize_result_t *out)
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)
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)
lmmc_vec_t lmmc_opt_workspace_vector (lmmc_opt_workspace_t *work, size_t n)
lmmc_mat_t lmmc_opt_workspace_matrix (lmmc_opt_workspace_t *work, size_t n)
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)
 临时向量由外层求解器一次性分配。
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)

函数说明

◆ lmmc_optimize_emit()

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().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_optimize_config_is_valid()

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().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_optimize_has_converged()

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_optimize_norm()

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_optimize_default_config()

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().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_optimize_arguments_valid()

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().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_optimize_result_init()

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_optimize_stop()

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_opt_workspace_create()

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_opt_workspace_vector()

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_opt_workspace_matrix()

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_optimize_jacobian()

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().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_optimize_armijo()

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().

函数调用图:
这是这个函数的调用关系图: