• 大小: 9.48MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-24
  • 语言: C/C++
  • 标签: 二阶锥  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++锥约束问题\Debug\ECOS_C++.exe
     文件      499492  2018-07-13 14:44  ECOS_C++锥约束问题\Debug\ECOS_C++.ilk
     文件     1158144  2018-07-13 14:44  ECOS_C++锥约束问题\Debug\ECOS_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个文件信息

评论

共有 条评论