【两阶段鲁棒优化问题】用列和约束生成方法求解两阶段鲁棒优化问题(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 文献来源

🌈4 Matlab代码及文章


💥1 概述

文献来源:

 鲁棒优化(RO)是最近一种处理数据不确定性的优化方法。因为它是为了避免输入数据中的任何扰动而导出的,所以(单级)RO模型的解决方案往往过于保守。为了解决这一问题,引入并研究了两阶段RO(以及更一般的多级RO),也称为鲁棒可调或自适应优化[3],其中第二阶段问题是在第一阶段决策完成后对决策进行建模,并揭示了不确定性。由于改进的建模能力,两级RO已成为一种流行的决策工具。应用包括网络/运输问题、投资组合优化[17]和电力系统调度问题。

在本文中,作者提出了一种列和约束生成算法来解决两阶段鲁棒优化问题。与现有的Benders式切割平面方法相比,柱和约束生成算法是一个通用程序,具有统一的方法来处理最优性和可行性。对两阶段鲁棒位置运输问题的计算研究表明,它的执行速度快了一个数量级。

📚2 运行结果

在解决鲁棒电力系统调度问题时也发现了类似的结果[21]。这些结果表明,无论问题大小,定义最坏情况成本的重要场景数量相对稳定且较小。因此,一种快速识别重要场景的方法,以及针对所产生的主问题的有效算法,可以大大提高两级反渗透问题的解决能力。 

部分代码:

Cons_SP2 = [Cons_SP2, b-G'*pi <= BigM*(1-u), x<=BigM*u];
    sol_SP2 = optimize(Cons_SP2,Obj_SP2,ops);
    s_g=value(g);
    s_pi=value(pi);
    
    % Add constraints in MP2 (unlike CCG algorithm, this time new varialbes are not added in MP2)
    if sol_SP2.problem==0 % SP2 is solved
        UB=min(UB,[f;a]'*[s_y;s_z]+value(-Obj_SP2));
        display(['Iter ',num2str(k),' g = ',num2str(s_g')]);
        Cons_MP2 = [Cons_MP2, eta>=( h - E*[y;z] - M*s_g )'*s_pi];
    else % SP2 is unbounded, not completed yet. Because still don't know how to identify scenario for which Q(s_y)=inf.,
        Cons_MP2 = [Cons_MP2];
    end
    
    k=k+1;
    display(['UB: ',num2str(UB),' LB: ',num2str(LB)]);
    if k>=100
        break
    end
end

🎉3 文献来源

部分理论来源于网络,如有侵权请联系删除。

[1] Zeng, Bo, and Long Zhao. "Solving two-stage robust optimization problems using a column-and-constraint generation method." Operations Research Letters 41, no. 5 (2013): 457-461. 

🌈4 Matlab代码及文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值