设施选址优化 —— 用 Benders 分解搞定复杂难题

前言

上一期我们对设施选址问题有了一定理解,这里继续用Benders解决经典的设施选址问题,当然这一期难度会上升一点,也是为了对Benders更加熟悉。

概述

简单说说吧:Benders分解方法,主要就是先写出初始问题,然后划分主问题与子问题,写出子问题对偶问题,然后考虑对偶问题的无可行域,进而延伸出极点与极射线,最后变形问题形式,利用代码求解。

问题背景

灾害应急中的设施选址挑战:

        在灾害应急响应中,合理选址 Relief设施 关乎救援效率与成效。需在灾害前决定设施位置及规模,以在灾害时快速满足各地需求。此决策受众多因素影响,涉及需求预测、成本控制与资源分配等复杂问题。

问题描述:多目标优化的综合考量

​​​​​​​

Benders分解

建立初始问题:构建全面优化模型

        初始问题是一个混合整数规划模型,综合考虑设施选址、采购、运输和库存管理等方面。目标函数旨在最小化总成本,包括设施建设和采购成本(第一阶段),以及运输、存储和惩罚成本(第二阶段,涉及需求不确定性)。约束条件涵盖采购量限制、设施开设规则、供需平衡等。

        目标函数(1)最小化总体成本,总体成本包括第一阶段的建设成本和采购成本,以及第二阶段在需求不确定情况下的预期运输成本、存储成本和惩罚成本。约束条件(2)限制采购量不得超过设施的存储容量。约束条件(3)限制每个地点最多只能开设一个尺寸类别的设施。约束条件(4)计算每种情景下每个设施的救济物资剩余数量。约束条件(5)计算每种情景下每个地点的短缺数量。约束条件(6)和(7)定义了变量的完整性。

主问题(MP):

s.t.

在上述模型(M1)中,我们将变量 xi,l​ 和 ya,i​ 固定为 x^i,l​ 和 y^​a,i​,从而得到 Benders 子问题(SP)。我们定义 H(x,y) 为在给定第一阶段变量(xi,l​ 和 ya,i​)特定值的情况下,模型(M1)中第二阶段子问题的期望值。

子问题(SP)

接着,我们引入对偶变量

子问题的对偶问题(DSP)

写出对偶问题,我们通过极点与极射线的考虑,就能写出主问题的变式,这也是为什么上文在主问题的论述中不需要过多文笔。

主问题变式(MP)

在模型 [MP] 中,约束条件(18)和(19)分别表示最优性切割和可行性切割。 和 表示在迭代 过程中,由模型 [DSP] 的约束所定义的可行区域的极点。 和 表示在迭代 过程中,由模型 [DSP] 的约束所定义的可行区域的极射线。从空的极点和射线子集开始,Benders 算法的每次迭代首先解决 [MP] 问题。然后,使用 [MP] 的解来解决 [DSP]。如果它可行且有界,则获得一个最优解,并将最优性切割(18)添加到 [MP] 中;当它无界时,则将可行性切割(19)添加到 [MP] 中。

​​​​​​​附上我手写版思路过程:

Benders 分解求解流程:迭代优化,逼近最优解

(一)初始化

初始化时,主问题仅包含基本约束(采购量限制、单一尺寸规则和变量完整性),无切割约束。子问题尚未生成任何切割信息。

(二)迭代步骤

  1. 求解主问题:先解主问题,得设施开设和采购策略(第一阶段变量的值),为子问题提供输入。

  2. 构造并求解子问题:基于主问题解,构造子问题,求解得运输、剩余、短缺量及对应成本。

  3. 分析子问题结果

    • 情况一:子问题有界且可行:得子问题最优解,据此生成最优性切割约束,加入主问题。

    • 情况二:子问题无界:生成可行性切割约束,加入主问题,排除不可行解。

  4. 重复迭代:回主问题,重复上述流程。切割约束不断细化主问题,使其逐步逼近整体最优。

(三)终止条件

当主问题解在若干次迭代后不再显著变化,或满足预设的收敛精度、迭代次数等终止条件时,停止迭代。此时主问题解即为原问题的近似最优解。

方法优势:Benders 分解的 “取胜之道”

  • 问题简化:将复杂问题拆解,降低求解难度,提高效率。

  • 信息反馈:子问题反馈主问题,优化决策。

  • 适应性:有效处理需求不确定等复杂情况,灵活调整决策。

Benders 分解,优化决策的利器。Benders 分解法为应对复杂问题提供了高效解决方案。在设施选址优化中,该方法助力合理布局设施,平衡成本与效率,提升灾害应急响应能力,是运筹学领域中的关键工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值