精华内容
下载资源
问答
  • 两阶段鲁棒优化代码,很好的学习资料,内附对应文献。
  • 两阶段鲁棒优化CCG列于约束生成和Benders代码,可扩展改编,复现自原外文论文 ④【赠送】虚拟储能单元电动汽车建模/基于Matlab-Yalmip-cplex 带虚拟储能单元(电动汽车)多目标优化调度 ⑤【赠送】发电机组经济...
  • 包含储能,微型燃气机,功率平衡约束,配电网交互等约束,具体约束可参考《微电网两阶段鲁棒优化经济调度方法_刘一欣》,有一定相似性,但不包含全部。 程序保证稳定收敛,并且注释清晰,模型,推导过程均有文件和...
  • 两阶段鲁棒优化CCG列于约束生成和Benders代码,可扩展改编,复现自原外文论文 【赠送】虚拟储能单元电动汽车建模/基于Matlab-Yalmip-cplex 带虚拟储能单元(电动汽车)多目标优化调度 【赠送】发电机组经济运行问题_...
  • 两阶段鲁棒优化程序 采用微网为模型,主要将安装成本、运营成本以及综合效益三个方面纳入考虑范围,建立两阶段鲁棒优化模型,采用的是CCG方法,本程序为matlab编制,另外本程序考虑发电设备、风光储的容量配置和...

    两阶段鲁棒优化程序

    采用微网为模型,主要将安装成本、运营成本以及综合效益三个方面纳入考虑范围,建立两阶段鲁棒优化模型,采用的是CCG方法,本程序为matlab编制,另外本程序考虑发电设备、风光储的容量配置和出力情况,考虑风光负荷的不确定性

    展开全文
  • 采用yalmip编的两阶段鲁棒优化,目标函数主要考虑了投资成本(第一阶段)和运行成本(第二阶段)部分,其中,投资成本主要为储能的等年值投资成本,运行成本则包括配电网交互成本(购售电成本)、各单元运维成本...
  • 两阶段鲁棒优化CCG列于约束生成和Benders代码,可扩展改编,复现自原论文。文件中附源代码以及论文。使用matlab-yalmip编
  • %鲁棒线性优化 %利用yalmip求解鲁棒线性优化 % 1.简单线性规划示例 % % 让我们开始一个只有一个标量决策变量x和一个不确定的标量w的小问题。我们用一个不确定约束建立一个问题和一个简单的不确定模型。 % % sdpvar...
  • distributionally_robust_optimization 论文中实现的方法: 约束随机系统的分布鲁棒控制 使用Wasserstein指标的数据驱动的分布式鲁棒优化:性能保证和易于重构
  • 两阶段鲁棒优化及列和约束生成算法

    千次阅读 多人点赞 2020-10-18 21:06:47
    两阶段鲁棒优化及列和约束生成算法1. 前言2. 阶段RO3. Benders对偶割平面法 1. 前言 有同学私信我两阶段鲁棒优化的问题,自己之前主要研究单阶段的鲁棒优化,对于阶段优化不太懂。查了点资料,通过翻译和自己的...

    1. 前言

    有同学私信我两阶段鲁棒优化的问题,自己之前主要研究单阶段的鲁棒优化,对于两阶段优化不太懂。查了点资料,通过翻译和自己的理解,写下这篇博文,抛砖引玉,以供大家共同学习交流。

    2. 两阶段RO

    本文主要翻译自2013年Bo Zeng 博士的高被引论文《Solving two-stage robust optimization problems using a column-and-constraint generation method》[1]。

    由于传统单阶段的鲁棒优化对于所有不确定性是完全免疫的,求出的结果一般过于保守、比较悲观。两阶段RO也称鲁棒可调优化或者自适应优化,它的引入就是为了应对传统RO存在的上述问题。两阶段RO是指,在作出第一阶段的决策和不确定性部分展现出来之后,再进行第二阶段的决策。 由于改进的建模能力,两阶段RO,广泛应用于网络/运输问题、投资组合优化和电力系统调度等问题。

    文献[1]假设一阶段和二阶段决策问题都是线性规划,并且不确定性集合 U \bf U U是离散有限的点集或者多面体。使用 y \bf y y表示第一阶段决策变量, x \bf x x表示第二阶段决策变量, u ∈ U u \in \bf U uU表示不确定矢量。在此假设下的两阶段RO的一般形式为:
    min ⁡ y c T y + max ⁡ u ∈ U min ⁡ x ∈ F ( y , u ) b T x (1) \min_{\bf y } \bf c^{\rm T}y+\rm \max_{u \in \bf U} \min_{\bf x \in F(y,\rm u)} \bf b^{\rm T}x \tag{1} ymincTy+uUmaxxF(y,u)minbTx(1) s . t . A T y ≥ d , y ∈ S y \rm s.t. \quad \bf A^{\rm T}y \geq d,y \in S_{y} s.t.ATyd,ySy

    其中, F ( y , u ) = { x : G x ≥ h − E y − M u , x ∈ S x } \bf F(y,\rm u)=\{\bf x: Gx \geq h-Ey-M \rm u,\bf x \in S_{x}\} F(y,u)={x:GxhEyMu,xSx} S y ⊆ R + n \bf S_{y}\subseteq \Bbb R_{+}^{n} SyR+n S x ⊆ R + m \bf S_{x}\subseteq \Bbb R_{+}^{m} SxR+m,向量 c , b , d , h \bf c,b,d,h c,b,d,h和矩阵 A , G , E , M \bf A,G,E,M A,G,E,M都是确定性的数值,不确定性体现在向量 u u u上。注意到第二阶段优化的约束条件 F ( y , u ) \bf F(y,\rm u) F(y,u)是关于不确定性 u u u的线性函数。

    两阶段RO有优势,当然有缺点。即便是最简单的两阶段RO,也可以是NP-hard问题,计算复杂度很高。为了减轻计算负担,一般有两种方法。第一种是使用近似算法,该种方法假设第二阶段的决策是关于不确定性的简单函数,例如仿射函数。第二种方法试图根据Benders分解得出精确解,即它们使用第二阶段决策问题的对偶解,逐步构造第一阶段决策的值函数(value function)。一般称为Benders对偶割平面算法。

    3. Benders对偶割平面法

    由于第二阶段的决策是关于 x \bf x x的线性规划问题,可以作以下假设(relatively complete recourse assumption):该线性规划对于任意给定的 y \bf y y u u u是可行的,也即是有解 (该假设不是很理解)。假设第二阶段的线性规划的对偶变量为 π \pi π,则将其转化为对偶问题为:
    S P 1 : O ( y ) = max ⁡ u , π { ( h − E y − M u ) T π } (2) \rm {SP_{1}}: \mathcal O(\bf y) =\rm \max_{u,\pi} \{ \bf (h-Ey-M \rm u)^{T}\pi\} \tag{2} SP1:O(y)=u,πmax{(hEyMu)Tπ}(2) s . t .    G T π ≤ b , u ∈ U , π ≥ 0 s.t. \; \bf G^{\rm T}\pi \leq b, \rm u \in \bf U, \pi \geq \bf 0 s.t.GTπb,uU,π0

    在对偶问题中,目标函数从原始的最小化转换为关于对偶变量 π \pi π的最大化,同时与(1)式中的最大化 u u u合并,得到上述子问题(2)。此时不确定性向量转化为对偶问题(2)的决策变量,需要注意到子问题(2)是存在 u T π u^{T}\pi uTπ的双线性项。此时问题(2)被称为关于 u , π u,\pi u,π的双线性规划。对于双线性规划的求解,放在后面再说。

    假设对于给定的 y k ∗ \bf y_{\mathit k}^{*} yk,子问题(2) 的最优解为 ( u k ∗ , π k ∗ ) (u_{ k}^{*},\pi_{ k}^{*}) (uk,πk),根据对偶定理,则可以构建以下割平面:
    η ≥ ( h − E y − M u k ∗ ) T π k ∗ (3) \eta \geq \bf (h-Ey-M \rm u_{\mathit k}^{*})^{T}\pi_{ \mathit k}^{*} \tag{3} η(hEyMuk)Tπk(3)
    其中, η = max ⁡ u ∈ U min ⁡ x ∈ F ( y , u ) b T x \eta = \max_{u \in \bf U} \min_{\bf x \in F(y,\rm u)} \bf b^{\rm T}x η=maxuUminxF(y,u)bTx为一维标量。注意该割平面是关于第一阶段决策变量 y \bf y y的约束。

    将割平面约束添加第一阶段优化中,可以得到:
    M P 1 : min ⁡ y c T y + η (4) \rm MP_{1}: \min_{\bf y } \bf c^{\rm T}y+ \eta \tag{4} MP1:ymincTy+η(4) s . t . A T y ≥ d , y ∈ S y \rm s.t. \quad \bf A^{\rm T}y \geq d,y \in S_{y} s.t.ATyd,ySy η ≥ ( h − E y − M u l ∗ ) T π l ∗ , ∀    l ≤ k \eta \geq \bf (h-Ey-M \rm u_{\mathit l}^*)^{T}\pi_{ \mathit l}^* ,\forall \; \mathit {l \leq k} η(hEyMul)Tπl,lk y ∈ S y , η ∈ R \bf y \in S_{y}, \eta \in \Bbb R ySy,ηR

    其中 ( u l ∗ , π l ∗ ) (u_{ l}^{*},\pi_{ l}^{*}) (ul,πl)已知。求解主问题(4)可以获得其最优解 ( y k + 1 ∗ , η k + 1 ∗ ) (\bf y_{\mathit k+1}^{*},\eta_{\mathit k+1}^{*}) (yk+1,ηk+1)

    此时问题(4)的目标函数值 c T y k + 1 ∗ + η k + 1 ∗ \bf c^{\rm T}y_{\mathit k+1}^{*}+\eta_{\mathit k+1}^{*} cTyk+1+ηk+1是原始两阶段问题(1)的下界(lower bound, LB)。如何理解?原始的两阶段RO是在worse-case情况下的目标值,也即是对于所有不确定性都具有包容性,可以理解成其最优决策在所有的不确定性下都成立。通过把不确定性转化为割平面,主问题(4)中添加的割平面只是在部分不确定性 u l u_{l} ul下的优化,也即是问题(4)是关于问题(1)的松弛问题,由于是求最小化,问题(4)的最优目标值一定是原问题(1)的一个下界。

    注意到 c T y k ∗ + O ( y k ∗ ) \bf c^{\rm T}y_{\mathit k}^{*}+\mathcal O(\bf y_{\mathit k}^{*}) cTyk+O(yk)是原始问题(1)的上界。如何理解? y k ∗ \bf y_{\mathit k}^{*} yk是第一阶段的一个可行解, O ( y k ∗ ) \mathcal O(\bf y_{\mathit k}^{*}) O(yk)是第二阶段优化在 y k ∗ \bf y_{\mathit k}^{*} yk下的最优目标值,也即是说存在二阶段的最优解 x k ∗ \bf x_{\mathit k}^* xk。此时的 y k ∗ , x k ∗ \bf y_{\mathit k}^{*},\bf x_{\mathit k}^{*} yk,xk只是问题(1)的可行解,而不一定是最优解。由于是求最小化问题, c T y k ∗ + O ( y k ∗ ) \bf c^{\rm T}y_{\mathit k}^{*}+\mathcal O(\bf y_{\mathit k}^{*}) cTyk+O(yk)是原始问题(1)的上界。

    y k + 1 ∗ \bf y_{\mathit k+1}^{*} yk+1带入到子问题(2)中,求解问题(2)得到最优解 ( u k + 1 ∗ , π k + 1 ∗ ) (u_{ k+1}^{*},\pi_{ k+1}^{*}) (uk+1,πk+1) 和最优值 O ( y k + 1 ∗ ) \mathcal O(\bf y_{\mathit k+1}^{*}) O(yk+1),进而可以构造新的割平面。因此,迭代的引入割平面(3),计算主问题(1),上届和下界逐渐收敛到问题(1)的最优解。

    计算复杂度[1]
    命题1:如果不确定集合 U \bf U U是多面体,用 p p p表示极点的数量,如果 U \bf U U是离散点集,用 p p p表示集合的势(集合中元素的数量)。用 q q q表示多面体 { π : G T π ≤ b , π ≥ 0 } \{\pi: \bf G^{\rm T}\pi \leq b, \pi \geq 0 \} {π:GTπb,π0} 的极点数量。Benders对偶算法需要经过 o ( p q ) o(pq) o(pq)次迭代才能求出问题(1)的最优解。

    Benders 对偶割平面法主要的问题是求解问题(2)的双线性规划问题

    4. 列和约束生成(C&CG)算法

    列和约束生成(column-and-constraint generation) 算法是基于以下事实:
    假设 x l \bf x^{\mathit l} xl是不确定性 u = u l u=u_{l} u=ul(一个实例)下 η = max ⁡ u ∈ U min ⁡ x ∈ F ( y , u ) b T x \eta = \max_{u \in \bf U} \min_{\bf x \in F(y,\rm u)} \bf b^{\rm T}x η=maxuUminxF(y,u)bTx的最优解,则一定存在如下约束成立:
    η ≥ b T x l \eta \geq \bf b^{\rm T}x^{\mathit l} ηbTxl G x l ≥ h − E y − M u l \bf Gx^{\mathit l} \geq h-Ey-M \rm u_{\mathit l} GxlhEyMul
    可以根据以上约束构造割平面,形成C&CG算法。

    Step 1 :设置 L B = − ∞ \rm LB=-\infty LB= U B = + ∞ \rm UB=+\infty UB=+,索引 k = 0 k=0 k=0,集合 O = ∅ \bf O=\emptyset O=
    Step 2: 求解如下主问题:
    M P 2 : min ⁡ y c T y + η (5) \rm MP_{2}: \min_{\bf y } \bf c^{\rm T}y+ \eta \tag{5} MP2:ymincTy+η(5) s . t . A T y ≥ d , y ∈ S y \rm s.t. \quad \bf A^{\rm T}y \geq d,y \in S_{y} s.t.ATyd,ySy η ≥ b T x l , ∀ l ∈ O \eta \geq \bf b^{\rm T}x^{\mathit l}, \forall \mathit {l \in \bf O} ηbTxl,lO G x l ≥ h − E y − M u l ∗ ∀ l ≤ k \bf Gx^{\mathit l} \geq h-Ey-M \rm u_{\mathit l}^* \forall \mathit {l \leq k} GxlhEyMullk y ∈ S y , η ∈ R , x l ∈ S x    ∀ l ≤ k \bf y \in S_{y}, \eta \in \Bbb R, x^{\mathit l} \in S_{x} \; \forall \mathit {l \leq k} ySy,ηR,xlSxlk
    求出最优解 ( y k + 1 ∗ , η k + 1 ∗ , x 1 ∗ , ⋯   , x k ∗ ) (\bf y_{\mathit k+1}^*,\eta_{\mathit k+1}^*,x^{\mathit 1*},\cdots,x^{\mathit k*}) (yk+1,ηk+1,x1,,xk),更新下界 L B = c T y k + 1 ∗ + η k + 1 ∗ \rm LB=\bf c^{\rm T}y_{\mathit k+1}^{*}+\eta_{\mathit k+1}^{*} LB=cTyk+1+ηk+1

    Step 3 :代入 y = y k + 1 ∗ \bf y=y_{\mathit k+1}^* y=yk+1,求解如下子问题:
    S P 2 : O ( y ) = max ⁡ u ∈ U min ⁡ x ∈ F ( y , u ) { b T x : G x ≥ h − E y − M u , x ∈ S x } (6) \rm SP2: \mathcal O(\bf y)= \rm \max_{u \in \bf U} \min_{\bf x \in F(y,\rm u)} \{ \bf b^{\rm T}x :\bf Gx \geq h-Ey-M \rm u, \bf x \in S_{x} \} \tag{6} SP2:O(y)=uUmaxxF(y,u)min{bTx:GxhEyMu,xSx}(6)
    更新上界 U B = min ⁡ { U B , c T y k + 1 ∗ + O ( y k + 1 ∗ ) } \rm UB=\min\{UB,\bf c^{\rm T}y_{\mathit k+1}^{*}+\mathcal O(\bf y_{\mathit k+1}^{*})\} UB=min{UB,cTyk+1+O(yk+1)}

    Step 4 : 如果 U B − L B ≤ ϵ \rm UB-LB\leq \epsilon UBLBϵ, 返回 y k + 1 ∗ \bf y_{\mathit k+1}^* yk+1,程序终止。否则:
    (a) 如果 O ( y k + 1 ∗ ) < + ∞ \mathcal O(\bf y_{\mathit k+1}^{*}) < +\infty O(yk+1)<+,添加变量 x k + 1 \bf x^\mathit {k+1} xk+1,添加如下约束:
    η ≥ b T x k + 1 (7) \eta \geq \bf b^{\rm T}x^{\mathit {k+1}} \tag{7} ηbTxk+1(7) G x k + 1 ≥ h − E y − M u k + 1 ∗ (8) \bf Gx^{\mathit {k+1}} \geq h-Ey-M \rm u_{\mathit {k+1}}^* \tag{8} Gxk+1hEyMuk+1(8)
    到问题(5)中。其中 u k + 1 ∗ u_{\mathit {k+1}}^* uk+1是问题(6)在 y = y k + 1 ∗ \bf y=y_{\mathit k+1}^* y=yk+1下的最优场景(不确定性),对问题(6)可以利用数据库(Call the oracle to solve subproblem SP2)进行枚举求得。
    然后,更新 k = k + 1 k=k+1 k=k+1,集合 O = O ⋃ k + 1 \bf O= O \bigcup {\mathit {k+1}} O=Ok+1,跳转至步骤Step 2

    (b) 如果 O ( y k + 1 ∗ ) = + ∞ \mathcal O(\bf y_{\mathit k+1}^{*}) =+\infty O(yk+1)=+ (对于某些 u ∗ ∈ U u^*\in \bf U uU,如果第二阶段决策 O ( y k + 1 ∗ ) \mathcal O(\bf y_{\mathit k+1}^{*}) O(yk+1)不可行(infeasible),则把 O ( y k + 1 ∗ ) \mathcal O(\bf y_{\mathit k+1}^{*}) O(yk+1)记为 + ∞ +\infty +),添加变量 x k + 1 \bf x^\mathit {k+1} xk+1,添加如下约束:
    G x k + 1 ≥ h − E y − M u k + 1 ∗ (9) \bf Gx^{\mathit {k+1}} \geq h-Ey-M \rm u_{\mathit {k+1}}^* \tag{9} Gxk+1hEyMuk+1(9) 到问题(5)中。其中 u k + 1 ∗ u_{\mathit {k+1}}^* uk+1是问题(6)在 y = y k + 1 ∗ \bf y=y_{\mathit k+1}^* y=yk+1下不可行的不确定性 u u u的值。
    然后,更新 k = k + 1 k=k+1 k=k+1,跳转至步骤Step 2

    对于步骤Step 4(a)的约束(7)和(8)被称为最优割(optimality cuts),而Step 4(b)的约束(9)被称为可性割(feasibility cuts)。对于可行割不是很明白,虽然在某些 y = y k + 1 ∗ \bf y=y_{\mathit k+1}^* y=yk+1下不可行,但是仍然是其中一个不确定性 u k + 1 ∗ u_{\mathit {k+1}}^* uk+1对二阶段决策的一个反映,因为二阶段是包含所有的不确定性。 不知以上理解是否正确。 由于约束(7)对于不可行的场景仍然是成立的,此时的步骤4(a)和4(b)可以合并,因此可以用统一的方法和程序去处理最优性和可行性。

    由于生成的割平面是由第二阶段决策变量(wait-and-see decision variables/recourse decision variables)以二阶段决策约束的形式定义的,整个过程其实就是列和约束生成,其中列生产是指在主问题中添加第二阶段决策变量,约束生成是指添加割平面约束。

    C&CG算法的复杂性
    命题2:如果不确定集合 U \bf U U是多面体,用 p p p表示极点的数量,如果 U \bf U U是离散点集,用 p p p表示集合的势(集合中元素的数量)。C&CG算法需要经过 o ( p ) o(p) o(p)次迭代才能求出问题(1)的最优解。

    C&CG算法与Benders对偶的区别:
    – (1) 主问题中决策的决策变量。C&CG算法每次迭代都添加决策变量 x l \bf x^\mathit l xl,而Benders对偶每次迭代决策变量不变。

    – (2)计算复杂度。由以上两个命题可以看出,在( the relatively complete recourse assumption)假设下,C&CG算法具有更低的复杂度。

    – (3)求解问题的能力。Benders分解要求第二阶段的决策问题为行性规划问题,C&CG算法对于第二阶段优化问题的变量的类型不敏感,可以是混合整数规划问题。

    5 存在的难点

    以上两种算法存在的难点在于:Benders对偶算法求解子问题(2)的双线性规划;C&CG算法求解子问题(6)。

    针对相对简单的多面体不确定性集,一般使用外部近似算法(outer approximation algorithm)和混合整数线性重构(mixed integer linear reformulation)两种方法求解。 第一种是求解SP1的启发式算法。 第二种是使用不确定性集的特殊结构,将双线性规划SP1转换为等效的混合整数线性规划。 文献[1] 使用经典的Karush–Kuhn–Tucker(KKT)条件来处理一般的多面体不确定性集,只要( the relatively complete recourse assumption)假设成立即可。文献[1]对于问题(6)SP2,通过引入对偶变量、利用KKT、结合大M方法,将鲁棒优化问题(6)转化为确定性的整数线性规划问题,再利用现成的求解器进行求解。具体转化就不翻译了,自己没看懂。

    文献[2]中表述:根据文献[3]的结论,问题(2)的双线性规划,变量 u u u的最优解为不确定集合 U U U的极点。对于多面体的不确定集合,其极点是有限的,需要找出所有的极点,然后通过枚举就可以求出最优的 u u u。同样根据文献[4],在问题(2)达到最优时,变量 u u u 和对偶变量 π \pi π取值总是其各自可行集的极点,因此也需要求出 π \pi π的极点。如果变量 u u u π \pi π的维数比较大的话,枚举的复杂度仍然比较高。

    对于问题(6)本实质上是单阶段的RO问题,可以使用求解一般RO的求解器进行求解。但是它们与传统的RO仍有区别,不论是问题(2)还是(6)都需要求出具体的不确定性 u u u的值。可以认为,传统的线性RO其最大的不确定性,在不确定性集合的极点处取得,因此还是需要计算不确定集合 U U U的极点。先使用单阶段RO求解出决策变量 x l \bf x^{\mathit l} xl,然后在枚举所有的 U U U的极点,找到满足临界约束条件的点,应该就是具体的 u u u。不知理解是否正确,后面有时间再写代码吧。

    参考文献
    [1] Zeng B , Zhao L . Solving Two-stage Robust Optimization Problems by A Constraint-and-Column Generation Method[J]. Operations Research Letters, 2013, 41(5):457-461.
    [2]刘一欣, 郭力, 王成山. 微电网两阶段鲁棒优化经济调度方法[J]. 中国电机工程学报, 2018, 038(014):4013-4022.
    [3] D. Bertsimas, E. Litvinov, X.A. Sun, Jinye Zhao, Tongxin Zheng, Adaptive robust optimization for the security constrained unit commitment problem, IEEE Transactions on Power Systems 28 (1) (2013) 52–63.
    [4] Bo Zeng. Solving Two-stage Robust Optimization Problems by A Constraint-and-Column Generation Method. 2011. http://www.optimization-online.org/DB_FILE/2011/06/3065.pdf

    展开全文
  • yalmip求解鲁棒优化

    千次阅读 多人点赞 2020-04-23 22:16:16
    使用yalmip求解鲁棒优化前言鲁棒优化简介yalmip实操求解优化问题示例代码结果总结 前言 记录一下早起夭折的研究想法。想使用鲁棒优化(robust optimization)解决整数资源规划问题。目标函数和约束条件都很简单, ...

    前言

    记录一下早期夭折的研究想法,想使用鲁棒优化(robust optimization,RO)解决整数变量的资源分配问题。目标函数和约束条件都很简单, 但是含有随机变量。由于随机变量的分布未知,在此考虑使用鲁棒优化RO进行资源分配,具有更好地鲁棒性,即对变化具有更好包容性。如果能够得到随机变量的均值和方差,使用鲁棒优化资源分配十分完美。
    但是对于随机变量,自己又没有实际的数据,无法得到其均值和方差,也无从进行数据拟合,进行概率分布检验(卡方检验等)。最终的想法也就夭折了。或许夭折的想法也有意义,在此记录,以便对看到的人有启发。

    鲁棒优化简介

    鲁棒优化是含有不确定参数的优化问题 [1],同随机优化不同。随机优化的不确定参数是具有确定性概率分布的随机变量。而鲁棒优化的不确定性,是指在优化问题中相关不确定参数位于确定的集合范围内,没有确定的概率分布,这里的参数可以是目标函数的系数,也可以是约束条件的系数。鲁棒优化追求即便是在最坏情况下(worst case),其得出的解仍然满足约束条件,不可违背。
    鲁棒优化对于数学功底好的同学来说,写论文很顺畅。因为鲁棒优化一般都可以转换为确定性的对等式(Robust counterpart),再使用确定的求解方法求解。

    yalmip

    yalmip类似python的第三方库,在MATLAB环境下运行,支持多种优化求解器,使得求解优化问题十分简单方便。使用yalmip求解鲁棒优化参考[2],yalmip的使用可以参考[3]。

    实操求解

    优化问题

    在这里插入图片描述
    示例优化问题如上图所示,12个整数优化变量,3个不确定参数。在该示例中,假设不确定集合为box类型(即箱型,每个不确定参数都有确定上下界)。以上示例可以很简单的转化为确定性的线性规划问题。

    示例代码

    %% 2019-7-1 by WDL
    % 使用鲁棒优化建模分析
    % 定义整数变量 包含优化变量和随机变量
    clc;clear all
    %step1 变量定义
    x = intvar(12, 1);%优化变量 intvar定义整型优化变量12行1列
    w = intvar(3, 1);%随机变量
    %step2 参数设置 
    Ta=150; Tb=150; Tc=150;  
    Na=400;Nb=400;Nc=400;
    dt=1;%时间间隔
    
    %添加约束条件
     F = [x(1)+x(2)+x(3)+x(4)<=Na,...
         x(5)+x(6)+x(7)+x(8)<=Nb,...
         x(9)+x(10)+x(11)+x(12)<=Nc,... %约束条件(1)-(3)
         x(1)>=w(1)*dt+Ta>=0,...
         x(5)>=w(2)*dt+Tb>=0,...
         x(9)>=w(3)*dt+Tc>=0,...%约束条件(4)-(6)
         x>=50]; %非负约束
    %设置不确定集合,此示例为box类型 
    % W = [0<=w(1)<=40,0<=w(2)<=40,0<=w(3)<=40,uncertain(w)];
     W = [-20<=w<=20,uncertain(w)]; %uncertain(w)指明不确定性
     options = sdpsettings('solver','cplex');   %设置求解器为cplex
     objective = sum(x); %目标函数 最小化优化变量累加和
     sol=optimize(F + W,objective,options) %优化求解
     Xc=value(x) %解
     Oc=value(objective)%目标值
     
    
     %% 不考虑鲁棒优化
     x=intvar(12,1);
     F1 = [x(1)+x(2)+x(3)+x(4)<=Na,...
         x(5)+x(6)+x(7)+x(8)<=Nb,...
         x(9)+x(10)+x(11)+x(12)<=Nc,... %约束条件(1)-(3)
         x(1)>=w(1)*dt+Ta>=0,...
         x(5)>=w(2)*dt+Tb>=0,...
         x(9)>=w(3)*dt+Tc>=0,...%约束条件(4)-(6)
         x>=50]; %非负约束
     objective1 = sum(x);
     options = sdpsettings('solver','cplex');   %设置求解器为cplex
     sol1=optimize(F1,objective1,options)
     Xc1=value(x) 
     Oc1=value(objective1)
     
    figure %作图
    X=[Xc,Xc1]
    bar3(X)
    

    结果

    (1)鲁棒优化
    Oc=960
    Xc=[170 50 50 50 170 50 50 50 170 50 50 50]’
    (1)确定性优化
    Oc1=600
    Xc1=[50 50 50 50 50 50 50 50 50 50 50 50]’
    在这里插入图片描述

    总结

    使用yalmip时,最好安装相应的求解器,例如cplex或者gurobi。

    参考文献
    [1] Gorissen, Bram L., et al. “A Practical Guide to Robust Optimization.” Omega-International Journal of Management Science, vol. 53, 2015, pp. 124–137.
    [2]Robust optimization. https://yalmip.github.io/tutorial/robustoptimization/
    [3]yalmip + lpsolve + matlab 求解混合整数线性规划问题(MIP/MILP). https://www.cnblogs.com/kane1990/p/3428129.html

    展开全文
  • 综合考虑SNOP的功能特性与运行边界,建立了面向配电网弹性提升的SNOP配置三层防御-攻击-防御优化模型,并提出了求解该模型的两阶段鲁棒优化方法——列约束生成(CCG)算法。以IEEE 33节点为例,对所述模型和求解算法...
  • 希望可以帮做鲁棒优化相关的同行们省去手动求对偶和Robust Counterpart,然后吭哧吭哧编程的麻烦。本文将简单介绍XProg(内容主要来自Xprog的用户手册)。Julia语言里有为鲁棒优化开发的JuMPeR。个人使用体验是XProg更...

    此文简单介绍AROMA的1.0版本:XProg。希望可以帮做鲁棒优化相关的同行们省去手动求对偶和Robust Counterpart,然后吭哧吭哧编程的麻烦。

    本文将简单介绍XProg(内容主要来自Xprog的用户手册)。Julia语言里有为鲁棒优化开发的JuMPeR。个人使用体验是XProg更简洁,功能更齐全:可以直接编程最新的分布式鲁棒优化(DRO)的相关模型,而JuMPeR主要适用于传统的鲁棒优化模型,而且似乎现在处于无人维护的状态。Julia入门科普请出门左转到 @覃含章的覃含章:Julia:简单易用的数值计算/优化编程语言

    https://zhuanlan.zhihu.com/p/39253127

    XProg由Dr. Peng Xiong开发,旨在用最简单直观的语言进行鲁棒优化模型的求解。最新版本的AROMA由Prof. Melvyn Sim, Dr. Peng Xiong 和Dr. Zhi Chen开发。XProg只有Matlab版;AROMA将会增加 Python 版本。两者都可通过调用Gurobi,Cplex, MOSEK等求解器进行求解。

    XProg

    先上一个多产品的分布式鲁棒报童模型的求解,直观感受一下。

    其中,模糊集(ambiguity set)

    为,

    求解程序如下:

    对于里面的extended模糊集和extended LDR的概念,请参考

    Adaptive Distributionally Robust Optimization

    pubsonline.informs.org

    由上面的例子可以看出,XProg提供了一种照着原始模型编出来的简洁高效编程方法。它已经把求对偶求robust counterpart等步骤全部内嵌到程序里去了。这大大地减少了之前做RO或者DRO的问题的时候,往往得先手动求对偶,然后再用C, C++, Java,Matlab等求解的那份酸爽!

    以下直接举例来阐明XProg的用法,具体语法请参阅XProg包里面的“用户手册”。以下所举的例子大都在安装包中的“examples”。

    1、 线性规划 (Linear Programming)

    对于任意的 线性规划 :

    实现起来特别方便:

    比如下面这个 线性规划 :

    只需要在程序开始赋值:

    解出来结果如下:

    2、 混合整数规划(Mixed Integer Programming)

    对于混合整数规划,只需在定义变量时注明是二进制变量(binary variable)还是整数变量就可:

    3、 随机规划

    XProg 还可以对随机规划问题进行求解。不同场景下的决策可以用cell array实现,举例如下(编者实在太懒。。。问题描述请参考用户手册第15页):

    求解程序如下:

    求解结果如下:

    4、 经典鲁棒优化模型求解

    举例多阶段库存优化模型(问题描述请参考用户手册22页):

    实现程序如下:

    5、 分布式鲁棒优化模型求解

    详见文首的例子。

    鉴于XProg很快就要被功能强大N多的AROMA取代,本文特别精简地介绍了XProg这个简单实用的鲁棒优化(RO, DRO)编程语言。AROMA进一步对XProg进行了精简,但是功能却更加强大了。等AROMA正式上线之后,再写一篇详细的入门介绍文章。

    展开全文
  • 然后,分析了鲁棒优化模型,随机优化模型和确定性优化模型之间的关系,并提出了种算法:枚举法和遗传算法。 这种算法的代码由Visual Studio 6.0上的Visual C ++实现。 代码中使用了优化软件Lingo 9.0来解决确定...
  • 优化|鲁棒优化基础

    2021-12-28 14:02:55
    本文讲解了鲁棒优化的基础内容,内容主要分为3个部分:1.不确定性最优化。2.不确定集。3.对等式转换理论。在末尾附上了一个简单的算例及代码便于读者理解。该文也是【运筹OR帷幄】鲁棒优化电子书系列的文章内容之一...
  • 之前,我们实现了手术分配的确定性优化和随机规划模型,但是在实践中,一个普遍的问题是许多医疗机构没有足够的数据来构建上文中用到的随机规划模型(要求已知服务时长的概率分布)。大多数情况下医疗机构仅仅能够...
  • CCG中券资本网站源码是aspcms内核二次开发版,功能比较多,而且在官方的基础上也做了很多改进,比如自动内链、自动生成静态、SQL防注入等等,这套源码在windows+iis的环境下就可以正常运行,但是IIS必须是完整的IIS...
  • 根据组合优化理论,充分利用遗传算法、蚁群算法的优化点,提出了一种两阶段式的物流配送路径优化方法(GA-ACO)。利用遗传算法迅速找到物流配送路径优化问题的初始解,初始解生成蚁群算法的初始信息素分布,通过蚁群...
  • MySQL 面试题

    万次阅读 多人点赞 2019-09-02 16:03:33
    因为 MySQL 还会有部分内容和运维相关度比较高,所以本文我们分成部分【开发】【运维】部分。 对于【开发】部分,我们需要掌握。 对于【运维】部分,更多考验开发的知识储备情况,当然能回答出来是比较好的...
  • matlab人脸识别论文

    万次阅读 多人点赞 2019-10-11 17:41:51
    BP算法主要包括阶段: 2.2.1向前传播阶段 ①从样本集中取一个样本(Xp,Yp),将Xp输入网络,其中Xp为输入向量,Yp为期望输出向量。 ②计算相应的实际输出Op。在此阶段,信息从输入层经过逐级的变换,传送到...
  • 图像分割综述

    万次阅读 多人点赞 2019-07-09 22:03:48
    只考虑像素点灰度值本身的特征,一般不考虑空间特征,因此对噪声比较敏感,鲁棒性不高。 从前面的介绍里我们可以看出,阈值分割方法的最关键就在于阈值的选择。若将智能遗传算法应用在阀值筛选上,选取能最优分割...
  • 注意:本篇博客的重点是介绍g2o,所以不会去为非线性化方法做太多的铺垫,因此要想理解以下代码和思路,需要你具备一些非线性优化的理论知识,至少要明白什么是非线性优化,它主要是为了做什么,它是怎么实现的?...
  • RoBERTa:一种鲁棒优化BERT预训练的方法 文章目录RoBERTa:一种鲁棒优化BERT预训练的方法前言背景实验静态 VS 动态 Masking输入形式与NSP任务更大的batch_size更大的BPE词汇表总结使用最后 前言 本文提出了一种...
  • EAST算法详解

    万次阅读 多人点赞 2018-06-18 14:54:54
    EAST:高效而准确的场景文本检测 1. 摘要 以前的场景文本检测方法已经在各种基准测试中取得了良好的效果...这是因为文本检测的整体性能取决于pipelines中多个阶段和各部分的相互作用,而简单的pipeline能够集中精...
  • 文章目录初识随机规划 (2):两阶段随机规划模型两阶段随机规划模型生产计划的例子参数的不确定性随机规划模型(Stochastic Programming)Python调用Gurobi求解随机规划模型参考文献OlittleRer 初识随机规划 (2):...
  • 无线传感器网络复习大纲

    千次阅读 多人点赞 2019-04-30 10:31:40
     ①、网络性能的优化:在MAC协议中,WSN的关键性能指标不是独立存在的,而是互相影响的,在提高一种性能的同时可能会降低其他性能。现在所提出的MAC协议往往只考虑一种或种性能指标,没有综合各种指标使之达到更...
  • 蚁群算法是一种模拟蚂蚁群体智能行为的仿生优化算法,具有较强的鲁棒性、优良的分布式计算机制、易于与其他方法相结合等优点。蚁群算法用来求解旅行商问题(Traveling Salesman Problem,TSP)表现出很大的优越性。...
  • 代码地址:https://github.com/mli0603/stereo-transformer 主要工作与贡献 提供了一个完整的具有闭环、全局优化和重新定位的SLAM系统,所有这些都基于最先进的深度CNN的特征,在环境和视角变化方面比手工设计特征的...
  • 第二部分:匹配、鲁棒优化和应用 VisualOdometry:PartII: Matching, Robustness, Optimization, and Applications TaylorGuo, 2016/5/15, 第二部分讲解特征匹配、鲁棒性和应用。主要是视觉里程计中的各种点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,296
精华内容 2,918
关键字:

两阶段鲁棒优化代码