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

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 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 添加组件无法加载页面,某块加载卡住
  • ¥15 网络科学导论,网络控制
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错