动机

动机

在任何优化模型的核心上谎言一组决策变量。找到一个便捷的存储方法和访问这些变量,这些变量通常可以代表实现模型的主要挑战。虽然某些模型中的变量自然地映射到简单的编程语言结构(例如,x [i]用于连续整数值一世),其他模型可以提出更大的挑战。例如,考虑通过电源网络优化多种不同商品流量的模型。你可能有一个变量X ['Pens','丹佛','纽约']从丹佛到纽约的制造商品(本例中的钢笔)的流动捕获了丹佛。与此同时,你可能不是想要有一个变量x ['铅笔','丹佛','西雅图'],因为不是商品,来源城市和目的地城市的所有组合都代表了通过网络的有效路径。代表典型编程语言中的稀疏决策变量可以是麻烦的。

为了复制挑战,您通常需要构建涉及这些决策变量的子集的约束。例如,在我们的网络流模型中,您可能希望在进入特定城市的总流量上放置一个上限。您当然可以通过迭代所有可能的城市来收集相关的决策变量,并仅选择捕获从该源城市的可能流入所需目的地城市的那些变量。但是,如果并非所有原始目的地对有效,这显然是浪费的。在大型网络问题中,这种方法的低效率可能导致重大的性能问题。有效处理这可能需要复杂的数据结构。

Gurobi Python接口旨在使我们刚刚描述的问题非常易于管理。我们将介绍一下这是如何完成的具体示例。但是,在我们这样做之前,我们需要描述一些重要的Python构造:清单元组词典列出理解, 和发电机表达式。这些是在我们的界面中尤为重要的标准Python概念。我们也会介绍一下泰普勒斯主义者托普利特类是我们已添加到Gurobi Python接口的自定义类。

一个快速提醒:您可以咨询在线Python文档manbet体育手机客户端有关此处提到的任何Python数据结构的其他信息。