用Matlab、C语言、Lingo解下这道题,需要程序过程
1个回答
展开全部
有几个地方还有问题:
g (15, i) = k(16, i), 16 超过边界。
约束条件里面的求和符号,从 1 到 t,应该是从 1 到 15?
约束条件里面的左边中括号,右边的中括号丢了?
Lingo 求解如下:
sets:
set1/1..5/: B, C, A;
set2/1..15/;
set3(set1, set2): x, y, g, k;
endsets
min = @sum(set3(I, J): 100*x(I, J) + 120*y(I, J) + 120*k(I, J));
@for(set1(I):
B(I) <= C(I) + @sum( set2(T): 8000*x(I, T) + 2000*y(I, T) + 10000*(g(I, T) + k(I, T)) - T*B(I) );
C(I) + @sum( set2(T): 8000*x(I, T) + 2000*y(I, T) + 10000*(g(I, T) + k(I, T)) - T*B(I) ) <= A(I);
@for(set2(J) | J#le#14: g(I, J) = k(I, J+1) );
);
!@for(set3(I, J):
! @free(x(I, J));
! @free(y(I, J));
! @free(g(I, J));
! @free(k(I, J));
!);
data:
B = 2000, 3000, 5000, 8000, 4000;
C = 9010, 7008, 17015, 18020, 27509;
A = 17000, 17000, 19000, 40000, 28500;
enddata
追答
约束条件中对下标 t 的遍历求和还是不明白啊,
求和符号的自变量是 t,上限怎么也是 t
求和完以后前去的那一项的 t B_i,这个 t 没定下来,是需要遍历吗
Lingo 求解猜测如下:
sets:
set1/1..5/: B, C, A;
set2/1..15/;
set3(set1, set2): x, y, k;
endsets
min = @sum(set3(I, J): 100*x(I, J) + 120*y(I, J) + 120*k(I, J));
@for(set1(I):
@for(set1(T):
B(I) <= C(I) + @sum( set2(J) | J #le# T: 8000*x(I, J) + 2000*y(I, J) + 10000*(k(I, J)) ) - T*B(I) ;
C(I) + @sum( set2(J) | J #le# T: 8000*x(I, J) + 2000*y(I, J) + 10000*(k(I, J)) ) - T*B(I) <= A(I);
);
);
!@for(set3(I, J):
! @free(x(I, J));
! @free(y(I, J));
! @free(k(I, J));
!);
data:
B = 2000, 3000, 5000, 8000, 4000;
C = 9010, 7008, 17015, 18020, 27509;
A = 17000, 17000, 19000, 40000, 28500;
enddata
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询