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

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

要使用命令行界面,首先需要打开Console窗口。如果您不熟悉在Windows系统上运行命令行命令,您可以了解更多在这里。(请注意,前面用于测试许可证的Gurobi Interactive Shell可以直接接受命令行程序输入)。

ruby命令行工具的名称为gurobi_cl。要调用它,请键入gurobi_cl,后面跟着模型文件的名称。例如,如果我们的模型存储在文件中c: \ gurobi952 \ win64 \ \ data \例子coins.lp,您将在命令行窗口中输入以下命令…

> gurobi_clc: \ gurobi952 \ win64 \ \ data \例子coins.lp

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

使用license文件c:\ gu罗比\ gu罗比.lic
设置LogFile参数值为“gurobi.log”

Gurobi Optimizer版本9.5.2构建v9.5.2rc0 (win64)
版权所有:Gurobi Optimiza狗万app足彩tion, LLC

从文件中读取LP格式模型c: / gurobi952 / win64/ /数据/ coins.lp例子

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

显然,知道这种最优方案所产生的每枚硬币的确切数量是有用的。的gurobi_cl命令允许您通过命令行参数设置robi参数。对于本例而言,一个特别有用的参数是ResultFile,它指示ruby Optimizer在优化完成后写入一个文件。文件的类型在后缀中编码。申请.sol文件:

> gurobi_cl ResultFile=coins。索尔coins.lp
该命令将生成一个文件,其中包含模型中变量的解决方案值:
客观价值= 113.45便士0五分0角2角5分53美元100铜999.8镍46.9子50锰30
在最优解中,我们将生产100美元硬币,53个25美分硬币和2个10美分硬币。

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