基于其他决策变量约束决策变量的范围

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 个席位)。

引入变量minseatmaxseat并形成不等式:

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