CPlex编码逻辑

时间:2016-02-07 20:27:56

标签: optimization cplex ampl

负责工业工程设计课程的教授面临着将28名学生分配到8个项目的问题。每个学生必须被分配到一个项目,每个项目组必须有3或4个学生。已要求学生对项目进行排名,其中1为最佳排名,较高数字为较低排名。

a)为此问题制定OPL模型。

b)解决下表分配的分配问题:

    A   ED  EZ  G   H1  H2  RB  SC
Allen   1   3   4   7   7   5   2   6
Black   6   4   2   5   5   7   1   3
Chung   6   2   3   1   1   7   5   4
Clark   7   6   1   2   2   3   5   4
Conners 7   6   1   3   3   4   5   2
Cumming 6   7   4   2   2   3   5   1
Demming 2   5   4   6   6   1   3   7
Eng     4   7   2   1   1   6   3   5
Farmer  7   6   5   2   2   1   3   4
Forest  6   7   2   5   5   1   3   4
Goodman 7   6   2   4   4   5   1   3
Harris  4   7   5   3   3   1   2   6
Holmes  6   7   4   2   2   3   5   1
Johnson 2   2   4   6   6   5   3   1
Knorr   7   4   1   2   2   5   6   3
Manheim 4   7   2   1   1   3   6   5
Morris  7   5   4   6   6   3   1   2
Nathan  4   7   5   6   6   3   1   2
Neuman  7   5   4   6   6   3   1   2
Patrick 1   7   5   4   4   2   3   6
Rollins 6   2   3   1   1   7   5   4
Schuman 4   7   3   5   5   1   2   6
Silver  4   7   3   1   1   2   5   6
Stein   6   4   2   5   5   7   1   3
Stock   5   2   1   6   6   7   4   3
Truman  6   3   2   7   7   5   1   4
Wolman  6   7   4   2   2   3   5   1
Young   1   3   4   7   7   6   2   5

有多少学生被分配第二或第三选择?

c)有些项目比其他项目更难以在没有汽车的情况下到达。因此,希望分配给每个项目的至少一定数量的学生必须拥有一辆汽车;项目的数字因项目而异,如下:

A   ED  EZ  G   H1  H2  RB  SC
1   0   0   2   2   2   1   1

有车的学生是Chung,Demming,Eng,Holmes,Manheim,Morris,Nathan,Patrick,Rollins和Young。

修改模型以添加此汽车约束并再次解决问题。必须为多少学生分配第二或第三选择?

我将文件编码为a)& b)但我陷入了c)。 任何人都可以帮助逻辑吗?甚至放大就足够了

1 个答案:

答案 0 :(得分:0)

C_i成为指标矩阵(输入):C_i = 1如果学生i有车,否则为0。我假设您有以下决策变量:

x_ij = 1 if student i is assigned to project j; 0 otherwise

然后c)约束我可以建模如下

sum_i C_i * x_ij >= b_j    for all j

其中b_j

 j   A   ED  EZ  G   H1  H2  RB  SC
 b_j 1   0   0   2   2   2   1   1