下标索引没有用对,link是a和b衍生出来的集,其中a是第一个指标 ,b是第二个指标,所以后面在引用e的时候,注意i和j的顺序。修改后的程序见附件,如下是运行结果:
Global optimal solution found.
Objective value: 36.00000
Objective bound: 36.00000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 芹握 47
Model Class: PILP
Total variables: 档伏 300
Nonlinear variables: 0
Integer variables: 300
Total constraints: 51
Nonlinear constraints: 行首携 0
Total nonzeros: 1200
Nonlinear nonzeros: 0
Variable Value Reduced Cost
C( 1) 1.000000 0.000000
C( 2) 2.000000 0.000000
C( 3) 3.000000 0.000000
C( 4) 4.000000 0.000000
C( 5) 5.000000 0.000000
C( 6) 6.000000 0.000000
C( 7) 7.000000 0.000000
C( 8) 8.000000 0.000000
C( 9) 9.000000 0.000000
C( 10) 10.00000 0.000000
C( 11) 11.00000 0.000000
C( 12) 12.00000 0.000000
C( 13) 13.00000 0.000000
C( 14) 14.00000 0.000000
C( 15) 15.00000 0.000000
C( 16) 16.00000 0.000000
C( 17) 17.00000 0.000000
C( 18) 18.00000 0.000000
C( 19) 19.00000 0.000000
C( 20) 20.00000 0.000000
E( 1, 1) 0.000000 1.000000
E( 1, 2) 1.000000 2.000000
E( 1, 3) 0.000000 3.000000
E( 1, 4) 0.000000 4.000000
E( 1, 5) 0.000000 5.000000
E( 1, 6) 0.000000 6.000000
E( 1, 7) 0.000000 7.000000
E( 1, 8) 0.000000 8.000000
E( 1, 9) 0.000000 9.000000
E( 1, 10) 0.000000 10.00000
E( 1, 11) 0.000000 11.00000
E( 1, 12) 0.000000 12.00000
E( 1, 13) 0.000000 13.00000
E( 1, 14) 0.000000 14.00000
E( 1, 15) 0.000000 15.00000
E( 2, 1) 1.000000 1.000000
E( 2, 2) 0.000000 2.000000
E( 2, 3) 0.000000 3.000000
E( 2, 4) 0.000000 4.000000
E( 2, 5) 0.000000 5.000000
E( 2, 6) 0.000000 6.000000
E( 2, 7) 0.000000 7.000000
E( 2, 8) 0.000000 8.000000
E( 2, 9) 0.000000 9.000000
E( 2, 10) 0.000000 10.00000
E( 2, 11) 0.000000 11.00000
E( 2, 12) 0.000000 12.00000
E( 2, 13) 0.000000 13.00000
E( 2, 14) 0.000000 14.00000
E( 2, 15) 0.000000 15.00000
第二个循环错了,正确的应该是:@for(set2(i):@sum(link(j,i):A(j,i)*x(j))<=y(i))error code 70 表示你在程序中使用的变量熟超过了你定义的变量数手袜,如上,你的x(i)最多只能有6个,但是你错把j的数目给了他,就产生历薯桐了x(0)到x(6)共7个变量,没有办法就报错了。
我简单改肢坦了一点,你看是否满足你的需求:
model:
sets:
set1/1..6/:x
set2/1..7/:y
link(set1,set2):A
endsets
x2=1
max=@sum(set1(j):x(j))
@for(set1(j):@bin(x(j)))
@for(set2(i):@sum(link(j,i):A(j,i)*x(j))<=y(i))
data:
y=1 1 1 1 1 1 1
A=
1 1 0 1 0 0
0 1 0 0 1 0
1 0 0 0 0 1
0 0 1 1 0 1
1 1 0 1 0 0
1 0 0 1 0 1
0 1 1 0 1 0
enddata
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)