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

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

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

  • 写回答

1条回答 默认 最新

  • 码农阿豪 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 Unity发布gzip压缩的webgl之后让浏览器可以正常显示画面
  • ¥15 有没有人知道这种提示怎么关?现在不做ts项目了不知道咋关了,求解,现在我以前的js项目都是这种提示了
  • ¥15 为什么mysql做了碎片化处理data_free还是很高
  • ¥15 single positional indexer is out-of-bounds
  • ¥15 LSTM 模型数据量需要多少?
  • ¥15 mysql数据抓包开发报表
  • ¥15 linux系统下安装office打不开
  • ¥20 rsync脚本分发错误,文件不齐全
  • ¥15 labview顺序结构与时间延时
  • ¥15 脚本求解,源于数据库脚本变量筛选。