这个是数学建模最简单选课模型的代码
model:
sets:
item/1..9/:c,x;
endsets
data:
c=5,4,4,3,4,3,2,2,3;
enddata
min=@sum(item(i):x(i));
x(1)+x(2)+x(3)+x(4)+x(5)>=2;
x(3)+x(5)+x(6)+x(8)+x(9)>=3;
x(4)+x(6)+x(7)+x(9)>=2;
x(3)<=x(1);
x(3)<=x(2);
x(4)<=x(7);
x(5)<=x(1);
x(5)<=x(2);
x(6)<=x(7);
x(8)<=x(5);
x(9)<=x(1);
x(9)<=x(2);
@for(item(i):@bin(x(i)));
end
这个是新的代码运行不了一直error 11,运行不了我就注释了呗结果注释了也不行#lingo#
Sets
Courses /1..9/ '课程编号'
CourseTypes /1..3/ '课程类别'
Prerequisites /3, 4, 5, 6, 8, 9/ '有先修课程的课程'
Parameters
Credit /1:5, 2:4, 3:4, 4:3, 5:4, 6:3, 7:2, 8:2, 9:3/ '课程学分'
Difficulty /1..9/ '课程难度,值介于0和1之间' '就比如像这样的形式:[lbk] 0.2, 0.3, 0.5, 0.4, 0.6, 0.3, 0.1, 0.2, 0.4 [rbk]'
InterestMatrix /1..9, 1..3/ :=
[lbk] 1, 2, 3 [rbk],
[lbk] 2, 3, 1 [rbk],
[lbk] 3, 1, 2 [rbk];
Min_Interest := 1;
DifficultyWeight := 0.5;
Var
Select(Courses) '是否选修课程,1表示选修,0表示不选修'
CourseOrder(Courses) '课程完成顺序'
Maximize
TotalCredit: Sum(Courses, (Credit[lbk]Course[rbk] - Difficulty[lbk]Course[rbk] * DifficultyWeight) * Select[lbk]Course[rbk]);
Subject To
Constraint_Pre(Course)$(Course in Prerequisites) :
Sum(Courses, Select[lbk]PreCourse[rbk] * (CourseOrder[lbk]PreCourse[rbk] < CourseOrder[lbk]Course[rbk])) >= 1;
Constraint_Category1: Sum(Courses, Select[lbk]Course[rbk] * (CourseTypes[lbk]Course[rbk] = 1)) = 3;
Constraint_Category2: Sum(Courses, Select[lbk]Course[rbk] = 2 * (CourseTypes[lbk]Course[rbk] = 2)) = 2;
Constraint_Category3: Sum(Courses, Select[lbk]Course[rbk] = 2 * (CourseTypes[lbk]Course[rbk] = 3)) = 2;
Constraint_Order(Course)$(Course in {1, 2, 7, 3, 5, 6, 8, 9}) :
CourseOrder[lbk]Course[rbk] <= CourseOrder[lbk]1[rbk];
0 <= Select(Courses) <= 1;
CourseOrder(Courses) >= 1;
Select[lbk]1[rbk] = 1;
Select[lbk]2[rbk] = 1;
CourseOrder[lbk]1[rbk] = 1;
CourseOrder[lbk]2[rbk] = 2;
CourseOrder[lbk]7[rbk] = 3
Constraint_Interest(Course)$(Course in Courses) :
Sum(Students, InterestMatrix[lbk]Course, Students[rbk] * Select[lbk]Course[rbk]) >= Min_Interest;
Display
TotalCredit, Select;
End

model:
sets:
item/1..9/:c,x;
endsets
data:
c=5,4,4,3,4,3,2,2,3;
enddata
min=@sum(item(i):x(i));
x(1)+x(2)+x(3)+x(4)+x(5)>=2;
x(3)+x(5)+x(6)+x(8)+x(9)>=3;
x(4)+x(6)+x(7)+x(9)>=2;
x(3)<=x(1);
x(3)<=x(2);
x(4)<=x(7);
x(5)<=x(1);
x(5)<=x(2);
x(6)<=x(7);
x(8)<=x(5);
x(9)<=x(1);
x(9)<=x(2);
@for(item(i):@bin(x(i)));
end
这个是新的代码运行不了一直error 11,运行不了我就注释了呗结果注释了也不行#lingo#
Sets
Courses /1..9/ '课程编号'
CourseTypes /1..3/ '课程类别'
Prerequisites /3, 4, 5, 6, 8, 9/ '有先修课程的课程'
Parameters
Credit /1:5, 2:4, 3:4, 4:3, 5:4, 6:3, 7:2, 8:2, 9:3/ '课程学分'
Difficulty /1..9/ '课程难度,值介于0和1之间' '就比如像这样的形式:[lbk] 0.2, 0.3, 0.5, 0.4, 0.6, 0.3, 0.1, 0.2, 0.4 [rbk]'
InterestMatrix /1..9, 1..3/ :=
[lbk] 1, 2, 3 [rbk],
[lbk] 2, 3, 1 [rbk],
[lbk] 3, 1, 2 [rbk];
Min_Interest := 1;
DifficultyWeight := 0.5;
Var
Select(Courses) '是否选修课程,1表示选修,0表示不选修'
CourseOrder(Courses) '课程完成顺序'
Maximize
TotalCredit: Sum(Courses, (Credit[lbk]Course[rbk] - Difficulty[lbk]Course[rbk] * DifficultyWeight) * Select[lbk]Course[rbk]);
Subject To
Constraint_Pre(Course)$(Course in Prerequisites) :
Sum(Courses, Select[lbk]PreCourse[rbk] * (CourseOrder[lbk]PreCourse[rbk] < CourseOrder[lbk]Course[rbk])) >= 1;
Constraint_Category1: Sum(Courses, Select[lbk]Course[rbk] * (CourseTypes[lbk]Course[rbk] = 1)) = 3;
Constraint_Category2: Sum(Courses, Select[lbk]Course[rbk] = 2 * (CourseTypes[lbk]Course[rbk] = 2)) = 2;
Constraint_Category3: Sum(Courses, Select[lbk]Course[rbk] = 2 * (CourseTypes[lbk]Course[rbk] = 3)) = 2;
Constraint_Order(Course)$(Course in {1, 2, 7, 3, 5, 6, 8, 9}) :
CourseOrder[lbk]Course[rbk] <= CourseOrder[lbk]1[rbk];
0 <= Select(Courses) <= 1;
CourseOrder(Courses) >= 1;
Select[lbk]1[rbk] = 1;
Select[lbk]2[rbk] = 1;
CourseOrder[lbk]1[rbk] = 1;
CourseOrder[lbk]2[rbk] = 2;
CourseOrder[lbk]7[rbk] = 3
Constraint_Interest(Course)$(Course in Courses) :
Sum(Students, InterestMatrix[lbk]Course, Students[rbk] * Select[lbk]Course[rbk]) >= Min_Interest;
Display
TotalCredit, Select;
End
