我正在尝试用IBM CPLEX编写一个混合整数模型,但我遇到了一个问题。以下是问题所在:
学生可以选择几种不同的课程,学生从课程中获得的效用取决于学生和课程。具有挑战性的部分是;如果由同一学生一起学习,某些课程的效用有时不同于它们各自效用的总和。如果此联合效用为零,则应考虑单个效用。在这一点上,我计划做的是编写一个条件,使模型采用联合效用值,而不是这两门课程的单独值,如果这两门课是由学生学习的,但如果没有非线性,我无法做到这一点。
谢谢你的帮助。
发布于 2016-02-17 20:07:21
首先,你的问题缺少一个非常重要的信息:目标。
我假设目标是以这样一种方式给学生分配课程,使学生通过课程获得的总效用最大化。在这种情况下,任何学生通过学习任何课程都可以获得的所有实用程序都是已知的。从你的问题中,我还了解到联合公用事业也是众所周知的。因此,我们可以定义一个新的名为loss的“参数”,这样loss(k,l)表示当学生同时学习课程k和l时“损失的效用”的量。使用给定的数据可以很容易地计算出这些值。然后,我们可以通过以下方式解决问题:
目标函数:
条件:
这保证了来自课程k的学生i的最大效用不能超过假设的(给定的,最大可能的)效用。这也保证了当x(i,k)为零时u(i,k)被设置为零。损失x(i,k) w(i,k) +x(i,l) w(i,l)) >= u(i,k) + u(i,l) -损失(k,l)对于所有“课程对”和所有学生
这保证了学生从同时选修两门课程中获得的效用之和不会超过联合效用。
https://stackoverflow.com/questions/35205331
复制相似问题