1 SUBROUTINE ga_mutate (myid)
5 USE mpi_params,
ONLY: master
7 INTEGER :: nmutate, ncreep, j, k, myid
8 REAL(rprec) :: rand, creep
21 IF (rand.le.pmutate)
THEN
23 IF(ichild(k,j).eq.0)
THEN
28 IF (nowrite.eq.0 .and. myid.eq.master)
THEN
30 WRITE(iunit_ga_out,1300) j,k
38 IF(rand.le.pcreep)
THEN
39 CALL ga_decode(j,child,ichild)
43 IF (rand.lt.0.5_dp) creep=-1
44 child(k,j)=child(k,j)+g1(k)*creep
45 IF (child(k,j).gt.par_max(k))
THEN
46 child(k,j)=par_max(k)-1.0d0*g1(k)
47 ELSEIF (child(k,j).lt.par_min(k))
THEN
48 child(k,j)=par_min(k)+g1(k)
50 CALL ga_code(j,k,child,ichild)
51 IF (nowrite.eq.0 .and. myid.eq.master)
THEN
53 WRITE(iunit_ga_out,1350) j,k
59 IF (myid .eq. master)
THEN
60 WRITE(6,1250) nmutate,ncreep
61 WRITE(iunit_ga_out,1250) nmutate,ncreep
64 1250
FORMAT(/
' Number of Jump Mutations =',i5/
65 +
' Number of Creep Mutations =',i5)
66 1300
FORMAT(
'*** Jump mutation performed on individual ',i4,
67 +
', chromosome ',i3,
' ***')
68 1350
FORMAT(
'*** Creep mutation performed on individual ',i4,
69 +
', PARAMETER ',i3,
' ***')
71 END SUBROUTINE ga_mutate