建筑模型
建筑模型
该示例现在构建一个优化模型。与优化模型相关的数据必须存储在单个列表变量中。这个列表中的命名组件包含模型的不同部分。最基本的命名组件是:一个
)、客观向量(obj
),右侧向量(园艺学会
),约束感知向量(感觉
).在这些中,只有约束矩阵是强制性的,如果其他模型字段丢失,则将替换为默认值。一个模型变量也可以包括可选的组件(例如,客观意义modelsense
).
在我们的示例中,我们使用内置的R矩阵
函数来建立约束矩阵一个
.一个
以稠密矩阵的形式存储在这里。你也可以存储一个
作为一个稀疏矩阵,使用sparse_triplet_matrix
函数的大满贯
包或sparseMatrix
类的矩阵
包中。稀疏输入矩阵在lp2。R
的例子。
的后续语句填充模型
变量,包括目标向量、右侧向量和约束感知向量。在每种情况下,我们都使用内置函数c
函数初始化数组参数。
除了必选组件外,本例还设置了两个可选组件:modelsense
和vtype
.前者用来表示目标函数的意义。默认值是minimization,所以我们将组件设置为“马克斯”
表示我们愿意最大限度地实现指定的目标。的vtype
组件用于指示模型中变量的类型。在我们的例子中,所有的变量都是二进制的(“B”
).注意,我们的接口允许您为任何数组参数指定标量值。Gurobi接口将该标量扩展为适当长度的常量数组。在本例中,标量值“B”
将被扩展为一个长度为3的数组,包含一个“B”
的每个列的值一个
.
关于默认变量边界有一个重要的注意事项:数学编程中的约定是,变量的默认下界是0,上界是无限的。如果您希望您的变量有不同的边界,您需要显式地提供它们。