赞
踩
打算做一个鲁棒优化的系列,先从Bertsimas,2004的文章开始学习,最后的目标时做到分布鲁棒,我也是初学者.
简而言之,当你的模型存在不确定系数,而你需要免疫这些不确定系数,那你就需要考虑一下鲁棒优化.
我们假设,c矩阵不包含不确定变量,如果你的模型包含不确定变量,可以将目标函数化成约束的形式.扰动变量只在A阵出现.,约束的右端都是确定参数.
更具体的形式如上,公式(2).
我们假设随机变量a,在一定范围内扰动,有上下界,且独立对称分布
a_hat,就是其的波动范围.
上图表示是y等于x的绝对值,是一种线性化的方法,不懂得可以知乎线性化技巧,了解一下.
将模型(2)优化出来的结果,代入约束中,接下来我们分析这个解为什么是鲁棒解,即对所有区间内的扰动都满足约束.
上述两个公式可以明显的看出,缩放后的约束,左端项与右端项,具有明显的差距.
因为它每一个不确定量都取了最坏的情况,这导致结果非常的保守,这种极端保守的解,会导致很大的浪费.于是数学家们,开始寻找一种方法,减少这个保守度.下一篇,将讲述减少保守度,和控制保守度的方法,以及其对应的机会约束概率.
举例子
假设x_2前面的系数,【-2,1,0】是波动的,波动的范围是0.5.
x_1=sdpvar(1,1); x_2=sdpvar(1,1); x_3=sdpvar(1,1); y=sdpvar(1,1); Constraints=[x_1-2*x_2+x_3+0.5*y<=11,... 3<=-4*x_1+x_2+2*x_3+0.5*y,... -2*x_1+x_3==1,... x_2<=y,... -x_2<=y,... 0<=x_1,0<=x_2,0<=x_3,0<=y]; F=-(3*x_1-x_2-x_3); optimize(Constraints,F) F=value(F); x_1=value(x_1); x_2=value(x_2); x_3=value(x_3);
yalmip+gurobi编写求解.
发现y并不等于x_2的绝对值,询问朋友后,我的这种线性化方法,并不是完全等价的,松弛不紧凑,原因是梯度消失.所有大家在用这种方法去绝对值时,要小心.建议使用SOS1.具体我也不是很清楚
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。