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

简介: 【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)

👨‍🎓个人主页

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

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

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

💥1 概述

文献来源:

image.gif 编辑

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

原文摘要:

In this paper, we present a column-and-constraint generation algorithm to solve two-stage robust optimization problems. Compared with existing Benders-style cutting plane methods, the column-and- constraint generation algorithm is a general procedure with a unified approach to deal with optimality and feasibility. A computational study on a two-stage robust location-transportation problem shows that it performs an order of magnitude faster.

鲁棒优化(RO)[4 - 6,12,9,10]是近年来处理数据不确定性的一种优化方法。因为它的导出是为了对冲输入数据中的任何扰动,所以(单级)反渗透模型的解往往过于保守。为了解决这一问题,引入并研究了两阶段反渗透(以及更通用的多级反渗透),也称为鲁棒可调或可适应优化,其中第二阶段问题是在第一阶段决策做出并揭示不确定性之后对决策建模。由于建模能力的提高,两级反渗透已经成为一种流行的决策工具。应用包括网络/运输问题[1,16,13],投资组合优化[17]和电力系统调度问题[21,15,8]。

然而,两级反渗透模型的计算非常困难。

如[3]所示,即使是一个简单的两级RO问题也可能是np困难的。为了克服计算负担,研究了两种求解策略。第一种是使用近似算法,这种算法假设第二阶段的决策是不确定性的简单函数,例如仿射函数;参见[7]中的示例。第二类算法寻求按照Benders分解方法推导精确解,即利用第二阶段决策问题的对偶解逐步构造第一阶段决策的值函数[19,21,8,15,13]。我们称之为本德斯-对偶切割平面算法。

在[21]中,我们采用不同的切割平面策略来解决风力供应不确定的电力系统调度问题。该策略不使用第二阶段决策问题的对偶解来创建约束;相反,它在确定的场景的原始空间中动态地生成约束与资源决策变量,这与宾德斯-双过程背后的哲学非常不同。因此,它在[21]中被表示为原始切割算法,但实际上它是一个列-约束生成过程。在这项研究中,我们开发并提出了这个求解程序,在一个通用的设置和基准的弯曲双切割平面程序。

在列-约束生成过程中,生成的变量和约束与两阶段随机规划模型中的变量和约束非常相似。此外,当不确定性集是离散的和有限的,通过枚举集中每个场景的变量和约束,可以构造一个等效的整体优化公式[17]。然而,据我们所知,除了[21]中的工作外,还没有报道过在切割平面过程中使用这些变量和约束来解决两级RO问题的算法。这是该切割平面算法在一般设置中的第一次介绍,并首次从理论上和系统地比较了其与bender -dual切割平面方法的性能。

📚2 运行结果

image.gif 编辑

🎉3 文献来源

部分理论来源于网络

相关文章
|
12天前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
116 26
|
15天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
122 1
|
9天前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
165 104
|
9天前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
231 99
|
8天前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
106 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
9天前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
112 7
|
14天前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
149 2
|
11天前
|
JSON 缓存 开发者
淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 Python 代码实战
本文详解淘宝开放平台taobao.item_get接口对接全流程,涵盖参数配置、MD5签名生成、Python企业级代码实现及高频问题排查,提供可落地的实战方案,助你高效稳定获取商品数据。
|
人工智能 数据挖掘 数据处理
揭秘Python编程之美:从基础到进阶的代码实践之旅
【9月更文挑战第14天】本文将带领读者深入探索Python编程语言的魅力所在。通过简明扼要的示例,我们将揭示Python如何简化复杂问题,提升编程效率。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往高效编码世界的大门。让我们开始这段充满智慧和乐趣的Python编程之旅吧!
|
11月前
|
机器学习/深度学习 数据采集 人工智能
探索机器学习:从理论到Python代码实践
【10月更文挑战第36天】本文将深入浅出地介绍机器学习的基本概念、主要算法及其在Python中的实现。我们将通过实际案例,展示如何使用scikit-learn库进行数据预处理、模型选择和参数调优。无论你是初学者还是有一定基础的开发者,都能从中获得启发和实践指导。
158 2

热门文章

最新文章

推荐镜像

更多