基于其他决策变量约束决策变量的范围
Constraining the range of decision variables based on other decision variables
我经常遇到 class 房间分配问题,涉及课程规模和 class 容量。决策变量是二元的。只要分配的总容量大于课程大小,该模型就允许将一门课程分配给多个房间。我想添加到此模型的约束是确保分配给每个课程的房间的各自大小在合理范围内(比如 20 个座位)彼此。这如何以线性方式完成?我怎样才能防止模型将 60 名学生的课程分配到 2 个容量为 10 和 50 的房间,而是确保它们的大小接近(最好是相等)。
我正在使用 Excel 和 OpenSolver。
下面是一些示例数据:
Course/Room 324A 321D 124B 328 Course Size Capacity Assigned Wasted
Management 0 0 0 1 15 25 10
Engineering 1 0 0 0 20 20 0
Science 0 1 1 0 60 75 15
Room Sizes 20 40 35 25
objective 是为了尽量减少总 space 浪费(在本例中为 25 个席位)。
引入变量minseat
和maxseat
并形成不等式:
minseat(course) <= seats(room)+(1-assign(course,room))*M
maxseat(course) >= seats(room)-(1-assign(course,room))*M
maxseat(course)-minseat(course) <= 20
或者将 maxseat(course)-minseat(course)
放入 objective 中,并考虑一些成本因素。明智地选择 M
。
我经常遇到 class 房间分配问题,涉及课程规模和 class 容量。决策变量是二元的。只要分配的总容量大于课程大小,该模型就允许将一门课程分配给多个房间。我想添加到此模型的约束是确保分配给每个课程的房间的各自大小在合理范围内(比如 20 个座位)彼此。这如何以线性方式完成?我怎样才能防止模型将 60 名学生的课程分配到 2 个容量为 10 和 50 的房间,而是确保它们的大小接近(最好是相等)。
我正在使用 Excel 和 OpenSolver。
下面是一些示例数据:
Course/Room 324A 321D 124B 328 Course Size Capacity Assigned Wasted
Management 0 0 0 1 15 25 10
Engineering 1 0 0 0 20 20 0
Science 0 1 1 0 60 75 15
Room Sizes 20 40 35 25
objective 是为了尽量减少总 space 浪费(在本例中为 25 个席位)。
引入变量minseat
和maxseat
并形成不等式:
minseat(course) <= seats(room)+(1-assign(course,room))*M
maxseat(course) >= seats(room)-(1-assign(course,room))*M
maxseat(course)-minseat(course) <= 20
或者将 maxseat(course)-minseat(course)
放入 objective 中,并考虑一些成本因素。明智地选择 M
。