为什么这里的@bin不能限制住x是0-1变量了??
model:sets:
course/1..9/:x;
endsets
min=@sum(course(i):x);
x1+x2+x3+x4+x5>=2;
x3+x5+x6+x8+x9>=3;
x4+x6+x7+x9>=2;
2*x3-x1-x2<=0;
x4-x7<=0;
2*x5-x1-x2<=0;
x6-x7<=0;
x8-x5<=0;
2*x9-x1-x2<=0;
@for(course(i):@bin(x));
end
下面是题目
求大神解救 这是姜启源数学模型4的选课策略问题我编的程序,新手求教啊!
我求解的结果如下:
Global optimal solution found.
Objective value: 0.000000
Objective bound: 0.000000
Infeasibilities: 0.1110223E-15
Extended solver steps: 0
Total solver iterations: 1
Variable Value Reduced Cost
X1 0.000000 0.000000
X2 1.333333 0.000000
X3 0.6666667 0.000000
X4 0.000000 0.000000
X5 0.000000 0.000000
X6 2.333333 0.000000
X8 0.000000 0.000000
X9 0.000000 0.000000
X7 2.333333 0.000000
X( 1) 0.000000 1.000000
X( 2) 0.000000 1.000000
X( 3) 0.000000 1.000000
X( 4) 0.000000 1.000000
X( 5) 0.000000 1.000000
X( 6) 0.000000 1.000000
X( 7) 0.000000 1.000000
X( 8) 0.000000 1.000000
X( 9) 0.000000 1.000000
Row Slack or Surplus Dual Price
1 0.000000 -1.000000
2 0.000000 0.000000
3 0.000000 0.000000
4 2.666667 0.000000
5 0.000000 0.000000
6 2.333333 0.000000
7 1.333333 0.000000
8 0.000000 0.000000
9 0.000000 0.000000
10 1.333333 0.000000
是什么情况呀?? 你这个代码写的有问题,x是定义了一个集,本身这个集就有x(1)-x(9)这几个变量,但是你在模型中用的却是x1,x2-x9的这样几个变量,注意这是不一样的变量名,@for(course(i):@bin(x));这个语句限定了x(1)-x(9)是0-1变量,并不是x1-x9,所以出现了非整数的结果。说明你对于集的使用还是不理解,建议看看我在今年5月份地区赛培训中讲的lingo课程。 二楼madio说得对,你参考下。
页:
[1]