def NSGA2(): """ 算法迭代 """ wqs = WaterQualitySim("F:/AWorkSpace/Python-Learning-Data/cs11021.inp") final_json = "F://AWorkSpace//2020data//3000节点组合json//CS-pg-final.json" sp = SensorPlacement(json_path=final_json, individuals_num=200, iterations_num=500, cross_probability=0.5, mutation_probability=0.4) node_result = sp.iteration() # 迭代主程序,输出结果 sp.draw_node(node_result) # 绘图
def no_file2(inp_path): """ 不生成结果文件,数据全部由上个函数返回值组成 """ # 管网加载模块,改善自WNTR库,添加水质模拟模块 wqs = WaterQualitySim(inp_path) # 水质模拟 is_json=False表示不产生json文件 """ 产生dirt结果: {注入污染节点1:{影响节点1:初次污染时间,影响节点2:初次污染时间,...}, 注入污染节点2:{影响节点1:初次污染时间,影响节点2:初次污染时间,...}, ...} """ ky2_paixu = "F://AWorkSpace//2020data//节点重要性排序数据//node_centrality_ky2.json" # node_list = read_paixu(ky2_paixu, cen, large) #node_dirt = wqs.parallel_compute_time_dirt(node_list, is_json=False) node_dirt = wqs.parallel_compute_time_dirt(wqs.nodeList, is_json=False) # 数据处理 """ 将水质模拟的结果改为如下形式,并且节点映射为0 1 2 3...方便算法计算 {节点1:[[污染事件1,污染事件2,...], 平均污染时间], 节点2:[[污染事件1,污染事件2,...], 平均污染时间], ...} """ dirt_data = WaterQualitySimData(node_dirt=node_dirt).change_number( is_out=False) # 算法计算 sp = SensorPlacement(node_dirt=dirt_data, individuals_num=100, iterations_num=500, cross_probability=0.8, mutation_probability=0.4) # 迭代主程序 产生结果 """ node_result样式 [[节点1,节点2..] [节点1,节点2..] ...] """ node_result = sp.iteration() # 迭代主程序,输出结果 sp.draw_node(node_result) # 绘图 result_list = index_to_node(node_result, wqs.nodeList) # 还原原来的节点名称 for i in result_list: print(i) return node_result
def NSGA2(): """ 算法迭代 """ wqs = WaterQualitySim("F:/AWorkSpace/Python-Learning-Data/Net3.inp") final_json = "final_json.json" sp = SensorPlacement(json_path=final_json, individuals_num=10, iterations_num=20) node_result = sp.iteration() # 迭代主程序,输出结果 sp.draw_node(node_result) # 绘图 result_list = index_to_node(node_result, wqs.nodeList) # 还原原来的节点名称 for i in result_list: print(i)
def ky8_json_test(): """ ky8的普通读json文件的算法迭代结果 :return: """ ky8_inp = "F:/AWorkSpace/Python-Learning-Data/ky8.inp" wqs = WaterQualitySim(ky8_inp) final_json = "D:/Git/SensorPlacementInDistributionNetworks/simulation/final_json.json" sp = SensorPlacement(json_path=final_json, individuals_num=100, iterations_num=500) # 算法迭代 node_result = sp.iteration() # 结果输出 sp.draw_node(node_result) # 帕累托解集显示 result_list = index_to_node(node_result, wqs.nodeList) # 将已转化为索引的节点再还原回来 for i in result_list: print(i)
def dirt_test(): ky8_inp = "F:/AWorkSpace/Python-Learning-Data/ky2.inp" wqs = WaterQualitySim(ky8_inp) # 加载管网 node_dirt = wqs.parallel_compute_time_dirt(wqs.nodeList, is_json=False) # 水质模拟 new_dirt = WaterQualitySimData(node_dirt=node_dirt).change_number( is_out=False) # 数据处理 sp = SensorPlacement(node_dirt=new_dirt, individuals_num=8, iterations_num=500) # 算法迭代 node_result = sp.iteration() # 结果输出 sp.draw_node(node_result) # 帕累托解集显示 result_list = index_to_node(node_result, wqs.nodeList) # 将已转化为索引的节点再还原回来 for i in result_list: print(i)
def no_file(inp_path): """ 不生成结果文件,数据全部由上个函数返回值组成 """ # 管网加载模块,改善自WNTR库,添加水质模拟模块 wqs = WaterQualitySim(inp_path) # 水质模拟 is_json=False表示不产生json文件 """ 产生dirt结果: {注入污染节点1:{影响节点1:初次污染时间,影响节点2:初次污染时间,...}, 注入污染节点2:{影响节点1:初次污染时间,影响节点2:初次污染时间,...}, ...} """ node_dirt = wqs.parallel_compute_time_dirt(wqs.nodeList, is_json=False) # 数据处理 """ 将水质模拟的结果改为如下形式,并且节点映射为0 1 2 3...方便算法计算 {节点1:[[污染事件1,污染事件2,...], 平均污染时间], 节点2:[[污染事件1,污染事件2,...], 平均污染时间], ...} """ dirt_data = WaterQualitySimData(node_dirt=node_dirt).change_number( is_out=False) # 算法计算 sp = SensorPlacement(node_dirt=dirt_data, individuals_num=10, iterations_num=500) # 迭代主程序 产生结果 """ node_result样式 [[节点1,节点2..] [节点1,节点2..] ...] """ node_result = sp.iteration() # 迭代主程序,输出结果 sp.draw_node(node_result) # 绘图 result_list = index_to_node(node_result, wqs.nodeList) # 还原原来的节点名称 for i in result_list: print(i) return node_result