首页>软件资讯>常见问题

常见问题

优化求解器介绍Gurobi

发布时间:2025-05-13 15:47:17人气:201

Gurobi是由美国 Gurobi Optimization 公司开发新一代大规模优化器。Gurobi已经成长为支持混合整数线性规划、混合整数二阶锥和二次凸规划、混合整数二次非凸和双线性规划、混合整数非线性规划的全局精确算法数学规划求解器,并且保持商业求解器的性能领导地位。

Gurobi介绍Gurobi 是全局精确优化器,支持的模型类型包括:

  1. 线性约束和目标模型(连续变量、混合整数,全局精确最优);2. 二阶锥模型 (连续变量、混合整数,全局精确最优);


3. 二次凸约束和目标模型(连续变量、混合整数,全局精确最优);4. 二次非凸(双线性、二次等式约束、分母带变量、高阶多项式等)约束和目标模型(连续变量、混合整数,全局精确最优);

Gurobi介绍.jpg

5. 非线性模型(除式、高阶多项式、指数、对数、三角函数、范数、逻辑函数等)(连续变量、混合整数,全局精确最优);

6. 从Gurobi 12开始,支持直接处理(混合整数)非线性规划问题,并提供全局MINLP最优性:使用Gurobi的API直接声明非线性约束,并求解混合整数非线性规划(MINLP)问题以达到全局最优解。对于以上模型,可以叠加的功能包括但不限于:

(1)约束和目标中带有最大、最小、绝对值等数学函数,或者带有 AND、OR、INDICATOR 逻辑条件的模型 (连续变量、混合整数);

(2)多目标优化;

(3)需要获得部分或者全部可行解或者最优解的模型;

(4)不可行约束冲突分析;

(5)优化参数自动调优功能;

(6)分布式计算和多并发计算。Julia配置Gurobi在Julia的启动文件startup.jl中添加# On Windows

ENV["GUROBI_HOME"] = 

"C:\gurobi1200\win64"

# Opt-out of using Gurobi_jll

ENV["GUROBI_JL_USE_GUROBI_JLL"] = "false"再回到命令行里,输入import Pkg

Pkg.add("Gurobi")

Pkg.build("Gurobi")详细参考,可以主页Gurobi.jl[3].你可以使用JuMP来调用Gurobi,如下命令:using JuMP, Gurobi

model = Model(Gurobi.Optimizer)

set_attribute(model, "TimeLimit", 100)

set_attribute(model, "Presolve", 0)来个示例using Gurobi, JuMP

model = Model(Gurobi.Optimizer)

@variable(model, x[1:2] >= 0)

@objective(model, Min, 2x[1] + 3x[2])

@constraint(model, 4x[1] + 3x[2] <= 24)

optimize!(model)

println("Solution: ", value.(x))

println("Objective Value: ", 

objective_value(model))除了以上方式使用Gurobi,推荐使用以上的方式,但我们还可以使用AMPL的nl文件来使用Gurobi,但这种方式会损失很多建模的优势.using AmplNLWriter, JuMP

model = Model(

()->AmplNLWriter.Optimizer(Gurobi, #求解器

["outlev=1","funcnonlinear=1"])#设置参数

)

@variable(model, 0 <= x[1:2] <= 10,Int)

@objective(model, Min, 2x[1] + 3x[2] 

+ abs(x[1]-x[2])#绝对值函数

+ sin(x[1]*x[2]) #三角函数

+ x[1]*x[2]/(1+x[1]^2+x[2]^2))#分式函数

@constraint(model, 4x[1] + 3x[2] <= 24)

@constraint(model, 3x[1] + 5x[2] >= 12)

optimize!(model)

println("Solution: ", value.(x))

println("Objective Value: ", 

objective_value(model))输出的结果,可见



上一条:candence有哪些工具

下一条:购软平台是gurobi中国代理商