예제 #1
0
 def run_mcmc(self):
     complete = self.chains.check_completness()
     if not complete:
         for i in range(self.nchains):
             self.chains.chains.append(
                 Chain(self.chains.chains_filename, self.covfile, nchain=i, nsteps=self.nsteps))
         pool = Pool(processes=self.nchains)
         try:
             # Without the .get(9999), you can't interrupt this with Ctrl+C.
             pool.map_async(self.mcmc, self.chains.chains).get(999999)
             pool.close()
             pool.join()
             # to skip lines after the progress bars
             print '\n' * self.nchains
         except KeyboardInterrupt:
             pool.terminate()
     self.likelihood = self.chains.chains_to_likelihood()
     self.likelihood.stats(self.covfile)
     # [self.results[i].append(self.likelihood.pdfs[i].mean) for i in range(self.chains.dim)]
     # self.p = [self.likelihood.pdfs[i].mean for i in range(self.chains.dim)]
     self.p = self.chains.best_row_params
     self.simulation(self.spectrum.lambdas, *self.p)
     # [self.results_err[i].append([self.likelihood.pdfs[i].error_high,self.likelihood.pdfs[i].error_low]) for i in range(self.chains.dim)]
     # if(self.plot):
     self.likelihood.triangle_plots()
     self.plot_fit()
     # if convergence_test :
     self.chains.convergence_tests()
     return self.likelihood
예제 #2
0
def gridSearch(options, use_datasets, numExamples, compute_mistakes=False, verbose=False, parallelize=False):
    if MODEL_KEYWORD not in options:
        print 'ERROR: must specify models for grid search under "%s" key.' % (MODEL_KEYWORD)
        return
    paramCombos = myProduct(options)
    partialTestCombo = partial(testCombo, use_datasets=use_datasets, numExamples=numExamples, compute_mistakes=compute_mistakes, verbose=verbose)
    if parallelize:
        from pathos.multiprocessing import Pool
        p = Pool(5)
        try:
            result = p.map_async(partialTestCombo, paramCombos)
            result = result.get(999999999)
            bestScore, bestParamsStr, bestCombo = max(result, key=lambda x:x[0])
            sys.stdout = open("best.out", "w")
            print 'Best score of %s was achieved by parameters:\n%s' % (bestScore, bestParamsStr)
        except KeyboardInterrupt:
            p.terminate()
            print "You cancelled the program!"
            sys.exit(1)
    else:
        bestScore, bestCombo, bestComboStr = float('-inf'), None, ''
        for paramCombo in paramCombos:
            score, paramsStr, _ = testCombo(paramCombo, use_datasets=use_datasets, numExamples=numExamples, compute_mistakes=compute_mistakes, verbose=verbose, parallelize=False)
            if score > bestScore:
                bestScore, bestCombo, bestComboStr = score, paramCombo, paramsStr
        print 'Best score of %s was achieved by parameters:\n%s' % (bestScore, bestComboStr)
예제 #3
0
def main():
    from dask.diagnostics import ProgressBar
    ProgressBar().register()
    p = Pool(8)
    data_long = dd.read_csv('../NREL_Locations_clean.csv').compute()
    results = p.map_async(make_request,
                          [gb for gb in data_long.groupby('VIN_ID')]).get()
    print('total vehicles: ', np.sum(results))
예제 #4
0
class MyProblem(ea.Problem):  # 继承Problem父类
    def __init__(self, func, dim, lb, ub, njobs=0):
        self.func = func
        # 初始化name(函数名称,可以随意设置)
        name = 'MyProblem'
        # 初始化M(目标维数)
        M = 1
        # 初始化maxormins(目标最小最大化标记列表,1:最小化该目标;-1:最大化该目标)
        maxormins = [1]
        # 初始化Dim(决策变量维数)
        Dim = dim
        # 初始化varTypes(决策变量的类型,元素为0表示对应的变量是连续的;1表示是离散的)
        varTypes = [0] * Dim
        # 决策变量下界
        # lb = [0] * Dim
        # 决策变量上界
        # ub = [1, 1, 3, 3]
        # 决策变量下边界(0表示不包含该变量的下边界,1表示包含)
        lbin = [1] * Dim
        # 决策变量上边界(0表示不包含该变量的上边界,1表示包含)
        ubin = [1] * Dim
        # 多进程
        self.njobs = njobs
        if njobs > 1:
            self.pool = Pool(njobs)
        elif njobs == -1:
            self.pool = Pool(int(cpu_count()))
        else:
            self.pool = None
        # 可视化
        self.count = 0
        # 调用父类构造方法完成实例化
        ea.Problem.__init__(self, name, M, maxormins, Dim, varTypes, lb, ub,
                            lbin, ubin)

    def aimFunc(self, pop):  # 目标函数
        x = pop.Phen  # 得到决策变量矩阵
        # 使用多进程进行
        if self.pool is not None:
            results = self.pool.map_async(self.func, list(x))
            results.wait()
            # 计算目标函数值,赋值给pop种群对象的ObjV属性
            results = np.array([results.get()]).T
        else:
            results = []
            for i in range(x.shape[0]):
                results.append(self.func(x[i, :]))
            results = np.stack(results, axis=0)
            results = np.expand_dims(results, 1)
        # 计算目标函数值,赋值给pop种群对象的ObjV属性
        pop.ObjV = results
        # 打印计数信息,便于进行查看
        self.count += 1
        print("第%d代完成" % self.count)
    def vw_train_and_test(self, options_list, data_file_paths):
        def init_worker():
            signal.signal(signal.SIGINT, signal.SIG_IGN)

        def run_learner(options):
            train_options = {
                'final_regressor': os.path.join(self.work_dir, id_generator()),
                'data': data_file_paths['train'],
                'cache_file': data_file_paths['train'] + '.cache'
            }
            train_options.update(options)
            test_options = {
                'data': data_file_paths['test'],
                'predictions': os.path.join(self.work_dir, id_generator()),
                'cache_file': data_file_paths['test'] + '.cache'
            }
            test_options.update(options)

            # TO DO: remove below if.
            if 'kill_cache' in options:
                del train_options['kill_cache']
                del test_options['kill_cache']

            vw_wrapper = VW_Wrapper(verbose=False)
            vw_wrapper.train(train_options)
            predictions = vw_wrapper.test(test_options)
            os.remove(train_options['final_regressor'])
            os.remove(test_options['predictions'])
            return options, predictions

        if len(options_list) > 1:
            try:
                if not os.path.isfile(data_file_paths['test'] +
                                      '.cache') or not os.path.isfile(
                                          data_file_paths['train'] + '.cache'):
                    run_learner(options_list[0])
                pool = Pool(len(options_list), init_worker)
                result_list = pool.map_async(run_learner,
                                             options_list).get(99999999)
                pool.close()
                pool.join()
                return result_list
            except KeyboardInterrupt:
                print '  Keyboard Interrupt, exiting...) '
                pool.terminate()
                pool.join()
                sys.exit(0)

        elif len(options_list) == 1:
            return [run_learner(options_list[0])]
        else:
            return []
예제 #6
0
def gridSearch(options,
               use_datasets,
               numExamples,
               compute_mistakes=False,
               verbose=False,
               parallelize=False):
    if MODEL_KEYWORD not in options:
        print 'ERROR: must specify models for grid search under "%s" key.' % (
            MODEL_KEYWORD)
        return
    paramCombos = myProduct(options)
    partialTestCombo = partial(testCombo,
                               use_datasets=use_datasets,
                               numExamples=numExamples,
                               compute_mistakes=compute_mistakes,
                               verbose=verbose)
    if parallelize:
        from pathos.multiprocessing import Pool
        p = Pool(5)
        try:
            result = p.map_async(partialTestCombo, paramCombos)
            result = result.get(999999999)
            bestScore, bestParamsStr, bestCombo = max(result,
                                                      key=lambda x: x[0])
            sys.stdout = open("best.out", "w")
            print 'Best score of %s was achieved by parameters:\n%s' % (
                bestScore, bestParamsStr)
        except KeyboardInterrupt:
            p.terminate()
            print "You cancelled the program!"
            sys.exit(1)
    else:
        bestScore, bestCombo, bestComboStr = float('-inf'), None, ''
        for paramCombo in paramCombos:
            score, paramsStr, _ = testCombo(paramCombo,
                                            use_datasets=use_datasets,
                                            numExamples=numExamples,
                                            compute_mistakes=compute_mistakes,
                                            verbose=verbose,
                                            parallelize=False)
            if score > bestScore:
                bestScore, bestCombo, bestComboStr = score, paramCombo, paramsStr
        print 'Best score of %s was achieved by parameters:\n%s' % (
            bestScore, bestComboStr)