【发布时间】:2020-03-22 15:35:19
【问题描述】:
我需要实现一个 if 语句作为约束。但是,我的代码不断地报错。
'open_house[i]' 是一个二进制变量(1 表示“开放”,0 表示“未开放”)。
'people_to_house[j,i]'也是二进制变量(如果person-j赋值给house-i,则为1,否则为0)
我想让 'open_house[i]' 等于 1,如果(在每个房子中)分配到该房子的人数总和至少为 1。换句话说,如果至少有1人被分配到一所房子,然后我们决定打开那所房子。
下面的 AMPL 代码给了我一个语法错误。你如何在“subject to”中编写 if-then 语句?
subject to
if (open {i in house}: sum {j in people} people_to_house[j,i] >= 1) then open_house[i] = 1;
【问题讨论】: