Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)