假设您有一个线性优化问题,您正在尝试确定公司活动的哪些与会者有资格参加VIP活动。您正在尝试最大化预定义的实用程序,其中每个与会者都有一个特定的实用程序,受到许多约束,包括:
假设您有400名与会者,只有10人可以参加VIP活动,并且有来自至少50家不同公司的员工可供选择。 我在excel中设置了我的问题,我为每个与会者设置了一行,并为我的线性优化程序的“可更改单元格”设置了二进制列,如果为VIP事件选择了与会者,则选择1,否则为0。 / p>
我可以编写哪些代码来满足上述约束条件?
到目前为止我的尝试......
目前我处理上面列出的第一个约束的唯一解决方案是有50个额外的二进制列(每个公司一个),如果参与者要参加VIP活动并且他们来自该特定列中代表的公司,它将列出'1',否则列出'0'。然后有另外50个单元格对每列求和,然后设置一个约束条件,表明这些单元格必须小于或等于4.
我觉得必须有更优雅和有效的方式来做到这一点。
我目前还想不出一种编写代码以满足第二个约束的方法。我尝试过一个单独的列,当可变单元格等于1时显示公司名称,然后计算该列中唯一值的数量,然后对该单元格应用约束,使其必须大于或等于3,但是显然这是一种“非线性”约束。