鲁棒随机优化变得容易
rsome的Python项目详细描述
RSOME:稳健随机优化变得容易
RSOME(Robust randocial Optimization makey Easy)是一个用于一般建模优化问题的开源Python包。RSOME中的模型是由变量、约束和格式化为N维数组的表达式构造的。这些数组在语法和操作方面与NumPy库一致,包括广播、索引、切片、元素操作和矩阵计算规则等。总之,RSOME为优化模型及其应用的开发提供了一个方便的平台。在
当前版本的RSOME支持确定性线性/二阶锥程序和鲁棒优化问题。求解模型和求解模型集成在求解模型中。基于robust stochastic optimization (RSO) framework和与其他解算器的接口的分布式鲁棒优化建模工具正在开发中。在
简介
安装RSOME和解算器
可以使用pip
命令安装RSOME包:
pip install rsome
RSOME的当前版本需要Gurobi或MOSEK解算器来解决格式化模型。您可以按照these steps完成Gurobi安装。MOSEK解算器可以通过this link中的步骤安装。在
入门
在RSOME中,可以通过使用与NumPy语法一致的高可读性代数表达式来指定模型。下面我们以一个简单的线性规划为例来说明建模和求解优化问题的步骤。在
fromrsomeimportro# Import the ro modeling toolfromrsomeimportgrb_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 constraintmodel.st(5*x+3*y<=30)# Specify the 2nd constraintmodel.st(x+2*y<=16)# Specify the 3rd constraintmodel.st(abs(y)<=2)# Specify the 4th constraintmodel.solve(grb)# Solve the model with Gurobi^{pr2}$
在这个示例代码中,通过调用从rsome.ro
工具箱导入的构造函数Model()
来创建模型对象。基于模型对象,使用方法x
和{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
上面的例子表明,RSOME模型可以通过简单易懂的代数表达式来表示,并且可以将公式化的模型转换为标准形式,然后由Gurobi(或MOSEK)解算器求解。可以通过调用RSOME 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
- 项目
标签: