R API概述

R API概述

本节描述了Gurobi R接口。对于那些不熟悉R的人来说,它是一种用于统计计算的免费语言。请访问R的网站为更多的信息。本手册以快速概述我们的R API提供的方法开始。接着是a全面的介绍所有可用的方法,它们的参数,以及它们的返回值。

如果您对Gurobi优化器是新手,我们建议您从快速入门指南或者是例子之旅.这些文档提供了如何使用这里描述的方法的具体示例。

给新用户一个简单的提示:数学编程中的惯例是变量是非负的,除非另有说明。如果您希望变量能够取负值,则需要显式地设置下界。

模型

我们的Gurobi R接口可以让您表达以下形式的问题:

最小化 < span > < /美元跨度> x ^ TQx + c ^ Tx + \ mathrm{α}< span > < / span >美元
<span>$< span>A x = b<span>$</span> (线性约束)
<span>$</span>\ell \le x \le u<span>$</span> (绑定约束)
一些< span > < /美元跨度> x_j < span > < / span >美元积分 (完整性约束)
< span > < /美元跨度> x ^ TQc \, x + q ^ Tx \ le \ mathrm{β}< span > < / span >美元 (二次约束)
一些< span > < /美元跨度> x_i < span > < / span >美元在SOS (特殊有序集约束)
最小,最大,腹肌,或者… (一般约束)



模型存储为列表变量,每个变量由多个变量组成指定组件.命名组件捕获上面列出的不同模型组件。这些模型组件中有许多是可选的。例如,完整性约束可以省略。

优化模型可以从文件加载(使用gurobi_read函数),或者它可以通过填充模型变量的适当命名组件(使用标准R构造)来构建。我们将讨论模型如何在模型论证部分。

我们经常提到一个优化模型。一个具有线性目标函数、线性约束和连续变量的模型是线性规划(LP).如果目标是二次型,则模型为a二次规划(QP).如果任何约束条件是二次的,则模型为aQuadratically-Constrained计划(QCP).我们有时会提到一些QCP的特殊情况:带凸约束的QCP,带非凸约束的QCP,双线性程序,二阶圆锥程序(SOCP).如果模型包含任何整数变量、半连续变量、半整数变量、特殊有序集约束或一般约束,则该模型为混合整数程序.我们有时还会讨论MIP的特殊情况,包括混合整数线性规划(MILP)混合整数二次规划混合整数二次约束程序,混合整数二阶圆锥程序(MISOCP).Gurobi优化器处理所有这些模型类。

解决一个模型

一旦建立了模型,就可以调用gurobi计算一个解。默认情况下,gurobi将使用并发优化器求解LP模型,用障碍算法求解QP模型和带凸约束的QCP模型,用分枝切割算法求解混合整数模型。返回的解决方案为列表变量。在讨论优化结果时,我们将详细讨论如何表示优化结果gurobi函数。

下面是R API中可能的命令序列的一个简单示例:
模型< - gurobi_read(/数据/ stein9.mps例子)
结果< - gurobi(模型)

多重解决方案和多重目标

默认情况下,Gurobi优化器假定您的目标是为具有单个目标函数的模型找到一个已证明的最佳解决方案。Gurobi提供的特性允许您放松这些假设中的任何一个。你应该参考关于溶液池有关如何请求多个解决方案的信息,或有关多个目标有关如何指定多个目标函数并控制它们之间的权衡的信息。

不可行模型

如果一个模型被发现是不可行的,你有几个选择。您可以尝试诊断不可行的原因,尝试修复不可行的原因,或两者兼有。为了获得有用的信息,可以诊断一个不可行的原因,呼叫gurobi_iis计算不可约不一致子系统(IIS)。这种方法既可以用于连续模型,也可以用于MIP模型,但是您应该意识到MIP版本可能非常昂贵。我们将详细讨论IIS结果如何在gurobi_iis函数文档。manbet体育手机客户端

试图修复一个不可行的,打电话gurobi_feasrelax计算模型的可行性松弛。这种松弛允许您找到一个解决方案,将违反约束的程度降到最低。

管理参数

Gurobi优化器提供了一组参数,允许您控制优化过程的许多细节。在开始优化之前,可以通过修改Gurobi参数来控制可行性和最优性公差、算法的选择、探索MIP搜索树的策略等因素。

每个Gurobi参数都有一个默认值。所需要的参数更改通过列表变量。这个列表中每个命名组件的名称必须是一个Gurobi参数的名称,关联的值应该是该参数所需的值。您可以找到可用Gurobi参数的完整列表在这里.控件中更改参数设置的详细信息参数个数论证部分。

监测进展

优化过程可以通过Gurobi测井进行监控。默认情况下,Gurobi将向屏幕发送输出。有几个简单的控件可用于修改默认的日志记录行为。如果您希望将输出直接输出到文件和屏幕上,请设置日志文件参数设置为所需日志文件的名称。日志输出的频率可以通过DisplayInterval参数,并且可以完全关闭日志记录OutputFlag参数。关于Gurobi日志文件的详细描述可以在日志记录部分。

错误处理

如果不成功,Gurobi R接口的方法将返回错误代码和错误消息。可能的错误代码列表可以在错误代码部分。

环境

默认情况下,各种Gurobi函数将查找有效的许可证文件并创建本地Gurobi环境。只要相应的R API函数在运行,这个环境就存在,并在完成时释放。

另一个选项是提供一个可选选项env参数(也通过列表).此参数允许您在Gurobi计算服务器上或使用Gurobi即时云解决给定的问题。我们将在以后的文章中进一步讨论这个问题env论证部分。

Gurobi将检查当前工作目录中一个名为gurobi.env,并且它将尝试从这个文件中读取参数设置(如果它存在的话)。文件应该在里面人口、难民和移民事务局格式(简单地说,每一行都应该包含一个参数名,后跟该参数所需的值)。