基于阵列数据的鲁棒优化

road的Python项目详细描述


ROAD:基于阵列数据的鲁棒优化

ROAD(Robust Optimization with Array Data)是一个用于一般建模优化问题的开源Python包。道路中的模型是由变量、约束和格式为N维数组的表达式构造的。这些数组在语法和操作方面与NumPy库一致,包括广播、索引、切片、元素操作和矩阵计算规则等。总之,ROAD为优化模型的开发及其应用提供了一个方便的平台。在

当前版本的道路支持确定性线性/二阶圆锥规划和鲁棒优化问题。为求解道路优化模型,集成了Gurobi求解器接口。基于robust stochastic optimization (RSO) framework和与其他解算器的接口的分布式鲁棒优化建模工具正在开发中。在

简介

安装道路和解算器

可以使用pip命令安装ROAD包:


pip install road


当前版本的道路需要Gurobi解算器来求解优化模型。您可以按照these steps完成Gurobi安装。在

道之道

{a3}主要是受一个代数优化工具箱启发而设计的,主要是解决代数优化问题。在开发基于RSO框架的分布式鲁棒优化的MATLAB包RSOME时,我们也学到了很多惨痛的教训。所以在《路》里我们把“道”藏起来,当复活节彩蛋。在

fromroadimportdao
^{pr2}$

入门

ROAD包支持使用与NumPy语法一致的高可读代数表达式指定模型。下面提供了一个非常简单的线性程序示例

并用它来说明求解优化模型的步骤。在

fromroadimportro# Import the ro modeling toolfromroadimportgrb_solverasgrb# Import Gurobi solver interfacemodel=ro.Model('LP model')# Create a Model objectx=model.dvar()# Define a decision variable xy=model.dvar()# Define a decision variable ymodel.max(3*x+4*y)# Maximize the objective functionmodel.st(2.5*x+y<=20)# Specify the 1st constraintsmodel.st(5*x+3*y<=30)# Specify the 2nd constraintsmodel.st(x+2*y<=16)# Specify the 3rd constraintsmodel.st(abs(y)<=2)# Specify the 4th constraintsmodel.solve(grb)# Solve the model with Gurobi
Being solved by Gurobi...
Solution status: 2
Running time: 0.0005s

在这个示例代码中,通过调用从road.ro工具箱导入的构造函数Model()来创建模型对象。基于模型对象,决策变量x和{}通过dvar()方法创建。然后使用这些变量指定目标函数和模型约束。最后一步是调用solve()方法,通过导入的求解器接口grb来解决问题。解决方案完成后,将打印一条显示解决方案状态和运行时间的消息。在

根据Gurobi solution status,状态代码2表明问题已被解决到最优性(受公差限制),并且有一个最佳解决方案。用get()方法可以得到最优解和相应的目标值。在

print('x:',x.get())print('y:',y.get())print('Objective:',model.get())
x: [4.8]
y: [2.]
Objective: 22.4

上面的例子展示了如何用高度可读的代数表达式指定优化模型。该软件包能够将指定的模型转换为标准公式,并由求解器进行识别和求解。在

用户可以通过调用model对象的方法do_math()来检索标准公式。在

formula=model.do_math()print(formula)
Second order cone program object:
=============================================
Number of variables:          3
Continuous/binaries/integers: 3/0/0
---------------------------------------------
Number of linear constraints: 6
Inequalities/equalities:      6/0
Number of coefficients:       11
---------------------------------------------
Number of SOC constraints:    0

我们还提供了一个调试方法show(),将标准公式的信息显示为一个数据帧。在

formula.show()
x1x2x3senseconstants
Obj100--
LC102.51<=20
LC2053<=30
LC3012<=16
LC4-1-3-4<=0
LC5001<=2
LC600-1<=2
Upperinfinfinf--
Lower-inf-inf-inf--
TypesCCC--

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从IBM MQ的JMSException检测可恢复错误   java Lucene6。4.2:找不到类,尝试添加查询。   Java Pdf差异库   在Java中多线程处理我的线程   java将字符串传递给Uri。下载中的parse()   java在列表中查找原语位置   java JPA条件从另一个查询中选择   java中的强制转换和转换   java如何在没有上下文的情况下获取SOAP Web服务(Apache Axis 1.4)的调用客户端的IP地址   java Android IllegalBlockSizeException:解密中最后一个块未完成   java Jersey是否要自定义无效资源路径的错误处理?   如何将JavaCVS web项目转换为基于maven的web项目?   java如何检查通用列表是否与jUnit相等?   arraylist java。util。尝试使用迭代器时发生ConcurrentModificationException错误   使用springsecurity,jsp上的java${u csrf.token}始终为空   sql使用java从临时表中选择数据   spring验证中的java@Notnull和@Pattern无效   java如何使用jQuery将包含对象数组的对象数组传递给Spring MVC控制器?