ECOS求解器求解二阶锥问题C语言程序


应用ECOS求解器,求解二阶锥问题,程序中有备注,上传的是整个方案,可以直接使用VS2010打开
资源截图
代码片段和文件信息
/* ========================================================================= */
/* === AMD_1 =============================================================== */
/* ========================================================================= */

/* ------------------------------------------------------------------------- */
/* AMD Copyright (c) Timothy A. Davis      */
/* Patrick R. Amestoy and Iain S. Duff.  See ../README.txt for License.     */
/* email: DrTimothyAldenDavis@gmail.com                                      */
/* ------------------------------------------------------------------------- */

/* AMD_1: Construct A+A‘ for a sparse matrix A and perform the AMD ordering.
 *
 * The n-by-n sparse matrix A can be unsymmetric.  It is stored in MATLAB-style
 * compressed-column form with sorted row indices in each column and no
 * duplicate entries.  Diagonal entries may be present but they are ignored.
 * Row indices of column j of A are stored in Ai [Ap [j] ... Ap [j+1]-1].
 * Ap [0] must be zero and nz = Ap [n] is the number of entries in A.  The
 * size of the matrix n must be greater than or equal to zero.
 *
 * This routine must be preceded by a call to AMD_aat which computes the
 * number of entries in each row/column in A+A‘ excluding the diagonal.
 * Len [j] on input is the number of entries in row/column j of A+A‘.  This
 * routine constructs the matrix A+A‘ and then calls AMD_2.  No error checking
 * is performed (this was done in AMD_valid).
 */

#include “amd_internal.h“

GLOBAL void AMD_1

    Int n /* n > 0 */
    const Int Ap [ ] /* input of size n+1 not modified */
    const Int Ai [ ] /* input of size nz = Ap [n] not modified */
    Int P [ ] /* size n output permutation */
    Int Pinv [ ] /* size n output inverse permutation */
    Int Len [ ] /* size n input undefined on output */
    Int slen /* slen >= sum (Len [0..n-1]) + 7n
 * ideally slen = 1.2 * sum (Len) + 8n */
    Int S [ ] /* size slen workspace */
    double Control [ ] /* input array of size AMD_CONTROL */
    double Info [ ] /* output array of size AMD_INFO */

{
    Int i j k p pfree iwlen pj p1 p2 pj2 *Iw *Pe *Nv *Head
*Elen *Degree *s *W *Sp *Tp ;

    /* --------------------------------------------------------------------- */
    /* construct the matrix for AMD_2 */
    /* --------------------------------------------------------------------- */

    ASSERT (n > 0) ;

    iwlen = slen - 6*n ;
    s = S ;
    Pe = s ;     s += n ;
    Nv = s ;     s += n ;
    Head = s ;     s += n ;
    Elen = s ;     s += n ;
    Degree = s ;    s += n ;
    W = s ;     s += n ;
    Iw = s ;     s += iwlen ;

    ASSERT (AMD_valid (n n Ap Ai) == AMD_OK) ;

    /* construct the pointers for A+A‘ */
    Sp = Nv ; /* use Nv and W as workspace for Sp and Tp [ */
    Tp = W ;
    pfree = 0 ;
    for (j = 0 ; j < n ; j++)
    {
Pe [j] = pfree ;
Sp 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-12-26 10:45  ECOS_C++锥约束问题
     目录           0  2018-12-26 10:45  ECOS_C++锥约束问题Debug
     文件      141312  2018-07-13 14:44  ECOS_C++锥约束问题DebugECOS_C++.exe
     文件      499492  2018-07-13 14:44  ECOS_C++锥约束问题DebugECOS_C++.ilk
     文件     1158144  2018-07-13 14:44  ECOS_C++锥约束问题DebugECOS_C++.pdb
     目录           0  2018-12-26 10:45  ECOS_C++锥约束问题ECOS_C++
     文件    25448448  2018-07-13 15:14  ECOS_C++锥约束问题ECOS_C++.sdf
     文件         891  2017-11-12 11:11  ECOS_C++锥约束问题ECOS_C++.sln
     文件       94208  2018-07-13 15:14  ECOS_C++锥约束问题ECOS_C++.suo
     文件       18467  2017-11-12 13:24  ECOS_C++锥约束问题ECOS_C++amd.h
     文件        5890  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_1.c
     文件       66716  2017-11-12 13:25  ECOS_C++锥约束问题ECOS_C++amd_2.c
     文件        5061  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_aat.c
     文件        1849  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_control.c
     文件        1290  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_defaults.c
     文件        5191  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_dump.c
     文件        3264  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_global.c
     文件        4292  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_info.c
     文件        9515  2017-11-12 13:29  ECOS_C++锥约束问题ECOS_C++amd_internal.h
     文件        6107  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_order.c
     文件        5715  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_postorder.c
     文件        3823  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_post_tree.c
     文件        3926  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_preprocess.c
     文件        3072  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++amd_valid.c
     文件       15277  2018-05-02 16:48  ECOS_C++锥约束问题ECOS_C++cone.c
     文件        6290  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++cone.h
     文件        2529  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++ctrlc.c
     文件        1826  2015-08-06 10:42  ECOS_C++锥约束问题ECOS_C++ctrlc.h
     文件       82557  2017-11-12 11:57  ECOS_C++锥约束问题ECOS_C++data.h
     文件        1722  2017-12-22 22:14  ECOS_C++锥约束问题ECOS_C++dbgmalloc.c
     目录           0  2018-12-26 10:45  ECOS_C++锥约束问题ECOS_C++Debug
............此处省略107个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)