1 SUBROUTINE ga_evalout(fbar, best, fcn, nopt, fvec, nfev, &
2 num_processors, iflag, myid)
8 USE mpi_params,
ONLY: master
12 EXTERNAL ga_fitness_parallel
14 INTEGER :: nopt, n, j, k, kk, iflag, myid
15 REAL(rprec),
DIMENSION(nopt) :: fvec
16 REAL(rprec),
DIMENSION(nparmax) :: paramsm,paramav
17 INTEGER :: nfev, num_processors
18 REAL(rprec) :: fitsum, funcval, fbar, best
19 INTEGER :: jstart, jend, istat, jstat
29 IF (myid .eq. master)
WRITE(6,*)
'in ga_evalout',num_processors
30 WRITE(6,*) fbar,best,nopt,nfev,iflag
39 IF(iskip.ne.0) jstart=iskip
40 IF(iend.ne.0) jend=iend
44 CALL ga_decode(j,parent,iparent)
57 IF(ldiag_opt .and. myid.eq.master)
THEN
58 IF(nchrome .le. 120)
THEN
59 WRITE(iunit_ga_out,1075) j,(iparent(k,j),k=1,nchrome)
61 WRITE(iunit_ga_out,1075) j,(iparent(k,j),k=1,120)
62 WRITE(iunit_ga_out,1077) (iparent(k,j),k=121,nchrome)
64 WRITE(iunit_ga_out,1076) (parent(kk,j),kk=1,nparam)
69 CALL ga_fitness_mpi (jend-jstart+1, f_obj, num_obj,
72 IF (myid .eq. master)
WRITE(6,
'(1x,i4,a,i4,a)') jend-jstart+1,
73 ' processes started on ',num_processors,
' processors'
77 CALL flush(iunit_ga_out)
79 CALL multiprocess(jend-jstart+1, num_processors,
80 ga_fitness_parallel, fcn )
82 nfev=nfev+jend-jstart+1
87 CALL fcn(nopt, npopsiz, parent(1,jbest), fvec, iflag, nfev)
97 READ(j+1000, iostat=istat) jstat, iflag
98 IF( jstat .ne. j )
THEN
99 WRITE(6,*)
"wrong INDEX READ in evalout"
104 READ(j+1000, iostat=istat) funcval
106 CLOSE(j+1000, status=
'delete')
109 DO 30 j = jstart, jend
110 fitsum=fitsum+fitness(j)
112 paramsm(n)=paramsm(n)+parent(n,j)
116 IF (fitness(j).gt.best)
THEN
120 ibest(k)=iparent(k,j)
128 paramav(n)=paramsm(n)/npopsiz
133 IF (myid.eq.master)
THEN
135 IF (npopsiz.eq.1)
THEN
136 IF(nchrome .le. 120)
THEN
137 WRITE(iunit_ga_out,1075) 1,(iparent(k,1),k=1,nchrome)
139 WRITE(iunit_ga_out,1075) 1,(iparent(k,1),k=1,120)
140 WRITE(iunit_ga_out,1077) (iparent(k,j),k=121,nchrome)
142 WRITE(iunit_ga_out,1076) (parent(k,1),k=1,nparam)
143 WRITE(iunit_ga_out,1078) fitness(1)
144 WRITE(iunit_ga_out,*)
' Average Values:'
145 WRITE(iunit_ga_out,1275) (parent(k,1),k=1,nparam)
146 WRITE(iunit_ga_out,1276) fbar
148 WRITE(iunit_ga_out,1275) (paramav(k),k=1,nparam)
149 WRITE(iunit_ga_out,1276) (fitness(j),j=1,npopsiz)
153 WRITE(iunit_ga_out,1100) fbar
155 WRITE(iunit_ga_out,1200) best
158 1075
FORMAT(i3,1x,(120i1))
159 1077
FORMAT(3x,1x,(120i1))
160 1076
FORMAT(3x,1x,10(1x,e10.4))
161 1078
FORMAT(10x,e12.5)
162 1100
FORMAT(1x,
'Average Function Value of Generation=',e12.5)
163 1200
FORMAT(1x,
'Maximum Function Value =',e12.5/)
164 1275
FORMAT(/
' Average Values:',18x,10(1x,e10.4))
165 1276
FORMAT(10x,10e12.5)
167 END SUBROUTINE ga_evalout