예제 #1
0
    def go(self):
        '''
        '''
        print 'Go go go'

        jobs = []
        for i in range(5, 100, 10):
            jobs.append(
                make_job(self.base_job,
                         {'name': '{}'.format(i),
                          'population': i,
                          'generations': 250,
                          'mutate': ('insert_mut', {'indpb': 0.05}),
                         }))
            jobs.append(
                make_job(self.base_job,
                         {'name': '{}m'.format(i),
                          'population': i,
                          'generations': 250,
                          'mutate': ('meta_insert', {'indpb': 0.05}),
                         }))

        self.compare(jobs)

        print 'Done'
예제 #2
0
    def go(self):
        '''
        '''
        print 'Go go go'

        jobs = []
        for pop in (100,):
            
            jobs.append(
                make_job(self.base_job,
                         {'name': '{}m'.format(pop),
                          'population': pop,
                          # 'generations': 1000,
                          'mutate': ('meta_insert', {'indpb': 0.05}),
                          'mate': 'cxSCX_meta',
                         }))
            jobs.append(
                make_job(self.base_job,
                         {'name': '{}'.format(pop),
                          'population': pop,
                          # 'generations': 1000,
                          'mutate': ('insert_mut', {'indpb': 0.05}),
                          'mate': 'cxSCX',
                         }))

        self.compare(jobs)

        print 'Done'
예제 #3
0
    def go(self):
        '''
        '''
        print 'Go go go'

        jobs = []
        for i in range(5, 100, 10):
            jobs.append(
                make_job(
                    self.base_job, {
                        'name': '{}'.format(i),
                        'population': i,
                        'generations': 250,
                        'mutate': ('insert_mut', {
                            'indpb': 0.05
                        }),
                    }))
            jobs.append(
                make_job(
                    self.base_job, {
                        'name': '{}m'.format(i),
                        'population': i,
                        'generations': 250,
                        'mutate': ('meta_insert', {
                            'indpb': 0.05
                        }),
                    }))

        self.compare(jobs)

        print 'Done'
예제 #4
0
 def go(self):
     self.t0 = time.time()
     jobs = [make_job(self.base_job, {}),
             make_job(self.base_job, {}),
             make_job(self.base_job, {}),
             ]
     self.launch(jobs, self.on_result)
     print 'DONE'
예제 #5
0
 def go(self):
     self.t0 = time.time()
     jobs = [
         make_job(self.base_job, {}),
         make_job(self.base_job, {}),
         make_job(self.base_job, {}),
     ]
     self.launch(jobs, self.on_result)
     print 'DONE'
예제 #6
0
    def go(self):
        '''
        '''
        print 'Go go go'

        jobs = []
        for pop in (100, ):

            jobs.append(
                make_job(
                    self.base_job,
                    {
                        'name': '{}m'.format(pop),
                        'population': pop,
                        # 'generations': 1000,
                        'mutate': ('meta_insert', {
                            'indpb': 0.05
                        }),
                        'mate': 'cxSCX_meta',
                    }))
            jobs.append(
                make_job(
                    self.base_job,
                    {
                        'name': '{}'.format(pop),
                        'population': pop,
                        # 'generations': 1000,
                        'mutate': ('insert_mut', {
                            'indpb': 0.05
                        }),
                        'mate': 'cxSCX',
                    }))

        self.compare(jobs)

        print 'Done'
예제 #7
0
파일: optimizer.py 프로젝트: hoh/gaproject
    def go(self):
        '''
        Launches the super uber optimizer.

        Generates a range of values for a parameter, selects
        the best result and goes to the next parameter.
        '''
        print 'Go go go !'

        # 2. Create dictionnaries for range

        print 'Optimizing population'
        jobs = []
        for pop in range(1, 1000, 20):
            job = make_job(self.base_job,
                           {'name': 'pop-{}'.format(pop),
                            'population': pop,
                            'generations': 10000 / pop,
                           })
            jobs.append(job)

        best_job = self.tournament(jobs)

        print 'Optimizing cxpb'
        jobs = []
        for cxpb in xrange(1, 100, 5):
            job = make_job(best_job,
                           {'name': '{}-{}'.format(best_job['operators']['name'], cxpb / 100.),
                            'cxpb': cxpb / 100.,
                           })
            jobs.append(job)

        best_job = self.tournament(jobs)

        print 'Optimizing indpb'
        jobs = []
        for mut in range(1, 100, 5):
            job = make_job(best_job,
                           {'name': '{}-{}'.format(job['name'], mut / 100.),
                            'mutate': (job['mutate'][0], {'indpb': mut / 100.}),
                            })
            jobs.append(job)

        best_job = self.tournament(jobs)

        print 'Optimizing mutpb'
        jobs = []
        for mutpb in xrange(1, 100, 5):
            job = make_job(best_job,
                           {'name': '{}-{}'.format(job['name'], mutpb / 100.),
                           'mutpb': mutpb / 100.,
                           })
            jobs.append(job)

        best_job = self.tournament(jobs)

        print 'Optimizing crossover operator'
        crossovers = ['cxPMX', 'cxSCX', 'cxERX', 'cxOX', 'cxHeuristic']
        jobs = []
        for cx_operator in crossovers:
            job = make_job(best_job,
                           {'name': '{}-{}'.format(job['name'], cx_operator),
                            'mate': cx_operator,
                           })
            if cx_operator == 'cxHeuristic':
                job['evaluate'] = 'eval_adjacent'
                job['mutate'] = ('mutshuf_adj', {'indpb': best_job['mutate'][1]})
                job['indices'] = 'adj_creator'
            else:
                job['evaluate'] = 'eval_simple'
                job['mutate'] = ('mutshuf', {'indpb': best_job['mutate'][1]})
                job['indices'] = 'path_creator'

            jobs.append(job)

        best_job = self.tournament(jobs)

        print 'Optimizing mutation operator'
        jobs = []
        if best_job['mate'] == 'cxHeuristic':
            mutations = ['mutshuf_adj', 'invert_mut_adj', 'insert_mut_adj', 'simple_inv_adj']
        else:
            mutations = ['mutshuf', 'invert_mut', 'insert_mut', 'simple_inv']

        for mut_operator in mutations:
            job = make_job(best_job,
                           {'name': '{}-{}'.format(job['name'], mut_operator),
                            'mutate': (mut_operator, {'indpb': best_job['mutate'][1]}),
                           })

            jobs.append(job)

        best_job = self.tournament(jobs)

        print 'runned'
        raw_input()