matlab--cvx

定义变量

  • variable x(20); 表示20维的向量x是决策变量
  • variable y(20,30) complex; 表示决策变量y是20x30的矩阵,由复数组成
  • variable X(20,20) symmetric; 表示决策变量X是20x20的决策变量,加上symmetric说明必须是对称矩阵
  • variables x(20) y(20,30); 声明变量的时候可以同时声明好几个

定义目标函数

如果是求最小,一定要是凸函数的形式,求最大用凹函数

  • 线性linear: cTx (c转置乘上x),
    trace(A * X) A和X如果都是对称的,相乘求迹相当于对应元素相乘再求和,对x里面的变量来说是线性的
  • 二次quadratic: xTQx其中Q是半正定
  • 范数2-norm: norm(Ax - b,2)若没有制定2,默认的是2范数

约束条件

  • linear: bTx <= a, ATx <= b;
  • 二次quadratic: xTQx <= a; Q一定是半正定的
  • 二阶锥约束SOCP:x1平方 + x2平方 + x3平方 <= 0; x3 >= 0;
  • 决策变量是矩阵SDP:X >= 0(x要求是半正定的变量)
    若在cvx_begin之后没有加上SDP,出现X >= 0 则是要求x出现的每个分量大于等于0

定义x属于某个集合

  • nonnegative set: x == nonnegative(n)(equals to x >= 0);
    表示x属于非负向量组成的集合,这个向量是n维的,==表示属于
  • simplex: x == simplex(n)(equals to![在这里插入图片描述](https://img-blog.csdnimg.cn/20210506203924179.png),x
    )
    非负向量,加起来还要为1,如果是二维,那就是直线;若x是三维,就会在第一挂线像是三角形
  • semidefinite set半定矩阵:X==semidefinite(n),(equals to X>=0, symmetric)
  • 相当于SDP问题里面,x>=0

到这里输完之后cvx_end就结束了

其他设置

  • solver precision:cvx_precision defalt(low/medium/high/best);
    cvx允许调节解的精度
    例如 cvx_low
  • selecting a solver:cvx_solver sedumi

你可能感兴趣的:(pytorch,matlab)