鲁棒优化入门(二)——基于matlab+yalmip求解鲁棒优化问题

简介: 鲁棒优化的含义就是在最恶劣的情况下(不确定变量的取值使目标函数最大),求出满足约束条件,并且能使目标函数最优的决策变量。 yalmip工具箱可以用来求解鲁棒优化问题,但还是有一定局限性的,并不能处理任意形式的不确定集下的鲁棒优化问题,一般来说,当鲁棒优化问题的不确定集合为箱型不确定集、椭球不确定集以及多面体不确定集时,都可以用yalmip工具箱求解(具体细节可参考官方文档)。本文介绍了利用yalmip求鲁棒优化问题的一般方法。......

      上一篇博客简单介绍了可以用来求解鲁棒优化的两个工具箱:

       其实大家可能没有想过,matlab+yalmip工具箱也可以处理一些简单的鲁棒优化问题,上官方文档:Robust optimization - YALMIP

       这里就和大家一起学习一下使用yalmip+cplex求解鲁棒优化问题的方法。

一、yalmip求解鲁棒优化

       鲁棒优化问题可以表示为如下的一般形式:

image.gif

式中,x表示决策变量,w表示不确定变量。这个表达式的含义就是在最恶劣的情况下(w的取值使目标函数最大),求出满足约束条件,并且能使目标函数最小的决策变量x。

       但yalmip工具箱求解鲁棒优化问题时还是有一定局限性的,并不能处理任意形式的不确定集下的鲁棒优化问题,一般来说,当鲁棒优化问题的不确定集合为箱型不确定集、椭球不确定集以及多面体不确定集时,都可以用yalmip工具箱求解(具体细节可参考官方文档)。

二、示例代码

1.实例1:线性规划问题

       考虑一个简单线性规划问题:

image.gif

       这个问题中不确定变量w仅存在于约束条件中,目标函数中不包含不确定变量。显然,当w=0.5时是最恶劣的情况,此时f(x)的最大值为0.5。采用yalmip编程验证一下:

sdpvar x w                              % 定义变量
C = [x+w <= 1];                         % 约束条件
W = [-0.5 <= w <= 0.5, uncertain(w)];   % 不确定集
objective = -x;                         % 目标函数
sol = optimize(C + W,objective);        % 求解模型
obj=-value(objective);                  % 目标函数取值
x=value(x);                             % 决策变量x取值

image.gif

       对于不确定变量w,需要用uncertain()函数将其规定为不确定变量。另外,还可以先将鲁棒优化存为yalmip模型,然后再进行求解:

[Frobust,robust_objective] = robustify(C + W,objective);    % 导出鲁棒优化模型
sol = optimize(Frobust,robust_objective);                   % 求解鲁棒优化模型

image.gif

运行结果:

image.gif

        显然,和我们一眼看出的结果是一样的。

       对于决策变量为整数或含有逻辑约束的鲁棒优化问题,yalmip同样可以求解,例如:

image.gif

        matlab代码为:

intvar x
sdpvar w                                                    % 定义变量
C = [x+w <= 2];                                             % 约束条件
W = [-0.5 <= w <= 0.5, uncertain(w)];                       % 不确定集
objective = -x;                                             % 目标函数
sol = optimize(C + W,objective);                            % 求解模型
obj=-value(objective);                                      % 目标函数取值
x=value(x);                                                 % 决策变量x取值

image.gif

       运行结果:

image.gif

2.实例2:含椭球不确定集的鲁棒优化问题

       考虑一个含有椭球不确定集的鲁棒优化问题:

image.gif

        这个问题中不确定变量w仅存在于约束条件中,目标函数中不包含不确定变量。假设n=2,也不难看出,当w1=w2=0.5时,属于最恶劣的场景,此时f(x)最大值为0。编程验证一下:

sdpvar x w(2,1)                                             % 定义变量
C = [x+sum(w) <= 1];                                        % 约束条件
W = [norm(w) <= 1/sqrt(2), uncertain(w)];                   % 不确定集
objective = -x;                                             % 目标函数
sol = optimize(C + W,objective);                            % 求解模型
obj=-value(objective);                                      % 目标函数取值
x=value(x);                                                 % 决策变量x取值

image.gif

       运行结果:

image.gif

       小伙伴们可能有点奇怪,说好的最优值是零呢?怎么是一个负数?其实,我们应该知道matlab的计算精度是有限的,eps表示MATLAB默认的最小浮点数精度(默认是eps(1)):

image.gif

        所以这个结果应该就是计算误差。

3.实例3:含不确定性的平方和(SOS,Sum of squares)规划问题

       考虑如下的SOS规划问题,其中a为整数变量,取值范围[3,5]

image.gif

        这玩意就没法直接看出最优解了,直接上代码:

intvar a
sdpvar x y t u                  % 定义决策变量
p = a*x^4+y^4+u*x*y+1;          % 多项式表示
F = [uncertain(u), -1<=u<=1];   % 不确定集
F = [F, a>=3, a<=5];            % 约束条件a∈[3,5]
F = [F, sos(p-t)];              % 多项式约束
solvesos(F, -t)                 % 求解模型
A=value(a);                     % 决策变量a的取值 
T=value(t);                     % 目标函数t的取值

image.gif

运行结果:

image.gif

       可以看出,当a=5时,目标函数t取得最大值,为0.9437。

       上面三个例子都是yalmip官方文档中的示例,下面来看一个实际问题:

4.实例4:股票投资问题

       假设一共有150种股票可供选择,第i个股票的不确定收益用image.gif编辑表示,其取值满足约束条件:image.gif编辑,其中,image.gif编辑表示股票i的期望收益,image.gif编辑表示股票i的偏差,不确定集可以用1范数和无穷范数表示为:

image.gif

        该投资组合问题的鲁棒优化模型可以表示为:

image.gif

        在本例中,假设Γ=5,参数pi和σi满足如下公式:


        求解该问题的matlab代码如下:

n  = 150;                                               % 股票的数量 
p  = 1.15+ 0.05/150*(1:n)';                             % 期望的收益
sigma = 0.05/450*sqrt(2*n*(n+1)*(1:n)');                % 收益的偏差
gamma=5;                                                % 不确定预算
z=sdpvar(n,1);                                          % 不确定变量z
x=sdpvar(n,1);                                          % 决策变量x
C=[sum(x)==1,x>0];                                      % x的约束条件
Z=[norm(z,Inf)<=1,norm(z,1)<=gamma,uncertain(z)];       % 不确定集
objective = -(p + sigma.*z)'*x;                         % 目标函数
sol = optimize(C+Z,objective);                          % 求解模型
x=value(x);                                             % 决策变量x取值
plot(x)                                                 % 画出图像

image.gif

       运行结果:

image.gif

       和RSOME工具箱的求解结果一致。

相关文章
|
2天前
|
机器学习/深度学习 算法 数据挖掘
基于PSO优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
摘要: 本文介绍了运用粒子群优化(PSO)调整深度学习模型超参数以提升时间序列预测性能的方法。在比较了优化前后的效果(Ttttttttttt12 vs Ttttttttttt34)后,阐述了使用matlab2022a软件的算法。文章详细讨论了CNN、GRU网络和注意力机制在时间序列预测中的作用,以及PSO如何优化这些模型的超参数。核心程序展示了PSO的迭代过程,通过限制和调整粒子的位置(x1)和速度(v1),寻找最佳解决方案(gbest1)。最终,结果保存在R2.mat文件中。
基于PSO优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
|
8天前
|
机器学习/深度学习 算法 数据挖掘
基于PSO优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
该文档介绍了使用MATLAB2022A中PSO优化算法提升时间序列预测模型性能的过程。PSO优化前后对比显示了优化效果。算法基于CNN、LSTM和Attention机制构建CNN-LSTM-Attention模型,利用PSO调整模型超参数。代码示例展示了PSO的迭代优化过程及训练、预测和误差分析环节。最终,模型的预测结果以图形形式展示,并保存了相关数据。
|
14天前
|
机器学习/深度学习 算法 网络架构
matlab使用贝叶斯优化的深度学习:卷积神经网络CNN
matlab使用贝叶斯优化的深度学习:卷积神经网络CNN
13 0
|
15天前
|
机器学习/深度学习 算法 网络架构
matlab使用贝叶斯优化的深度学习
matlab使用贝叶斯优化的深度学习
19 0
|
21天前
|
机器学习/深度学习 算法
基于GA优化的CNN-LSTM-Attention的时间序列回归预测matlab仿真
时间序列预测是许多领域中的核心问题,如金融市场分析、气候预测、交通流量预测等。近年来,深度学习在时间序列分析上取得了显著的成果,尤其是卷积神经网络(CNN)、长短时记忆网络(LSTM)和注意力机制(Attention)的结合使用
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于GA优化的CNN-GRU-Attention的时间序列回归预测matlab仿真
该内容描述了一个使用CNN-LSTM-Attention模型优化时间序列预测的过程。在优化前后,算法的预测效果有明显提升,软件版本为matlab2022a。理论部分介绍了CNN用于特征提取,LSTM处理序列依赖,Attention关注重要信息,以及遗传算法(GA)优化超参数。提供的核心代码展示了GA的优化迭代和模型训练,以及预测结果的可视化比较。
|
2月前
|
机器学习/深度学习 机器人 数据挖掘
Matlab从入门到精通课程
MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
24 6
Matlab从入门到精通课程
|
2月前
|
算法 搜索推荐
基于遗传优化的协同过滤推荐算法matlab仿真
该内容是关于推荐系统和算法的描述。使用Matlab2022a执行的算法生成了推荐商品ID列表,显示了协同过滤在个性化推荐中的应用。用户兴趣模型通过获取用户信息并建立数学模型来提高推荐性能。程序片段展示了遗传算法(GA)的迭代过程,确定支持度阈值,并基于关联规则生成推荐商品ID。最终结果是推荐的商品ID列表,显示了算法的收敛和支持值。
|
2月前
【数学建模竞赛】Matlab入门讲解
【数学建模竞赛】Matlab入门讲解
18 0
|
3月前
|
编解码 移动开发 资源调度
【MATLAB】全网入门快、免费获取、持续更新的科研绘图教程系列1
【MATLAB】全网入门快、免费获取、持续更新的科研绘图教程系列1
38 0

热门文章

最新文章