C ****************************************************************************** SUBROUTINE FITNESS(IORG) INCLUDE 'DARWING2.CMN' REAL*4 WLGTH, DR2, LGTHJK, DX, DY INTEGER*2 NUMSEG, NUMSHORT, M, I, J, K CHARACTER*1 ANS WLGTH = 0.0 NUMSEG = 0 NUMSHORT = 0 DO 100 J = 1, NFIX+NPV-1 C WRITE (*,*) 'J,X,Y=',J,XP(J),YP(J) DO 200 K = J+1, NFIX+NPV C WRITE (*,*) 'K,X,Y=',K,XP(K),YP(K) C WRITE (*,*) 'CN(J,K)=',CN(J,K) M = NTOT*(J-1)+K IF (CN(J,K)) THEN DX = XP(K)-XP(J) DY = YP(K)-YP(J) DR2 = DX*DX + DY*DY C WRITE (*,*) 'J,DX,DY,DR2=' C WRITE (*,*) J,DX,DY,DR2 LGTHJK = SQRT(DR2) ! LENGTH OF THIS SEGMENT (J TO K) C write (*,*) 'LGTHJK = ', LGTHJK WLGTH=WLGTH + LGTHJK ! RUNNING LENGTH NUMSEG=NUMSEG+1 ! RUNNING # SEGMENTS TOTAL END IF 200 CONTINUE 100 CONTINUE C WRITE (*,*) 'WLGTH=',WLGTH FTNSS(IORG)=WLGTH C read (*,'(a1)') ANS RETURN END C ***************************************************************** SUBROUTINE GETONE(IORG,L1,L2,FITSUM) ! SELECT BOY OR GIRL, BASED ON FITNESS INCLUDE 'DARWING2.CMN' INCLUDE 'DSEED.CMN' REAL*4 FITSUM, NORM, L1, L2, X, Z, PARTSUM INTEGER*2 IORG, JORG character*2 STRG IF (L1.EQ.L2) THEN WRITE (*,*) 'DIVVY BY ZERO IN GETONE!' read (*,'(a2)') STRG STOP END IF NORM = (NORG*L2-FITSUM)/(L2-L1) ! SMALL BETTER THEN LARGE RNDVAL = URAND(SEED) X = (RNDVAL**BFACTOR)*NORM ! STRONG FACTOR; BFACTOR