def updateSeriesTable(self): self.Output_Series.clear() selectedDataStats = self.data.getSelectedDataStats() self.Output_Series.setRowCount(len(selectedDataStats)) self.Output_Series.setColumnCount(2) for row, val in enumerate(selectedDataStats): print(lstr(row + 0.5)) label, value = val title = QtWidgets.QTableWidgetItem(label) self.Output_Series.setItem(row, 0, title) if not isinstance(value, str): value = lstr(value) print(value) value = QtWidgets.QTableWidgetItem(value) self.Output_Series.setItem(row, 1, value) self.Output_Series.resizeColumnsToContents()
if i >= cycles: break return errors_data funs_data = [] for f in funcs: print(f.__name__) funs_data.append(train(f)) return funs_data times = 10 cycles = 100 # repeat for average avg_data = train_network() for _ in range(times - 1): data = train_network() # consolidate for i, new_func_data, avg_func_data in zip(range(len(funcs)), data, avg_data): avg_data[i] = [sum(d) for d in zip(new_func_data, avg_func_data)] # divide and convert to polish notation (use locale) for i, func_data in enumerate(avg_data): avg_data[i] = [lstr(error / times) for error in func_data] # transpose for excel avg_data = list(zip(*avg_data)) # save with open("neural_data.csv", 'w') as file: writer = csv.writer(file, delimiter=';') # delimit with semicolons writer.writerows(avg_data)
print(f"Generation: #{generation}") # evaluate for fitness evaluate_networks(networks) # sort with fittest at the top networks.sort(key=lambda n: n.fitness, reverse=True) best_net = networks[0] # save the best net if needed print(f"Best fitness: {best_net.fitness}") if best_net.fitness > best_net_data[0]: best_net_data = (best_net.fitness, best_net.export_data()) print(f"New best: {best_net.fitness}\n") snake_data.append([ generation, # current generation best_net_data[0], # current best fitness # average fitness of a population lstr(sum(n.fitness for n in networks) / len(networks)), ]) if generation >= max_generation: break # select for the next generation networks = select_networks(networks) # crossover for the next generation networks = crossover_networks(networks) # save data for the performance graph with open("snake_data.csv", 'w') as file: writer = csv.writer(file, delimiter=';') # delimit with semicolons writer.writerows(snake_data) # restore the best network best_net = Network(net_args) best_net.fitness = best_net_data[0]
def setInitialUIvalues(self): self.NeutralMass.setText(lstr(22870)) self.MassAccuracy.setText(lstr(200)) self.MinCS.setText(lstr(1)) self.MaxCS.setText(lstr(50)) self.Calibration_a.setText(lstr(231.7)) self.Calibration_b.setText(lstr(118.7)) self.Calibration_X.setText(lstr(0.6262)) self.TransferParam.setText(lstr(1.41)) self.PusherDelay.setText(lstr(110)) self.Gas_mass.setText(lstr(28)) print(lstr(255.3))