鲁棒优化(5):通过yalmip中uncertain命令快速各类不确定集合下的鲁棒优化

前言

之前的几篇鲁棒优化的文章,大致介绍了鲁棒优化基本原理,本文对原理部分不再赘述。如果对鲁棒优化基本原理还不了解的同学,建议先补上基础。言归正传,鲁棒优化作为经典的处理不确定性方法,深受大家的喜爱,但是其重复繁琐的对偶转换步骤,同样让很多人望而却步。为此,本文将基于yalmip语言中的uncertain命令,介绍一种鲁棒优化的快速建模求解方法,方便大家在论文中作对比算例。


一、uncertain是什么?

uncertain(w,distribution) 是基于yalmip语言中处理不确定变量的工具,该工具是为了解决鲁棒优化、随机优化而创建的。其中w就是指不确定变量,distribution为改不确定变量的分布。这个分布可以是不确定集合,盒子不确定集合、多面体不确定集合、椭圆不确定集合等等,也可以是已知的分布,例如正态分布等。更详细介绍,建议直接看原文档。接下来,将以一个股票投资的例子向大家展示该命令的使用方法。股票投资问题如下:
在这里插入图片描述

二、uncertain怎么用?

代码

`n = 150; %150只股票
x = sdpvar(n, 1); %每只股票的投资比例
w = sdpvar(n, 1); %不确定变量
sigma = zeros(n, 1);
z = sdpvar(1, 1);
p = zeros(n, 1);
for i = 1 : n
sigma(i, 1) = (0.05 * sqrt(2 * i * n * (n + 1))) / 450; %股票回报的标准差
end
for i = 1 : n
p(i, 1) = 1.15 + i * 0.05 / 150; %股票回报的均值
end
%约束条件
st = [];
for i = 1 : n
st = [st, 0 <= x(i)]; %每只股票的投资比例大于0
end
st = [st, sum(x) == 1]; %投资总比例为1

% U = [norm(w,inf)<=1,uncertain(w)];%指明变量w为不确定变量,并指出范围,norm为范数,盒子不确定集合
% U = [norm(w,inf)<=1,norm(w,1)<=5,uncertain(w)];%多面体不确定集合
U = [norm(w,2)<=1,uncertain(w)];%椭圆不确定集合

%目标函数
obj = p’ * x + (w .* sigma)’ * x; %收益最大化

ops = sdpsettings(‘solver’, ‘gurobi’); %参数指定程序用cplex求解器
optimize([st, U], -obj, ops)%带上不确定约束U
plot(value(x));


总结

盒子不确定集合下,x投资比例
在这里插入图片描述

多面体不确定集合下,x投资比例
在这里插入图片描述
椭球不确定集合下,x投资比例
在这里插入图片描述

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值