1  REM  ****  HP BASIC PROGRAM LIBRARY  ****************************
2  REM
3  REM        STERL:  FLY POPULATION CONTROL
4  REM
5  REM        36641  REV B   10/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  *********************************
100  REM STERL2 -- PROGRAM ON FLY POPULATION CONTROL BY INTRODUCTION   
105  REM OF STERILE MALE FLIES AND USE OF PESTICIDE  
110  REM COPYRIGHT 1971 - POLYTECHNIC INSTITUTE OF BROOKLYN  
115  REM X(T)=NUMBER OF NORMAL MALES ON DAY T  
120  REM S(T)=NUMBER OF STERILE MALES ON DAY T 
125  REM INFORMATION ON THE LIFE CYCLE OF THE FLY IS CONTAINED IN THE  
130  REM E,P,Q,V, AND W ARRAYS, WHICH ARE TREATED AS CIRCULAR QUEUES.  
135  REM E=EGGS, G=POINTER FOR E 
140  REM P=NORMAL MALES, Q=STERILE MALES, L=POINTER FOR P AND Q  
145  REM V=POPULATION OF NORMAL MALES FOUR DAYS AGO  
150  REM W=POPULATION OF STERILE MALES FOUR DAYS AGO 
155  REM P1=POINTER FOR V AND W  
160  REM PROGRAM DEVELOPED BY L. BRAUN AND A. FRISHMAN 
165  REM PROGRAMMED BY C. LOSIK, JANUARY 1971  
170  REM LATEST REVISION: 8-10-71  
175  PRINT " ","CONTROL OF SCREW-WORM FLY POPULATION"
180  PRINT 
185  PRINT "INSTRUCTIONS (1=YES, 0=NO)";
190  INPUT F
195  IF F=0 THEN 330
200  IF F <> 1 THEN 185
205  PRINT 
210  PRINT "YOUR GOAL WILL BE TO ELIMINATE THE ONE MILLION MALE"
215  PRINT "FLIES NOW IN YOUR 10000 SQUARE MILE AREA, THUS DESTROYING"
220  PRINT "THE TOTAL FLY POPULATION.  YOU MAY USE A PESTICIDE,"
225  PRINT "RELEASE STERILE MALE FLIES, OR BOTH.  INDICATE THE TYPE"
230  PRINT "OF CONTROL PROGRAM YOU WANT BY TYPING IN THE APPROPRIATE"
235  PRINT "RESPONSES TO THE FOLLOWING QUESTIONS:"
240  PRINT 
245  PRINT "'PESTICIDE?'"
250  PRINT "  0= NO PESTICIDES."
255  PRINT "  1= PESTICIDES ON SPECIFIED DAYS.  INDICATE"
260  PRINT "     THESE DAYS BY TYPING A DAY NUMBER (BETWEEN 1 AND 75)"
265  PRINT "     NEXT TO EACH '?' THAT APPEARS; TYPE 0 WHEN FINISHED."
270  PRINT 
275  PRINT "'STERILE FLIES?'"
280  PRINT "  0= NO STERILE FLIES."
285  PRINT "  1= STERILE FLIES WILL BE RELEASED.  COMPUTER WILL"
290  PRINT "     ASK 'HOW OFTEN?'  TYPE 1=DAILY OR 2=CERTAIN DAYS"
295  PRINT "  IF 1, SPECIFY NUMBER OF FLIES EACH DAY (UP TO 1000000),"
300  PRINT "        THE FIRST DAY OF THE PERIOD, AND THE LAST DAY"
305  PRINT "        (BETWEEN 1 AND 75 DAYS)."
310  PRINT "  IF 2, FOR EACH DAY SELECTED, SPECIFY THE DAY NUMBER"
315  PRINT "        (BETWEEN 1 AND 75) AND THE NUMBER OF STERILE FLIES"
320  PRINT "        (UP TO 1000000).  USE A NEW LINE FOR EACH DAY."
325  PRINT "        TYPE 0,0 WHEN FINISHED."
330  PRINT 
335  PRINT "**********"
340  REM SET UP INITIAL CONDITIONS 
345  DIM X[76],S[76],P[17],Q[17],E[13],V[4],W[4]
350  REM T1:DAYS FROM EGG TO ADULT 
355  LET T1=13
360  REM T2:LIFE SPAN AS ADULT 
365  LET T2=17
370  REM X9:MAXIMUM NUMBER OF MALE FLIES THAT THE AREA CAN SUPPORT 
375  LET X9=1.E+06
380  REM K:SEXUAL ACTIVITY COEFFICIENT OF STERILE MALES  
385  LET K=.25
390  REM B0:NORMAL BIRTH RATE OF MALES 
395  LET B0=250/2
400  REM C:SURVIVAL RATE OF EGG,MAGGOT,PUPA  
405  LET C=.01
410  REM C9:COST OF CONTROL PROGRAM * 100  
415  LET C9=0
420  REM START POPULATION AT MAXIMUM VALUE 
425  LET X[1]=X9
430  LET S[1]=0
435  REM INITIAL CONDITIONS FOR ADULT MALES AND EGGS 
440  FOR L=1 TO T2
445  LET P[L]=X[1]/T2
450  LET Q[L]=0
455  NEXT L
460  FOR G=1 TO T1
465  LET E[G]=B0*X[1]/T2
470  NEXT G
475  FOR P1=1 TO 4
480  LET V[P1]=X[1]/T2
485  LET W[P1]=0
490  NEXT P1
495  LET L=17
500  LET G=13
505  LET P1=4
510  FOR T=2 TO 76
515  LET S[T]=0
520  LET X[T]=0
525  NEXT T
530  PRINT 
535  REM DETERMINE OPTIONS IN MODEL  
540  PRINT "PESTICIDE (1=YES, 0=N0)";
545  INPUT T
550  IF T=0 THEN 600
555  IF T <> 1 THEN 540
560  PRINT "WHICH DAYS"
565  INPUT T
570  IF T=0 THEN 600
575  IF ABS(T-38)>37 THEN 560
580  IF T <> INT(T) THEN 560
585  LET X[T+1]=1
590  LET C9=C9+1.E+07
595  GOTO 565
600  PRINT 
605  PRINT "STERILE FLIES (1=YES, 0=NO)";
610  INPUT T
615  IF T=0 THEN 770
620  IF T <> 1 THEN 600
625  PRINT "HOW OFTEN (1=DAILY, 2=SELECTED DAYS)";
630  INPUT T
635  IF T=1 THEN 695
640  IF T <> 2 THEN 625
645  PRINT "DAY, NUMBER OF FLIES"
650  INPUT T,J
655  IF T=0 THEN 770
660  IF ABS(J-X9/2)>X9/2 THEN 645
665  IF J <> INT(J) THEN 645
670  IF ABS(T-38)>37 THEN 645
675  IF T <> INT(T) THEN 645
680  LET S[T+1]=J
685  LET C9=C9+J
690  GOTO 650
695  PRINT "HOW MANY PER DAY";
700  INPUT J
705  IF ABS(J-X9/2)>X9/2 THEN 695
710  IF J <> INT(J) THEN 695
715  PRINT "FROM WHEN, TO WHEN";
720  INPUT T,T9
725  IF ABS(T9-38)>37 THEN 715
730  IF T9 <> INT(T9) THEN 715
735  IF ABS(T-38)>37 THEN 715
740  IF T <> INT(T) THEN 715
745  IF T>T9 THEN 715
750  FOR F=T+1 TO T9+1
755  LET S[F]=J
760  NEXT F
765  LET C9=C9+J*(T9-T+1)
770  PRINT 
775  PRINT 
780  PRINT " "," MILLIONS OF NORMAL ADULT MALE FLIES"
785  PRINT "       0        .2        .4        .6        .8         1"
790  PRINT "DAY    I---------I---------I---------I---------I---------I"
795  PRINT 0;TAB(6);"I";TAB(57);"* ";INT(X[1]+.5)
800  REM START SIMULATION  
805  FOR T=1 TO 75
810  REM OLD AGE DEATHS IN POPULATION  
815  LET D=P[L]
820  LET D1=Q[L]
825  REM BIRTHS IN POPULATION  
830  LET T9=T+1
835  LET C=-3.33E-08*X[T]+.04333
840  LET P[L]=C*E[G]
845  LET Q[L]=S[T9]
850  REM EMIGRATION/IMMIGRATION EFFECTS  
855  LET Z=X[T]+P[L]+S[T]-(D+D1+X9)
860  IF Z<0 THEN 880
865  LET F=Z/(Z+X9)
870  GOSUB 1065
875  GOTO 910
880  LET D=D+.1*Z
885  LET Z=ABS(.1*Z/T2)
890  FOR J=1 TO T2
895  LET P[J]=P[J]+Z
900  NEXT J
905  REM PESTICIDE EFFECTS 
910  IF X[T9]<.5 THEN 925
915  LET F=.9
920  GOSUB 1065
925  LET X[T9]=X[T]+C*E[G]-D
930  LET S[T9]=S[T]+S[T9]-D1
935  PRINT T;TAB(6);"I";TAB(7+INT(50*X[T9]/X9+.5));"* ";INT(X[T9]+.5)
940  REM BACK UP SEVEN DAYS FOR EGG CALCULATION
945  LET Z=L-7
950  IF Z >= 1 THEN 960
955  LET Z=Z+T2
960  LET F=V[P1]+K*W[P1]
965  IF F>.5 THEN 980
970  LET E[G]=P[Z]*B0
975  GOTO 985
980  LET E[G]=P[Z]*B0*V[P1]/F
985  LET Z=L-3
990  IF Z >= 1 THEN 1000
995  LET Z=Z+T2
1000  LET V[P1]=P[Z]
1005  LET W[P1]=Q[Z]
1010  LET L=L+1
1015  IF L <= T2 THEN 1025
1020  LET L=1
1025  LET G=G+1
1030  IF G <= T1 THEN 1040
1035  LET G=1
1040  LET P1=P1+1
1045  IF P1 <= 4 THEN 1055
1050  LET P1=1
1055  NEXT T
1060  GOTO 1105
1065  LET Z=1-F
1070  FOR J=1 TO T2
1075  LET D=D+F*P[J]
1080  LET D1=D1+F*Q[J]
1085  LET P[J]=Z*P[J]
1090  LET Q[J]=Z*Q[J]
1095  NEXT J
1100  RETURN 
1105  PRINT "       I---------I---------I---------I---------I---------I"
1110  PRINT 
1115  PRINT 
1120  PRINT "COST OF FLY CONTROL: $";.01*C9
1125  PRINT 
1130  PRINT "ANOTHER RUN (1=YES, 0=NO)";
1135  INPUT T
1140  IF T=1 THEN 330
1145  IF T <> 0 THEN 1130
1150  END 
