2022华数杯b题
想问一下关于lingo的代码问题
我想求y(i)=a(i)+b(i-1)-c(i)*3,像下面这样写下标是对的吗
@for(u(i):ra(i)=pa(i)+ra(i-1)-pw(i)*3);
还有,我想定义集合u内下标为1的所有变量值为0,该怎么写
u(i):rw(1)=ra(1)=ra1(1)=ra2(1)=ra3(1).....=rc3(1)=0;
下面这样写有没有问题,就是这个向下取整
@for(u(i):pa=@smin(@floor(za1(i)/6),@floor(za2(i)/8),@floor(za3(i)/2)));
@for(u(i):pb=@smin(@floor(zb1(i)/2),@floor(zb2(i)/4)));
@for(u(i):pc=@smin(@floor(zc1(i)/8),@floor(zc2(i)/2),@floor(zc3(i)/12)));
@for(u(i):pc=@smin(@floor(pa(i)/3),@floor(pb(i)/4),@floor(pc(i)/5)));
下面附上我目前写的代码
sets:
u/1..7/:f1,f2,sw,sa,sa1,sa2,sa3,sb,sb1,sb2,sc,sc1,sc2,sc3,rw,ra,ra1,ra2,ra3,rb,rb1,rb2,rc,rc1,rc2,rc3,za1,za2,za3,zb1,zb2,
zc1,zc2,zc3,pa,pb,pc,pw,t;
endsets
data:
t=4500 2500 2750 2100 2500 2750 1500;
enddata
@for(u(i):f1=240*sw+120*sa+40*sa1+60*sa2+50*sa3+160*sb+80*sb1+100*sb2+180*sc+60*sc1+40*sc2+70*sc3);
@for(u(i):f2=5*rw+2*ra+5*ra1+3*ra2+6*ra3+1.5*rb+4*rb1+5*rb2+1.7*rc+3*rc1+2*rc2+3*rc3);
@for(u(i):pa=@smin(@floor(za1(i)/6),@floor(za2(i)/8),@floor(za3(i)/2)));
@for(u(i):pb=@smin(@floor(zb1(i)/2),@floor(zb2(i)/4)));
@for(u(i):pc=@smin(@floor(zc1(i)/8),@floor(zc2(i)/2),@floor(zc3(i)/12)));
@for(u(i):pc=@smin(@floor(pa(i)/3),@floor(pb(i)/4),@floor(pc(i)/5)));
f=@sum(u(i):f1(i)+f2(i));