使用gopsolver和SDPA求解库实现C++正定规划

一、求解库官方网站

gposlver求解库:https://cmp.felk.cvut.cz/gposolver/

SDPA求解库:https://sourceforge.net/projects/sdpa/

二、求解库简述

        SDPA是开源的C++用于求解正定/半正定规划相关的求解库,类似的还有CSDP、SBmethod等,这些求解库特点是里面只能实现具体对应的算法,而用户想要的求解库是封装了这些算法求解库并提供输入输出接口库。比如在matlab环境中比较典型的CVX工具箱,里面就封装了SDPT3和SeDuMi求解器,并提供了很好用的接口。

        而在C++环境中,似乎找不到有类似于CVX的正定规划库,相应的,我找到了gposolver,其封装了SDPA求解库。使用过程需与matlab结合使用,即在matlab先进行规划模型的建模,在matlab可使用SeDuMi进行求解,再使用相应的api接口生成对应的C++类,在C++环境中可使用SDPA进行求解。

三、实例

        SDPA求解库可求解的实例如下

        如:

        即可以求解目标函数的最大/最小化,同时可进行约束,如正定/半正定,但在约束中需要对约束矩阵作线性矩阵不等式求解(LMI),对于大型的矩阵求解,这是手动无法计算的,并且似乎无法对某个具体变量作约束如y1>0。

        这时gposolver的作用来了,gposolver是用于全局多项式优化工具库,它将多项式问题及约束按照线性矩阵不等式(LMI)进行转换,得到适用于SDPA等求解库的形式,并封装SDPA库进行求解。

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值