R API概述

R API概述

本节文档了Gurobi R接口。对于那些不熟悉R的人,它是统计计算的自由语言。请访问R网站想要查询更多的信息。本手册始于快速概述我们的R API提供的方法。然后继续一个综合演示文稿所有可用方法,他们的参数和返回值。

如果您是Gurobi Optimizer的新手,我们建议您从中开始快速入门指南或者示例之旅。这些文件提供了如何使用此处描述的方法的具体示例。

新用户的一个快速注意事项:除非另有说明,否则数学编程中的“数学规则”是非负数。如果希望变量能够占用负值,则需要显式设置下限。

楷模

我们的Gurobi R接口使您可以表达以下表格的问题:

最小化 <span> $ </ span> x ^ tqx + c ^ tx + mathrm {alpha} <span> $ </ span>
受到约束 <span> $ </ span> ax = b <span> $ </ span> (线性约束)
<span> $ </ span> \ ell \ le x \ le u <span> $ </ span> (束缚约束)
一些<span> $ </ span> x_j <span> $ </ span>不可缺少的 (完整性约束)
<span> $ </ span> x ^ tqc x + q ^ tx \ le \ mathrm {beta} <span> $ </ span> (二次约束)
一些<span> $ </ span> x_i <span> $ </ span>在SOS (特殊订购集约束)
min,max,abs,或... (一般约束)



模型存储为列表变量,每个由多个组成命名组件。命名组件捕获上面列出的不同型号组件。许多这些模型组件是可选的。例如,可以省略积分约束。

可以从文件加载优化模型(使用gurobi_read.函数),或者可以通过填充模型变量的相应命名组件(使用标准R构造)来构建。我们将讨论如何在模型中表示的细节模型论点部分。

我们经常参考班级优化模型。具有线性目标函数,线性约束和连续变量的模型是一个线性程序(LP)。如果目标是二次,则该模型是一个二次程序(QP)。如果任何约束是二次的,则模型是一个二次约束程​​序(QCP)。我们有时也会讨论QCP的特殊情况二阶锥计划(SOCP)。如果模型包含任何整数变量,半连续变量,半整数变量,特殊订购集(SOS)约束或一般约束,则模型是一个混合整数程序(MIP)。我们还将有时讨论特殊情况的MIP,包括混合整数线性程序(MILP)混合整数二次程序(MIQP)混合整数二次约束程​​序(MIQCP), 和混合整数二阶锥程序(MISOCP)。Gurobi Optimizer处理所有这些模型类。

解决模型

一旦您构建了一个型号,您可以打电话Gurobi.计算解决方案。默认,Gurobi.将使用它并发优化器解决LP模型,屏障算法解决QP和QCP型号,以及分支算法解决混合整数型号。解决方案作为a返回列表多变的。我们将讨论如何在我们讨论的情况下代表优化结果的详细信息Gurobi.功能。

以下是R API中可能的命令序列的一个简单示例:
模型< - gurobi_read('examples / data / stein9.mps')
结果< - gurobi(型号)

多种解决方案和多目标

默认情况下,Gurobi Optimizer假定您的目标是找到具有单个目标函数的模型的一个经过验证的最佳解决方案。Gurobi提供了允许您放宽这些假设的功能。您应该参考该部分解决方案池有关如何要求多个解决方案的信息,或者部分多目标有关如何指定多个目标函数并控制它们之间的权衡的信息。

不可行的模型

如果发现模型是不可行的,您有一些选项。您可以尝试诊断发出的原因,尝试修复不可行,或两者。要获取可用于诊断不可行性原因的信息,请致电gurobi_iis.计算不可缩短的不一致子系统(IIS)。此方法可用于连续和MIP模型,但您应该意识到MIP版本可能非常昂贵。我们将讨论如何在IIS结果中所代表的详细信息gurobi_iis.功能文档。manbet体育手机客户端

试图修复不可行,呼叫gurobi_feasrelax.计算模型的可行性放松。此放松允许您找到最小化约束违规幅度的解决方案。

管理参数

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

每个gurobi参数都有一个默认值。所需的参数更改通过了列表多变的。此列表中每个命名组件的名称必须是Gurobi参数的名称,关联的值应该是该参数的所需值。您可以找到可用的Gurobi参数的完整列表这里。我们将提供有关更改参数设置的其他详细信息参数论点部分。

监督进展

可以通过Gurobi Logging监控优化的进度。默认情况下,Gurobi将向屏幕发送输出。一些简单的控件可用于修改默认日志记录行为。如果您想将输出直接输出到文件以及屏幕,请设置logfile.参数到所需日志文件的名称。可以使用频率控制测井输出频率displayinterval.参数,可以完全关闭和记录outputflag.范围。可以在GUROBI日志文件中找到的详细描述记录部分。

误差处理

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

环境

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

另一种选择是提供一个可选的env.争论(也通过一个列表)。此参数允许您在Gurobi Compute Server上或使用Gurobi Instant Cloud上的给定问题。我们将进一步讨论这个主题env.论点部分。

Gurobi将检查当前的工作目录是否为命名的文件gurobi.env.,并且如果存在,它将尝试从此文件中读取参数设置。文件应该是PRM.格式(简要介绍,每行应包含参数名称,后跟该参数的所需值)。