代码之家  ›  专栏  ›  技术社区  ›  Ryan Oscar

添加循环以获得结果“n”次,并将平均值输入csv-Python

  •  0
  • Ryan Oscar  · 技术社区  · 7 年前

    #loop should start here        
        pop_size=50
        #128 to #135 loop
        W = initial_population(region, scale , pop_size)
    
        pop = PatternPosePopulation(W, pat)
        pop.set_distance_image(imd)
    
        pop.temperature = 5
    
        Lw, Lc = pop.particle_filter_search(int(1000/pop_size),log=True)
        #Loop should end here for example run pop 50 x n times and store best_cost, take average of bestcost save to csv file.
    
        plt.plot(Lc)
        plt.title('Cost vs generation index')
        plt.show()
    
        print(pop.best_w)
        print(pop.best_cost)
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   LcdDrm    7 年前
    best_costs = []
    for iteration in range(n):     
        pop_size=50
        W = initial_population(region, scale , pop_size)
    
        pop = PatternPosePopulation(W, pat)
        pop.set_distance_image(imd)
    
        pop.temperature = 5
    
        Lw, Lc = pop.particle_filter_search(int(1000/pop_size),log=True)
    
        best_costs.append(pop.best_cost)#store the best cost for this iteration
    
        #Loop should end here for example run pop 50 x n times and store best_cost, take average of bestcost save to csv file.
    
        plt.plot(Lc)
        plt.title('Cost vs generation index')
        plt.show()
    
        print(pop.best_w)
        print(pop.best_cost)
    
    #write to csv
    best_cost_total = min(best_costs)
    best_cost_avg = sum(best_costs) / n
    
    results = [str(best_cost_total), str(best_cost_avg)]
    
    with open('results.csv', 'w') as f:
        f.write(";".join(results))
    

    这会将最佳成本和平均值写入 results.csv 具有 ; 作为分隔符。对于更具体的方法,需要更多信息。。。

    编辑:没错,写入csv部分应该在循环之后