XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

栏目: 后端 · 发布时间: 6年前

内容简介:此文简单介绍AROMA的1.0版本:XProg。希望可以帮做鲁棒优化相关的同行们省去手动求对偶和Robust Counterpart,然后吭哧吭哧编程的麻烦。本文将简单介绍XProg(内容主要来自Xprog的用户手册)。Julia语言里有为鲁棒优化开发的JuMPeR。个人使用体验是XProg更简洁,功能更齐全:可以直接编程最新的分布式鲁棒优化(DRO)的相关模型,而JuMPeR主要适用于传统的鲁棒优化模型,而且似乎现在处于无人维护的状态。Julia入门科普请出门左转到 @覃含章的覃含章:Julia:简单易

此文简单介绍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

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

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

其中,模糊集(ambiguity set) XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言 为,  

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

求解程序如下:

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

对于里面的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)

对于任意的 线性规划 :     

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

实现起来特别方便:

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

比如下面这个 线性规划 :   

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

只需要在程序开始赋值:

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

解出来结果如下:

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

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

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

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

3、 随机规划

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

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

求解程序如下:

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

求解结果如下:

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

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

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

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

实现程序如下:

XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言

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

详见文首的例子。

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


以上所述就是小编给大家介绍的《XPROG: 简单实用的鲁棒优化(RO, DRO)编程语言》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Design for ROI

Web Design for ROI

Lance Loveday、Sandra Niehaus / New Riders Press / 2007-10-27 / USD 39.99

Your web site is a business--design it like one. Billions of dollars in spending decisions are influenced by web sites. So why aren't businesses laser-focused on designing their sites to maximize thei......一起来看看 《Web Design for ROI》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具