gurobi学习笔记(一)

Gurobi简介

Gurobi是由美国Gurobi公司开发的新一代大规模数学规划优化器,适用于LP、QP等场景,提供了C,C++,java,python,MATLAB,R语言等多种语言的接口。

eclipse配置gurobi

windows下载gurobi后,可以在gurobi文件夹中找到gurobi.jar,在eclipse中右键单击项目 -> properties -> java build path -> libraries -> add external jars,之后选择gurobi.jar即可(当然也有其他的导入jar包的方式)。

环境与模型

使用gurobi之前,需要import gurobi.*。
每次调用gurobi时都需要建立一个gurobi的model,而这个model又是建立在gurobi的环境基础上的。目前我对这些的理解还非常有限,只知道在使用gurobi之前,需要先执行如下语句:

GRBEnv env = new GRBEnv("name.log"); //不知道环境是否必须为.log文件
GRBModel model = new GRBModel(env); //以刚才建立的环境为参数建立gurobi模型

一般一个程序中只需要一个GRBEnv,如果使用了多个的话,文档中建议在结束时调用GRBEnv.dispose进行回收处理。

添加变量

添加变量需要用到GRBModel.addVar()(或GRBModel.addVars(),如果一次添加多个变量)这个方法,具体代码如下:

GRBVar x = model.addVar(0.0,Double.MAX_VALUE,1.0,GRB.CONTINUOUS,"u" + i);
GRBVar y = model.addVar(0.0,1.0,1.0,GRB.BINARY,"VarY");

addVar这个函数有几种不同的重载,这里,第一个和第二个参数分别代表变量的上界和下界,第三个参数是objective coefficient,目前我还不了解它的意思。第四个参数为变量的类型,这里用GRB.CONTINUOUS代表连续类型,还有GRB.INTEGER,GRB.BINARY等多种其他类型可以使用。第五个参数是String类型,代表变量名。

添加约束条件

GRBModel.addConstr()可以为model添加约束条件,其定义为:

GRBConstr addConstr( GRBLinEpr lhsExpr, char sense, GRBLinExpr rhsExpr, String name)
GRBConstr addConstr(GRBLinExpr, lhsExpr, char sense,GRBVar rhsVar, String name)
GRBConstr addConstr(GRBLinExpr lhsExpr, char sense, double rhsVar, String name)
...

其中的GRBLinEpr是线性表达式,有addConstant(double c),addTerm(double coeff, GRBVar var)等方法,分别可以向线性表达式中添加常量或者变量,其中coeff是变量的系数。
在有线性表达式后,可以用该线性表达式constraints。生成constraints的格式更加丰富,上面的定义只是其中的几个例子。
在上面的代码中,lhsExpr和rhsExpr分别为限制中左边和右边的表达式。sense的选择有GRB.LESS_EQUAL,GRB.EQUAL和GRB.GREATER_EQUAL。代表约束条件。

设置目标与计算

在添加了变量和限制条件之后,可以为gurobi设置一个计算目标,该方法的定义如下:

    GRBModel.setObjective(GRBExpr expr, int sense)

其中,sense有GRB.MINIMIZE和GRB.MAXIMIZE两种,分别对应求目标的最小值和最大值。
计算语句:

    model.optimize();

输出结果

gurobi的变量可以通过get函数讲自身的值返回程序。

    GRBVar.get():
    char get(GRB.CharAttr attr);
    double get(GRB.DoubleAttr attr);
    ...

使用实例:

    u[i] = var[i].get(GRB.DoubleAttr.X);  //获取GRB变量var[i]的浮点值,并赋给u[i]

参考文档

通过这次对gurobi的学习,我发现对于学习新软件或语言来说,最重要的就是多阅读程序文档,gurobi的官方文档位置如下:
http://www.gurobi.com/documentation/

  • 16
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值