def main(): m = 20 # dimensiune populație err = 0.0006 popu = pcrmz.PCrmz() # inițializare populație for i in range(m): popu.cr.append(crmz.CrmzCR(pr=4)) popu.cr[-1].reset((a1, b1, '')) # afișare populație print('Cromozomi generați automat:') for c in popu.cr: x1 = c.getv(1) vfx1 = fx1(x1) print('%2d: %s, coeficient de adecvare %f, f(%.3f)=%f' % (c.id, c.sir(), adecv(c), x1, vfx1)) pylab.plot(x1, vfx1, 'go', linewidth=2, markersize=6) for gnr in range(60): print('') print('gen #%2d: încrucișări ..' % gnr) popu.xbin(adecv) print('gen #%2d: mutații ..' % gnr) popu.mbin(adecv) fg = [] # fitnes generația curentă fgmax = 0 # fitnes maxim al generației curente icmax = 0 # index cromozom cu fitnes maxim for i, c in enumerate(popu.cr): a = adecv(c) fg.append(a) if a > fgmax: fgmax = a # adjustare maxim icmax = i x1 = c.getv(1) # afișare punct vfx1 = fx1(x1) pylab.plot(x1, vfx1, 'b+') x1 = popu.cr[icmax].getv(1) vfx1 = fx1(x1) print('gen #%2d: fitnes total %f' % (gnr, sum(fg))) print(' fitnes maxim %f (cr#%d)' % (fgmax, icmax)) print(' %s, f(%f)=%f' % (popu.cr[icmax].sir(), x1, vfx1)) if abs(vfx1 - fx1min) < err: print('eroarea de aproximare < err') pylab.plot(x1, vfx1, 'rd') break else: pylab.plot(x1, vfx1, 'r.') # afișare grafic pylab.axis([a1, b1, -1.3, 0.3]) pylab.show()
def main(): m = 10 # dimensiune populație popu = pcrmz.PCrmz() # inițializare populație for i in range(m): popu.cr.append(crmz.CrmzCR(pr = 4)) popu.cr[-1].reset( (a1, b1, '') ) # afișare populație print('Cromozomi generați automat:') for c in popu.cr: x1 = c.getv(1) print('%2d: %s, coeficient de adecvare %f, f(%.3f)=%f' % (c.id, c.sir(), adecv(c), x1, fx1(x1))) print('') print popu.sel(adecv, info=True)
def main(): n = 30 # dimensiune cromozom m = 10 # dimensiune populație popu = pcrmz.PCrmz() # inițializare populație for i in range(m): popu.cr.append(crmz.CrmzCB(n)) # afișare populație print('Cromozomi generați automat:') for c in popu.cr: print('%d: %s, coeficient de adecvare %f' % (c.id, c.sir(), adecv(c))) print('') print popu.sel(adecv, info=True)
def main(): n = 30 # dimensiune cromozom m = 10 # dimensiune populație popu = pcrmz.PCrmz() # inițializare populație for i in range(m): popu.cr.append(crmz.CrmzCB(n)) # afișare populație print('Cromozomi generați automat:') for c in popu.cr: print('%d: %s, fitnes %f' % (c.id, c.sir(), adecv(c))) print('') print('gen #0: încrucișări ..') popu.xbin(adecv, info=True, selinfo=True)
def main(): m = 10 # dimensiune populație popu = pcrmz.PCrmz() # inițializare populație for i in range(m): popu.cr.append(crmz.CrmzCR(pr = 4)) popu.cr[-1].reset( (a1, b1, ''), (a2, b2, '') ) # afișare populație print('Cromozomi generați automat:') for c in popu.cr: x1 = c.getv(1) x2 = c.getv(2) print('%2d: %s, fitnes %f, f(%.2f, %.2f)=%f' % (c.id, c.sir(), adecv(c), x1, x2, fx2([x1, x2]))) print('') print popu.sel(adecv, info=True)