123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /**
- * @file csocp_cone.h
- * @brief 实现锥结构相关的函数。本模块是核心模块的一部分。
- * This file implements routines for cone. This module serves as part of core module
- * @version 0.1
- * @date 2021-09-17
- *
- * @copyright Copyright (c) 2021
- *
- */
- #ifndef __CSOCP_CONE_H__
- #define __CSOCP_CONE_H__
- #include "csocp_config.h"
- #define CONE_OK 0 /**< Cone status */
- #define CONE_INVALID 1 /**< Cone status */
- /*
- * Creating and deleting methods
- */
- /** 创建锥 Creating cone */
- void c_cone_create(c_cone **p_cone, /**< 指针:指向锥结构体 Pointer to cone structure */
- c_int nlpdim, /**< 线性锥维度 Dimension of LP cone */
- c_int nsoc, /**< 二阶锥数量 Number of SOC cones */
- c_int *socdim /**< 指针:二阶锥维度 Dimensions of SOC cones */
- );
- /** 析构锥结构体 Free cone */
- void c_cone_free(c_cone **p_cone /* 指针:指向锥结构体 Pointer to cone structure */
- );
- /*
- * Solving related methods
- */
- /** 将变量推入到锥的内部 Push variables to inside of cones */
- void c_cone_pushbnd(c_cone *cone, /**< 输入:锥结构体 Input cone structure */
- c_real *srcval, /**< 输入变量 Input values */
- c_real *dstval, /**< 输出变量 Output values */
- c_param *param /**< 求解器参数 Solver parameters */
- );
- /** 缩放原始变量值 Scale primal values */
- void c_cone_scaleprimal(c_cone *cone, /**< 输入:锥结构 Input cone structure */
- c_real *srcprim, /**< 输入:原始变量值 Input primal values */
- c_real *dstscal /**< 输出结果 Output scalings */
- );
- /** 缩放对偶变量 Scale dual values */
- void c_cone_scaledual(c_cone *cone, /**< 输入:锥结构 Input cone structure */
- c_real *srcdual, /**< 输出:对偶变量值 Input dual values */
- c_real *dstscal /**< 输出结果 Output scalings */
- );
- /** 更新缩放结果 Update scalings */
- c_int c_cone_updatescale(c_cone *cone, /**< 输入:锥结构 Input cone structure */
- c_real *srcprim, /**< 输入:原始变量值 Input primal values */
- c_real *srcdual, /**< 输入:对偶变量值 Input dual values */
- c_real *dstscal /**< 输出:缩放结果 Output scalings */
- );
- /** 返回后处理的搜索方向 Post-solve search directions */
- void c_cone_postsolve(c_cone *cone, /**< 输入:锥结构 Input cone structure */
- c_int ncol, /**< 变量数量 Number of variables */
- c_int neq, /**< 等式约束数量 Number of equalities */
- c_int *invmap, /**< 逆索引映射 Inverse index map */
- c_real *invval, /**< 逆数值映射 Inverse values */
- c_real *dx, /**< x的搜索方向 Search direction of x */
- c_real *dy, /**< y的搜索方向 Search direction of y */
- c_real *dz /**< z的搜索方向 Search direction of z */
- );
- /*
- * Basic operator methods
- */
- /** 锥乘积 Conic product: w = u o v */
- c_real c_cone_prod(c_cone *cone, /**< 输入:锥结构 Input cone structure */
- c_real *srcU, /**< 输入:U Input U values */
- c_real *srcV, /**< 输入:V Input V values */
- c_real *dstW /**< 输出:W Ouput W values */
- );
- /** 锥除法 Conic division: w = u \ v */
- void c_cone_div(c_cone *cone, /**< 输入:锥结构 Input cone structure */
- c_real *srcU, /**< 输入:U Input U values */
- c_real *srcW, /**< 输入:W Input W values */
- c_real *dstV /**< 输出:V Output V values */
- );
- /*
- * Auxiliary methods
- */
- /** 获取锥结构的内存需求量 Get memory requirement of cone */
- c_int c_cone_getmem(c_int lpdim, /**< 线性锥维度 Dimension of LP cone */
- c_int nsoc, /**< 二阶锥数量 Number of SOC cones */
- c_int *socdim /**< 二阶锥维度 Dimensions of SOC cones */
- );
- #endif
|