最近在使用yalmip时发现对于求解器及结果的设置基本都在sdqsettings中实现。在网上查相关信息时发现基本都是残缺的,于是决定写个稍微全面的关于sdqsettings参数设置。(其实就是官方文档翻译归纳了一下,主要还是自己学习用)
官方文档

1、yalmip的语法:
options = sdpsettings('field',value,'field',value,...)
sdpsettings内的写法有点类似键值对的写法,每个参数名后面必须写上对应的值
optimize(Constraints, Objective, options)
调用相应求解器求解时需要的三个参数。Constraints包含模型的所有约束条件,Objective即目标函数,options即对求解器相关参数的设置。

yalmip允许将已有的设置作为sdpsettings的第一个参数
ops = sdpsettings('solver','sdpa'); /设置求解器
ops = sdpsettings(ops,'verbose',0); /将上一行的ops设置为第一个参数

也可以利用.对ops进行设置
ops = sdpsettings('solver','sdpa');
ops.verbose = 0;
2、sdpsettings参数详解
常用的参数设置:
solver:用于告诉yalmip将调用的求解器,yalmip允许调用的求解器在solver里查看。如果没有对其设置,yalmip将自动调用一个合适的求解器。
verbose:展示求解细节的设置。0表示完全不显示,1表示适度显示,2则是完全显示。
debug:当设置为1时,yalmip会将出错的原因和位置显示在命令行窗口。(比如某条约束写错了导致不可行)
savesolverinput、savesolveroutput:控制是否保存求解器的输入和输出数据(很重要,可以看到输入的模型及输出的一系列数据)
solver options:用于设置求解器的特殊参数(比如精度、最大最小区间等)

不常用参数设置:(just for me)
warning:设置为1时求解器在遇到某些问题时显示警告(建议在silent mode下使用,还没遇到过需要warning设置的情况)
beeponproblem:显示一系列错误代码
showprogress:显示yalmip当前在干什么
cachesolvers:yalmip开始时会检查所有可用求解器,对此参数置1让yalmip不再进行检查操作(文档都写了现代计算机用不到,不在乎这点检查时间影响了)
removeequalities:置1时yalmip将移除等式约束并用QR分解重构模型;2时yalmip用等式约束独立列产生的基代替它;-1时yalmip用两个不等式表示等式;0时如果求解器支持等式约束,yalmip什么都不做,如果求解器不支持等式约束,yalmip将按照-1的方法处理等式约束
saveduals:控制yalmip是否保存对偶变量
convertconvexquad:默认值为1,yalmip会将二次约束转换为二阶锥
relax:置1时,yalmip将所有的非线性约束和整数约束松弛,所有整数变量被松弛为连续变量,非线性变量被当作独立变量;置2时仅松弛整数约束;置3时仅松弛非线性约束
usex0:置1时将提供一个决策作为优化问题的初始猜测给yalmip

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐