例子之旅


例子之旅

本文档提供了Gurobi示例的快速导览;我们将努力强调这些示例中的一些最重要的特性。本文档提供了完整的源代码,因此您可以自由地探索示例的完整细节。

只要有可能,我们都会尝试以一种独立于编程语言的方式来讨论这些示例。我们将使用一个简短的、独立于语言的名称来引用每个示例。您需要将此名称映射到您的语言的特定源文件名。例如,设施example对应六种不同的实现,其中一个在C语言中(Facility_C.C.),一个用c++ (facility_c + + . cpp)、一个Java版本(Facility.java),一个在c# (facility_cs.cs)、一个在visualbasic (facility_vb.vb),以及一个Python版本(facility.py).如果您想查看特定示例的语言实现,请参考相应的示例源文件。

示例中涉及的主题

开始介绍Gurobi示例的最简单的地方可能是以下示例从一个文件加载并解决一个模型.这些展示了Gurobi库最基本的功能。它们还演示了模型属性的使用,这是Gurobi优化器中的一个重要概念。

一旦您熟悉了这些示例,就应该继续学习下面的示例建立模型从头开始。这将向您展示如何创建变量和约束,并将它们添加到优化模型中。

本文讨论的下一个主题是模型修改.Gurobi分布包括添加和删除约束,添加变量和更改变量类型,界限和目标系数的示例。您可以使用从头开始构建模型的方式不同的方式修改模型,但涉及使用解决方案信息存在一些重要的差异。

接下来,本文档将介绍参数的变化.的参数个数示例向您展示了如何更改参数,特别是如何使用不同的参数设置不同的模型。

不可能实行部分考虑了一些应对模型不可行性的一些例子。有些人使用不可挽回的不一致子系统(IIS)来处理不可行,而其他人则放松约束。

一个有用的、值得理解的MIP特性是MIP开始.MIP启动允许您为MIP求解器指定一个已知的可行解决方案。手机万博登录该解决方案提供了一个可能的最佳解决方案的目标的边界,这有助于限制MIP搜索。该解决方案还为Gurobi MIP求解器所使用的本地搜索启发式提供了一个潜在的起点。手机万博登录

当使用我们的Python接口时,可以实现模型-数据分离,这在建模语言中经常是这样做的,但你需要使用Python模块来实现这一点。的模型数据分离部分提供了如何实现这一点的示例。它考虑了饮食例子的三个版本。这三种方法都使用相同的函数来制定和解决实际的优化模型,但它们获得的模型数据来自非常不同的地方。

本文讨论的最后一个主题是Gurobi回调.回调允许用户获得与优化相关的周期性进度信息。



部分