weixin_46817362 2021-07-06 19:21 采纳率: 0%
浏览 57

LMI约束中有两个sdpvar变量形式的矩阵相乘,发现yalmip工具箱求不出解

img
如上图所示的LMI约束,tau是已知的常数,A、B是已知的矩阵,X和Y都是sdpvar变量,想求满足条件的X矩阵和Y矩阵。在用yalmip和sdpt3求解器计算时求不出解,显示NAN。但如果将第一行第二列元素中的Y*inv(X)去掉后,能够正常求解。以前也遇到过这样的问题,只要在LMI中遇见两个sdpvar变量相乘时,yalmip都算不出解,请教各位大佬这是什么原因?

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-02-22 16:31
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如需一对一服务私聊我哦
    这是因为在LMI中遇到两个sdpvar变量相乘会导致优化问题的非凸性,使得求解器可能会陷入局部最优解而无法找到全局最优解。为了避免这种情况,可以使用yalmip中的replace,将相乘的sdpvar变量替换成一个新的变量,从而使得LMI构成的优化问题为凸问题,可以更容易地求解。具体代码如下:
    % 定义变量
    X = sdpvar(n);
    Y = sdpvar(n);
    W = sdpvar(n);
    % 构造LMI约束
    F = [A*X+B*Y+tau*eye(n) <= 0, Y - W'*W >= 0, X >= eps*n*eye(n), W >= 0];
    % 将Y*inv(X)替换成新的变量Z
    Z = sdpvar(n);
    F = replace(F, Y*inv(X), Z);
    % 定义优化目标并求解
    obj = trace(W);
    ops = sdpsettings('solver', 'sdpt3', 'verbose', 0);
    optimize(F, obj, ops);
    

    其中,replace函数的作用是将第一个参数中的第二个参数替换成第三个参数,可以用来替换LMI中相乘的sdpvar变量。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何对TBSS的结果进行统计学的分析已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析
  • ¥15 SQL数据库操作问题
  • ¥100 关于lm339比较电路出现的问题
  • ¥15 Matlab安装yalmip和cplex功能安装失败
  • ¥15 加装宝马安卓中控改变开机画面
  • ¥15 STK安装问题问问大家,这种情况应该怎么办
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线
  • ¥20 无法创建新的堆栈防护界面