示例游览#
本文档提供了Gurobi示例的快速导览;我们将尝试突出这些示例的一些最重要特性。本文档提供了完整的源代码,因此您可以自由地详细探索这些示例。
无论何时,我们都尽量以独立于编程语言的方式讨论示例。我们将使用一个简短的、独立于语言的名称来引用每个示例。您需要将此名称映射到您所用语言的特定源文件名。例如,facility示例对应六种不同的实现,一种是C语言(facility_c.c),一种是C++(facility_c++.cpp),一种是Java(Facility.java),一种是C#(facility_cs.cs),一种是Visual Basic(facility_vb.vb),还有一种是Python(facility.py)。如果您想查看特定示例的语言实现,请参考相应的示例源文件。
示例中涵盖的主题#
开始介绍Gurobi示例的最简单地方可能是那些从文件加载并求解模型的示例。这些示例展示了Gurobi库的最基本功能。它们还展示了模型属性的使用,这是Gurobi优化器中的一个重要概念。
一旦你对这些示例感到熟悉,你应该继续学习那些从头开始构建模型的示例。这些示例将向你展示如何创建变量和约束,并将它们添加到优化模型中。
本文档中涵盖的下一个主题是 模型修改。Gurobi 发行版包括添加和删除约束、添加 变量以及更改变量类型、边界和目标系数的示例。 您修改模型的方式与从头开始构建模型的方式非常相似, 但涉及使用解决方案信息时存在一些重要差异。
接下来,本文档涵盖了
参数更改。 params 示例
向您展示了如何更改参数,特别是如何为不同的模型使用不同的参数设置。
不可行性部分考虑了一些处理模型不可行性的例子。有些使用不可约不一致子系统(IIS)来处理不可行性,而其他一些则放宽约束。
一个值得理解的有用MIP特性是 MIP起始点。MIP起始点允许您为MIP求解器指定一个已知的可行解。该解为最佳可能解的目标提供了一个界限,这有助于限制MIP搜索。该解还为Gurobi MIP求解器使用的局部搜索启发式算法提供了一个潜在的起始点。
在使用我们的Python接口时,可以实现模型与数据的分离,这在建模语言中经常这样做,但你需要利用Python模块来实现这一点。模型-数据分离部分提供了一个如何做到这一点的示例。它考虑了饮食示例的三个版本。所有三个版本都使用相同的函数来制定和解决实际的优化模型,但它们从非常不同的地方获取模型数据。
本文档中我们涵盖的最后一个主题是 Gurobi 回调函数。回调允许用户 获取与优化相关的定期进度信息。