0

我有这个代码,它有效:

Min=Dowels*23;
Dowels=P1+P2+P3+P4+P5+P6+P7+P8+P9+P10+P11+P12+P13+P14+P15+P16+P17+P18+P19+P20+P21;
D1>=25;
D2>=70;
D3>=65;
D4>=45;
D1=2*P1+P2+P3+P4+P5+P6+P7;
D2=P2+P3+3*P8+2*(P9+P10+P11)+P12+P13+P14+P15;
D3=P2+3*P4+2*P5+P6+2*P9+P10+3*P12+2*P13+P14+5*P16+4*P17+3*P18+2*P19+P20;
D4=P1+P2+2*(P3+P5)+4*P6+5*P7+P8+2*P10+4*P11+P12+3*P13+5*P14+7*P15+P16+2*P17+4*P18+6*P19+8*P20+9*P21;
@GIN(P1);
@GIN(P2);
@GIN(P3);
@GIN(P4);
@GIN(P5);
@GIN(P6);
@GIN(P7);
@GIN(P8);
@GIN(P9);
@GIN(P10);
@GIN(P11);
@GIN(P12);
@GIN(P13);
@GIN(P14);
@GIN(P15);
@GIN(P16);
@GIN(P17);
@GIN(P18);
@GIN(P19);
@GIN(P20);
@GIN(P21);

但正如你所看到的,它有点笨拙。您如何将其转换为循环并大大缩短该代码并使其更具可读性。

我找到了这个 :

https://www.lindo.com/doc/online_help/lingo17_0/inputting_the_data.htm

但不能完全理解语法。

我试过这个:

Min=Dowels*23;
SETS:
 SEMANA/ 1..21/: P;
ENDSETS

Dowels =  @SUM(SEMANA(J):P(J)); 

D1>=25;
D2>=70;
D3>=65;
D4>=45;
D1=2*P1+P2+P3+P4+P5+P6+P7;
D2=P2+P3+3*P8+2*(P9+P10+P11)+P12+P13+P14+P15;
D3=P2+3*P4+2*P5+P6+2*P9+P10+3*P12+2*P13+P14+5*P16+4*P17+3*P18+2*P19+P20;
D4=P1+P2+2*(P3+P5)+4*P6+5*P7+P8+2*P10+4*P11+P12+3*P13+5*P14+7*P15+P16+2*P17+4*P18+6*P19+8*P20+9*P21;

@FOR (SEMANA(j) | j#GT#1: 
  @GIN(P(J))
);
4

0 回答 0