使用Gurobi命令行界面求解模型


使用Gurobi命令行界面求解模型

解决优化问题的最后一步是将模型传递给Gurobi Optimizer。我们将使用Gurobi命令行界面,因为在解决存储在文件中的模型时,它通常是最简单的界面。

要使用命令行界面,首先需要打开一个允许运行命令行程序的窗口。在Mac系统中,你可以使用终端窗口。(请注意,Gurobi Interactive Shell(之前用于测试您的许可证)可以做到这一点直接接受命令行程序输入)。

Gurobi命令行工具的名称是gurobi_cl.要调用它,请键入gurobi_cl,后面跟着模型文件的名称。例如,如果我们的模型存储在文件中/图书馆/ gurobi912 / mac64 / /数据/例子coins.lp,你可以在命令行窗口中输入以下命令…

> gurobi_cl/图书馆/ gurobi912 / mac64 / /数据/例子coins.lp

这个命令应该产生以下输出…

使用许可文件/Library/gurobi/gurobi.lic
设置参数“LogFile”为“gurobi.log”

Gurobi Optimizer version 9.1.2 build v9.1.2rc0 (linux64)
版权所有(c) 2021, Gurobi狗万app足彩 Optimization, LLC

从文件读取LP格式模型/图书馆/ gurobi912 / mac64/ /数据/ coins.lp例子

读取时间= 0.00秒:4行,9列,16非零优化4行,9列,16非零模型指纹:0xa0c5449c变量类型:4个连续,5个整数(0二进制)矩阵范围[6e-02, 7e+00] Objective范围[1e-02, 1e+00] Bounds范围[5e+01, 1e+03] RHS范围[0e+00, 0e+00] Found启发式解:Objective -0.0000000预解删除1行5列预解时间:0.00s预解:3行4列9非零变量类型:0连续,4整数(0二进制)根松弛:目标1.134615e+02, 2次迭代,0.00秒节点当前节点| |客观界限|工作Expl Unexpl | Obj深度IntInf | |现任BestBd差距/节点时间0 0 0 1 -0.00000 113.46154 113.46154 - 113.4500000 - 0 s H 0 0 - 0 0 0 113.46154 113.46154 - 0.01% 0 1 113.45000 113.46154 0.01% - 0年代探索1节点(2单纯形迭代)在0.00秒内的线程数是8 (8找到最佳解决方案(公差1.00e-04)最佳目标1.134500000000e+02,最佳绑定1.134500000000e+02,间隙0.0000%
有关Gurobi日志文件格式的详细信息可以在Gurobi参考手册.现在,您可以简单地注意到最佳目标值是113.45。回想一下,目标是用美元表示的。因此,我们可以得出结论,通过选择适当的生产计划,铸币厂可以生产利用现有的矿物可以得到价值113.45英镑的硬币。此外,因为这个值是最优的,我们知道不可能生产价值大于113.45 !

知道这个最佳计划产生的每枚硬币的确切数目显然是有用的。的gurobi_cl命令允许您通过命令行参数设置Gurobi参数。对于本例来说,一个特别有用的参数是ResultFile,它指示Gurobi Optimizer在优化完成后写入一个文件。文件的类型编码在后缀中。请求一个.sol文件:

> gurobi_cl ResultFile =硬币。索尔coins.lp
该命令将生成一个文件,其中包含模型中变量的解值:
#客观值= 113.45便士0 nickel 0 dime 2 Quarters 53 Dollars 100 Cu 999.8 Ni 46.9 Zi 50 Mn 30
在最优解中,我们会产生100元硬币,53个25美分硬币和2个10美分硬币。

如果我们想要探索模型的参数(例如,考虑不同数量的可用矿物如何改变最佳解决方案),我们可以使用文本编辑器来修改输入文件。但是,通常最好在功能更强大的系统中进行此类测试。现在,我们将描述Gurobi Interactive Shell,它提供了一个用于创建、修改和试验优化模型的环境。