diff --git a/.idea/dataSources.local.xml b/.idea/dataSources.local.xml index c5eb274..068a6fe 100644 --- a/.idea/dataSources.local.xml +++ b/.idea/dataSources.local.xml @@ -1,7 +1,7 @@ - + #@ ` @@ -11,7 +11,10 @@ iiabm_user - + + + + diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 4c7bbe4..f57d0d4 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -1,11 +1,11 @@ - + mysql_aurora.aws_wrapper true software.amazon.jdbc.Driver - jdbc:aws-wrapper:mysql://localhost:3306/iiabmdb_20250925 + jdbc:aws-wrapper:mysql://localhost:3306 $ProjectFileDir$ diff --git a/.idea/dataSources/753dde79-ca3d-42e1-8fb4-13124f46b86d.xml b/.idea/dataSources/3ce7b935-0ff7-47a3-aaa8-91063c963644.xml similarity index 64% rename from .idea/dataSources/753dde79-ca3d-42e1-8fb4-13124f46b86d.xml rename to .idea/dataSources/3ce7b935-0ff7-47a3-aaa8-91063c963644.xml index 7f9d481..3410ade 100644 --- a/.idea/dataSources/753dde79-ca3d-42e1-8fb4-13124f46b86d.xml +++ b/.idea/dataSources/3ce7b935-0ff7-47a3-aaa8-91063c963644.xml @@ -1,5 +1,5 @@ - + lower/lower @@ -61,950 +61,949 @@ iiabmdb_20250926|schema||iiabm_user|localhost|TRIGGER|G iiabmdb_20250926|schema||iiabm_user|localhost|UPDATE|G 8.0.36 - - armscii8 - - + armscii8 1 - - ascii + + armscii8 - + ascii 1 - - big5 + + ascii - + big5 1 + + big5 + binary 1 - - cp1250 - - - cp1250 - - - cp1250 - - + cp1250 1 + + cp1250 + + + cp1250 + + + cp1250 + cp1250 - + cp1251 - + cp1251 - + + cp1251 + + cp1251 1 - + cp1251 - - cp1251 - - - cp1256 - - + cp1256 1 - + + cp1256 + + cp1257 - + + cp1257 + + cp1257 1 - - cp1257 - - - cp850 - - + cp850 1 - - cp852 + + cp850 - + cp852 1 - - cp866 + + cp852 - + cp866 1 - - cp932 + + cp866 - + cp932 1 - - dec8 + + cp932 - + dec8 1 - - eucjpms + + dec8 - + eucjpms 1 - - euckr + + eucjpms - + euckr 1 - - gb18030 + + euckr - + gb18030 1 + + gb18030 + gb18030 - - gb2312 - - + gb2312 1 - - gbk + + gb2312 - + gbk 1 - - geostd8 + + gbk - + geostd8 1 - - greek + + geostd8 - + greek 1 - - hebrew + + greek - + hebrew 1 - - hp8 + + hebrew - + hp8 1 - - keybcs2 + + hp8 - + keybcs2 1 - - koi8r + + keybcs2 - + koi8r 1 - - koi8u + + koi8r - + koi8u 1 - + + koi8u + + latin1 - - latin1 - - - latin1 - - - latin1 - - - latin1 - - - latin1 - - - latin1 - - + latin1 1 - + + latin1 + + + latin1 + + + latin1 + + + latin1 + + + latin1 + + + latin1 + + latin2 - - latin2 - - - latin2 - - + latin2 1 - + latin2 - - latin5 + + latin2 - + + latin2 + + latin5 1 - + + latin5 + + latin7 - - latin7 - - + latin7 1 - + latin7 - - macce + + latin7 - + macce 1 - - macroman + + macce - + macroman 1 - - sjis + + macroman - + sjis 1 - - swe7 + + sjis - + swe7 1 - - tis620 + + swe7 - + tis620 1 - - ucs2 + + tis620 - - ucs2 - - - ucs2 - - - ucs2 - - - ucs2 - - - ucs2 - - + ucs2 1 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + ucs2 - + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + + ucs2 + + ucs2 ucs2 - + ucs2 - + ucs2 - - ujis - - + ujis 1 - - utf16 + + ujis - - utf16 - - - utf16 - - - utf16 - - - utf16 - - - utf16 - - + utf16 1 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + utf16 - + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + + utf16 + + utf16 utf16 - - utf16le - - + utf16le 1 - - utf32 + + utf16le - - utf32 - - - utf32 - - - utf32 - - - utf32 - - - utf32 - - + utf32 1 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + utf32 - + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + + utf32 + + utf32 utf32 - - utf8mb3 - - - utf8mb3 - - - utf8mb3 - - - utf8mb3 - - - utf8mb3 - - - utf8mb3 - - + utf8mb3 1 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + utf8mb3 - + + utf8mb3 + + + utf8mb3 + + + utf8mb3 + + + utf8mb3 + + + utf8mb3 + + + utf8mb3 + + utf8mb3 utf8mb3 - + utf8mb3 - + utf8mb3 - - utf8mb4 - 1 - - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + + utf8mb4 + + utf8mb4 utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + + utf8mb4 + 1 + + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - - utf8mb4 - - + utf8mb4 utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - + utf8mb4 - - utf8mb4_general_ci - - - 1 - 2025-09-27.15:34:40 - utf8mb4_0900_ai_ci - - - utf8mb4_0900_ai_ci - - + utf8mb3_general_ci - + + utf8mb4_0900_ai_ci + + + 2025-10-18.02:36:56 + utf8mb4_0900_ai_ci + + + utf8mb4_general_ci + + utf8mb4_0900_ai_ci localhost - +
InnoDButf8mb4_0900_ai_ci
- +
InnoDButf8mb4_0900_ai_ci
- +
InnoDButf8mb4_0900_ai_ci
- +
InnoDButf8mb4_0900_ai_ci
- +
InnoDButf8mb4_0900_ai_ci
- +
InnoDButf8mb4_0900_ai_ci
- +
InnoDButf8mb4_0900_ai_ci
@@ -1029,7 +1028,7 @@ iiabmdb_20250926|schema||iiabm_user|localhost|UPDATE|G PRIMARY - 3421 + 1 1 1 int|0s @@ -1115,7 +1114,7 @@ iiabmdb_20250926|schema||iiabm_user|localhost|UPDATE|G PRIMARY - 7150933 + 1 1 1 int|0s @@ -1165,7 +1164,7 @@ iiabmdb_20250926|schema||iiabm_user|localhost|UPDATE|G PRIMARY - 34201 + 1 1 1 int|0s @@ -1312,7 +1311,7 @@ iiabmdb_20250926|schema||iiabm_user|localhost|UPDATE|G PRIMARY - 213115 + 503 1 1 int|0s @@ -1342,82 +1341,86 @@ iiabmdb_20250926|schema||iiabm_user|localhost|UPDATE|G 6 varchar(5)|0s - + + 7 + varchar(50)|0s + + s_id id without_exp_sample - + id btree 1 - + s_id btree - + 1 1 PRIMARY - + 3631 1 1 int|0s - + 1 2 int|0s - + 1 3 int|0s - + 1 4 bigint|0s - + 1 5 int|0s - + 6 varchar(64)|0s - + 7 datetime|0s - + 8 int|0s - + 9 longtext|0s - + e_id id without_exp_experiment - + id btree 1 - + e_id btree - + 1 1 PRIMARY diff --git a/.idea/dataSources/753dde79-ca3d-42e1-8fb4-13124f46b86d/storage_v2/_src_/schema/iiabmdb_20250925.Yu75yQ.meta b/.idea/dataSources/3ce7b935-0ff7-47a3-aaa8-91063c963644/storage_v2/_src_/schema/iiabmdb_20250925.Yu75yQ.meta similarity index 100% rename from .idea/dataSources/753dde79-ca3d-42e1-8fb4-13124f46b86d/storage_v2/_src_/schema/iiabmdb_20250925.Yu75yQ.meta rename to .idea/dataSources/3ce7b935-0ff7-47a3-aaa8-91063c963644/storage_v2/_src_/schema/iiabmdb_20250925.Yu75yQ.meta diff --git a/.idea/misc.xml b/.idea/misc.xml index e557d17..21c5070 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,4 +4,7 @@
+ +
\ No newline at end of file diff --git a/GA_Agent_0925/SQL_analysis_risk_ga.sql b/GA_Agent_0925/SQL_analysis_risk_ga.sql new file mode 100644 index 0000000..5599228 --- /dev/null +++ b/GA_Agent_0925/SQL_analysis_risk_ga.sql @@ -0,0 +1,21 @@ +SELECT * +FROM ( + SELECT s_id, id_firm, id_product, MIN(ts) AS ts + FROM iiabmdb_20250925.without_exp_result + WHERE `status` = 'D' + AND ga_id = :ga_id + GROUP BY s_id, id_firm, id_product +) AS s_disrupt +WHERE s_id IN ( + SELECT s_id + FROM ( + SELECT s_id, id_firm, id_product, MIN(ts) AS ts + FROM iiabmdb_20250925.without_exp_result + WHERE `status` = 'D' + AND ga_id = :ga_id + GROUP BY s_id, id_firm, id_product + ) AS t + GROUP BY s_id + HAVING COUNT(*) > 1 +) +ORDER BY s_id; diff --git a/GA_Agent_0925/__pycache__/controller_db.cpython-38.pyc b/GA_Agent_0925/__pycache__/controller_db.cpython-38.pyc new file mode 100644 index 0000000..4ade30f Binary files /dev/null and b/GA_Agent_0925/__pycache__/controller_db.cpython-38.pyc differ diff --git a/GA_Agent_0925/__pycache__/creating.cpython-38.pyc b/GA_Agent_0925/__pycache__/creating.cpython-38.pyc new file mode 100644 index 0000000..1937368 Binary files /dev/null and b/GA_Agent_0925/__pycache__/creating.cpython-38.pyc differ diff --git a/GA_Agent_0925/__pycache__/evaluate_func.cpython-38.pyc b/GA_Agent_0925/__pycache__/evaluate_func.cpython-38.pyc new file mode 100644 index 0000000..0f5c8ed Binary files /dev/null and b/GA_Agent_0925/__pycache__/evaluate_func.cpython-38.pyc differ diff --git a/GA_Agent_0925/__pycache__/orm.cpython-38.pyc b/GA_Agent_0925/__pycache__/orm.cpython-38.pyc new file mode 100644 index 0000000..9a698f1 Binary files /dev/null and b/GA_Agent_0925/__pycache__/orm.cpython-38.pyc differ diff --git a/GA_Agent_0925/best_result_with_industry.json b/GA_Agent_0925/best_result_with_industry.json new file mode 100644 index 0000000..3f53350 --- /dev/null +++ b/GA_Agent_0925/best_result_with_industry.json @@ -0,0 +1,136 @@ +{ + "best_individual": [ + 291, + 0.24373090607513836, + 0.5512650768804697, + 1, + 0.7859155564218925, + 0.5993775986748999, + 3, + 0.4456107737714353, + 0.6381237014110205, + 0.07900061820031135, + 0.4734481811962107, + 1.9013725905237802 + ], + "best_fitness": -9999.0, + "best_per_gen": [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ], + "avg_per_gen": [ + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0, + -9999.0 + ], + "industry_matching": { + "matching": [], + "extra": [], + "missing": [ + "2515", + "34533", + "10", + "34539", + "34529", + "513740", + "9", + "34530", + "513742" + ] + } +} \ No newline at end of file diff --git a/GA_Agent_0925/conf_experiment.yaml b/GA_Agent_0925/conf_experiment.yaml new file mode 100644 index 0000000..173d772 --- /dev/null +++ b/GA_Agent_0925/conf_experiment.yaml @@ -0,0 +1,12 @@ +# read by ControllerDB + +# run settings +meta_seed: 2 + +test: # only for test scenarios + n_sample: 1 + n_iter: 100 + +not_test: # normal scenarios + n_sample: 5 + n_iter: 10 diff --git a/GA_Agent_0925/config.json b/GA_Agent_0925/config.json new file mode 100644 index 0000000..8a80a4a --- /dev/null +++ b/GA_Agent_0925/config.json @@ -0,0 +1,15 @@ +{ + "pop_size": 5, + "n_gen": 5, + "n_var": 12, + "bound_min": -5, + "bound_max": 5, + "cx_prob": 0.5, + "mut_prob": 0.2, + "cx_alpha": 0.5, + "mut_sigma": 0.1, + "mut_indpb": 0.2, + "tourn_size": 3, + "n_jobs": 1, + "seed": 42 +} diff --git a/GA_Agent_0925/controller_db.py b/GA_Agent_0925/controller_db.py new file mode 100644 index 0000000..f9f5afa --- /dev/null +++ b/GA_Agent_0925/controller_db.py @@ -0,0 +1,393 @@ +# -*- coding: utf-8 -*- +from orm import db_session, engine, Base, ins, connection +from orm import Experiment, Sample, Result +from sqlalchemy.exc import OperationalError +from sqlalchemy import text +import yaml +import random +import pandas as pd +import platform +import networkx as nx +import json +import pickle + +class ControllerDB: + is_with_exp: bool + dct_parameter = None + is_test: bool = None + db_name_prefix: str = None + reset_flag: int + + lst_saved_s_id: list + + def __init__(self, prefix, reset_flag=0): + with open('conf_experiment.yaml') as yaml_file: + dct_conf_experiment = yaml.full_load(yaml_file) + assert prefix in ['test', 'without_exp', 'with_exp'], "db name not in test, without_exp, with_exp" + + self.is_test = prefix == 'test' + self.is_with_exp = False if prefix == 'test' or prefix == 'without_exp' else True + self.db_name_prefix = prefix + dct_para_in_test = dct_conf_experiment['test'] if self.is_test else dct_conf_experiment['not_test'] + self.dct_parameter = {'meta_seed': dct_conf_experiment['meta_seed'], **dct_para_in_test} + + # print(self.dct_parameter) + # 0, not reset; 1, reset self; 2, reset all + self.reset_flag = reset_flag + self.is_exist = False + self.lst_saved_s_id = [] + + self.experiment_data = [] + self.batch_size = 5000 + # 根据需求设置每批次的大小 + + def init_tables(self): + self.fill_experiment_table() + self.fill_sample_table() + + def fill_experiment_table(self): + firm = pd.read_csv("../input_data/input_firm_data/Firm_amended.csv") + firm['Code'] = firm['Code'].astype('string') + firm.fillna(0, inplace=True) + + # fill dct_lst_init_disrupt_firm_prod + # 存储 公司-在供应链结点的位置.. 0 :‘1.1’ + if self.is_with_exp: + # 对于方差分析时候使用 + with open('../SQL_export_high_risk_setting.sql', 'r') as f: + str_sql = text(f.read()) + result = pd.read_sql(sql=str_sql, con=connection) + result['dct_lst_init_disrupt_firm_prod'] = \ + result['dct_lst_init_disrupt_firm_prod'].apply( + lambda x: pickle.loads(x)) + list_dct = result['dct_lst_init_disrupt_firm_prod'].to_list() + else: + # 行索引 (index):这一行在数据帧中的索引值。 + # 行数据 (row):这一行的数据,是一个 pandas.Series 对象,包含该行的所有列和值。 + + # 读取企业与产品关系数据 + firm_industry = pd.read_csv("../input_data/firm_industry_relation.csv") + firm_industry['Firm_Code'] = firm_industry['Firm_Code'].astype('string') + + # 假设已从 BOM 数据构建了 code_to_indices + bom_nodes = pd.read_csv("../input_data/input_product_data/BomNodes.csv") + code_to_indices = bom_nodes.groupby('Code')['Index'].apply(list).to_dict() + + # 初始化存储映射结果的列表 + list_dct = [] + + # 遍历 firm_industry 数据 + for _, row in firm_industry.iterrows(): + firm_code = row['Firm_Code'] # 企业代码 + product_code = row['Product_Code'] # 原始产品代码 + + # 使用 code_to_indices 映射 Product_Code 到 Product_Indices + mapped_indices = code_to_indices.get(product_code, []) # 如果找不到则返回空列表 + + # 构建企业到产品索引的映射 + dct = {firm_code: mapped_indices} + list_dct.append(dct) + + # fill g_bom + # 结点属性值 相当于 图上点的 原始 产品名称 + bom_nodes = pd.read_csv('../input_data/input_product_data/BomNodes.csv') + bom_nodes['Code'] = bom_nodes['Code'].astype(str) + bom_nodes.set_index('Index', inplace=True) + + bom_cate_net = pd.read_csv('../input_data/input_product_data/合成结点.csv') + g_bom = nx.from_pandas_edgelist(bom_cate_net, source='UPID', target='ID', create_using=nx.MultiDiGraph()) + # 填充每一个结点 的具体内容 通过 相同的 code 并且通过BomNodes.loc[code].to_dict()字典化 格式类似 格式 { code(0) : {level: 0 ,name: 工业互联网 }} + bom_labels_dict = {} + for index in g_bom.nodes: + try: + bom_labels_dict[index] = bom_nodes.loc[index].to_dict() + # print(bom_labels_dict[index]) + except KeyError: + print(f"节点 {index} 不存在于 bom_nodes 中") + # 分配属性 给每一个结点 获得类似 格式:{1: {'label': 'A', 'value': 10}, + nx.set_node_attributes(g_bom, bom_labels_dict) + # 改为json 格式 + g_product_js = json.dumps(nx.adjacency_data(g_bom)) + + # insert exp + df_xv = pd.read_csv( + "../input_data/" + f"xv_{'with_exp' if self.is_with_exp else 'without_exp'}.csv", + index_col=None) + # read the OA table + df_oa = pd.read_csv( + "../input_data/" + f"oa_{'with_exp' if self.is_with_exp else 'without_exp'}.csv", + index_col=None) + # .shape[1] 列数 .iloc 访问特定的值 而不是标签 + df_oa = df_oa.iloc[:, 0:df_xv.shape[1]] + + # idx_scenario 是 0 指行 idx_init_removal 指 索引 0.. dct_init_removal 键 code 公司 g_product_js 图的json数据 dct_exp_para 解码 全局参数xv- + for idx_scenario, row in df_oa.iterrows(): + dct_exp_para = {} + for idx_col, para_level in enumerate(row): + # 处理 NaN 值,替换为默认值(如 0 或其他合适的值) + para_level = para_level if not pd.isna(para_level) else 0 + # 转换为整数 + para_level = int(para_level) + dct_exp_para[df_xv.columns[idx_col]] = \ + df_xv.iloc[para_level, idx_col] + # different initial removal 只会得到 键 和 值 + for idx_init_removal, dct_init_removal in enumerate(list_dct): + self.add_experiment_1(idx_scenario, + idx_init_removal, + dct_init_removal, + g_product_js, + **dct_exp_para) + print(f"Inserted experiment for scenario {idx_scenario}, " + f"init_removal {idx_init_removal}!") + self.finalize_insertion() + + def add_experiment_1(self, idx_scenario, idx_init_removal, + dct_lst_init_disrupt_firm_prod, g_bom, + n_max_trial, prf_size, prf_conn, + cap_limit_prob_type, cap_limit_level, + diff_new_conn, remove_t, netw_prf_n): + e = Experiment( + idx_scenario=idx_scenario, + idx_init_removal=idx_init_removal, + n_sample=int(self.dct_parameter['n_sample']), + n_iter=int(self.dct_parameter['n_iter']), + dct_lst_init_disrupt_firm_prod=dct_lst_init_disrupt_firm_prod, + g_bom=g_bom, + n_max_trial=n_max_trial, + prf_size=prf_size, + prf_conn=prf_conn, + cap_limit_prob_type=cap_limit_prob_type, + cap_limit_level=cap_limit_level, + diff_new_conn=diff_new_conn, + remove_t=remove_t, + netw_prf_n=netw_prf_n + ) + # 这里我们不立即提交,而是先添加到批量保存的队列中 + self.experiment_data.append(e) + + # 当批量数据达到一定数量时再提交 + if len(self.experiment_data) >= self.batch_size: + self._commit_batch() + + # 辅助方法:批量提交 + def _commit_batch(self): + db_session.bulk_save_objects(self.experiment_data) + db_session.commit() + self.experiment_data.clear() # 清空队列 + + def finalize_insertion(self): + if self.experiment_data: + self._commit_batch() # 提交剩余的数据 + + def fill_sample_table(self): + rng = random.Random(self.dct_parameter['meta_seed']) + # 根据样本数目 设置 32 位随机整数 + lst_seed = [ + rng.getrandbits(32) + for _ in range(int(self.dct_parameter['n_sample'])) + ] + lst_exp = db_session.query(Experiment).all() + + lst_sample = [] + for experiment in lst_exp: + # idx_sample: 1-50 + for idx_sample in range(int(experiment.n_sample)): + s = Sample(e_id=experiment.id, + idx_sample=idx_sample + 1, + seed=lst_seed[idx_sample], + is_done_flag=-1) + lst_sample.append(s) + # 每当达到批量大小时提交一次 + if len(lst_sample) >= self.batch_size: + db_session.bulk_save_objects(lst_sample) + db_session.commit() + print(f'Inserted {len(lst_sample)} samples!') + lst_sample.clear() # 清空已提交的样本列表 + + # 提交剩余的样本 + if lst_sample: + db_session.bulk_save_objects(lst_sample) + db_session.commit() + print(f'Inserted {len(lst_sample)} samples!') + + def reset_db(self, force_drop=False): + # first, check if tables exist + lst_table_obj = [ + Base.metadata.tables[str_table] + for str_table in ins.get_table_names() + if str_table.startswith(self.db_name_prefix) + ] + self.is_exist = len(lst_table_obj) > 0 + if force_drop: + self.force_drop_db(lst_table_obj) + # while is_exist: + # a_table = random.choice(lst_table_obj) + # try: + # Base.metadata.drop_all(bind=engine, tables=[a_table]) + # except KeyError: + # pass + # except OperationalError: + # pass + # else: + # lst_table_obj.remove(a_table) + # print( + # f"Table {a_table.name} is dropped " + # f"for exp: {self.db_name_prefix}!!!" + # ) + # finally: + # is_exist = len(lst_table_obj) > 0 + + if self.is_exist: + print( + f"All tables exist. No need to reset " + f"for exp: {self.db_name_prefix}." + ) + # change the is_done_flag from 0 to -1 + # rerun the in-finished tasks + self.is_exist_reset_flag_resset_db() + # if self.reset_flag > 0: + # if self.reset_flag == 2: + # sample = db_session.query(Sample).filter( + # Sample.is_done_flag == 0) + # elif self.reset_flag == 1: + # sample = db_session.query(Sample).filter( + # Sample.is_done_flag == 0, + # Sample.computer_name == platform.node()) + # else: + # raise ValueError('Wrong reset flag') + # if sample.count() > 0: + # for s in sample: + # qry_result = db_session.query(Result).filter_by( + # s_id=s.id) + # if qry_result.count() > 0: + # db_session.query(Result).filter(s_id=s.id).delete() + # db_session.commit() + # s.is_done_flag = -1 + # db_session.commit() + # print(f"Reset the sample id {s.id} flag from 0 to -1") + + else: + # 不存在则重新生成所有的表结构 + Base.metadata.create_all(bind=engine) + self.init_tables() + print( + f"All tables are just created and initialized " + f"for exp: {self.db_name_prefix}." + ) + + def force_drop_db(self, lst_table_obj): + self.is_exist = len(lst_table_obj) > 0 + while self.is_exist: + a_table = random.choice(lst_table_obj) + try: + Base.metadata.drop_all(bind=engine, tables=[a_table]) + except KeyError: + pass + except OperationalError: + pass + else: + lst_table_obj.remove(a_table) + print( + f"Table {a_table.name} is dropped " + f"for exp: {self.db_name_prefix}!!!" + ) + finally: + self.is_exist = len(lst_table_obj) > 0 + + def is_exist_reset_flag_resset_db(self): + if self.reset_flag > 0: + if self.reset_flag == 2: + sample = db_session.query(Sample).filter( + Sample.is_done_flag == 0) + elif self.reset_flag == 1: + sample = db_session.query(Sample).filter( + Sample.is_done_flag == 0, + Sample.computer_name == platform.node()) + else: + raise ValueError('Wrong reset flag') + if sample.count() > 0: + for s in sample: + qry_result = db_session.query(Result).filter_by( + s_id=s.id) + if qry_result.count() > 0: + db_session.query(Result).filter(s_id=s.id).delete() + db_session.commit() + s.is_done_flag = -1 + db_session.commit() + print(f"Reset the sample id {s.id} flag from 0 to -1") + + def prepare_list_sample(self): + # 为了符合前面 重置表里面存在 重置本机 或者重置全部 或者不重置的部分 这个部分的 关于样本运行也得重新拿出来 + # 查找一个风险事件中 50 个样本 + res = db_session.execute( + text(f"SELECT count(*) FROM {self.db_name_prefix}_sample s, " + f"{self.db_name_prefix}_experiment e WHERE s.e_id=e.id" + )).scalar() + # 控制 n_sample数量 作为后面的参数 + n_sample = 0 if res is None else res + # print(f'There are a total of {n_sample} samples.') + # 查找 is_done_flag = -1 也就是没有运行的 样本 运行后会改为0 + res = db_session.execute( + text(f"SELECT id FROM {self.db_name_prefix}_sample " + f"WHERE is_done_flag = -1" + )) + for row in res: + s_id = row[0] + self.lst_saved_s_id.append(s_id) + + @staticmethod + def select_random_sample(lst_s_id): + temp_lst = lst_s_id[:] # 复制列表 + while temp_lst: + s_id = random.choice(temp_lst) + temp_lst.remove(s_id) # 从临时列表删除 + res = db_session.query(Sample).filter( + Sample.id == int(s_id), + Sample.is_done_flag == -1 + ) + if res.count() == 1: + return res[0] + # 尝试完所有样本都没找到 + return None + + def fetch_a_sample(self, s_id=None): + # 由Computation 调用 返回 sample对象 同时给出 2中 指定访问模式 抓取特定的 样本 通过s_id + # 默认访问 flag为-1的 lst_saved_s_id + if s_id is not None: + res = db_session.query(Sample).filter(Sample.id == int(s_id)) + if res.count() == 0: + return None + else: + return res[0] + + sample = self.select_random_sample(self.lst_saved_s_id) + if sample is not None: + return sample + + return None + + @staticmethod + def lock_the_sample(sample: Sample): + sample.is_done_flag, sample.computer_name = 0, platform.node() + db_session.commit() + + def reset_sample_db(self): + """ + 将 iiabmdb_20250925.without_exp_sample 表中 + 所有样本的 is_done_flag 更新为 -1 + """ + sql = text("UPDATE iiabmdb_20250925.without_exp_sample SET is_done_flag = -1") + db_session.execute(sql) + db_session.commit() + +if __name__ == '__main__': + print("Testing the database connection...") + try: + controller_db = ControllerDB('test') + Base.metadata.create_all(bind=engine) + except Exception as e: + print("Failed to connect to the database!") + print(e) + exit(1) diff --git a/GA_Agent_0925/count_dcp.csv b/GA_Agent_0925/count_dcp.csv new file mode 100644 index 0000000..d7f8093 --- /dev/null +++ b/GA_Agent_0925/count_dcp.csv @@ -0,0 +1,4571 @@ +up_id_firm,up_id_product,down_id_firm,down_id_product,count +340093034,95,532328014,99,108 +340093034,95,303926772,99,106 +395736790,95,303926772,99,104 +395736790,95,532328014,99,100 +29223617,95,303926772,99,93 +29223617,95,532328014,99,90 +2337727838,90,303926772,99,42 +2326722141,90,303926772,99,41 +331545755,90,303926772,99,41 +2326722141,90,532328014,99,39 +3191869223,91,303926772,99,38 +2337727838,90,532328014,99,38 +3191869223,91,532328014,99,36 +331545755,90,532328014,99,35 +2336923756,91,532328014,99,33 +3111603340,50,303926772,99,33 +214851100,51,303926772,99,32 +2336923756,91,303926772,99,32 +214851100,54,303926772,99,31 +214851100,51,532328014,99,31 +214851100,54,532328014,99,31 +3111603340,55,303926772,99,31 +517675473,92,303926772,99,30 +70634828,53,303926772,99,30 +517675473,92,532328014,99,30 +3111603340,52,532328014,99,30 +70634828,53,532328014,99,30 +214851100,50,303926772,99,30 +214851100,52,303926772,99,30 +3111603340,55,532328014,99,30 +214851100,52,532328014,99,30 +2327605629,94,532328014,99,30 +3111603340,50,532328014,99,29 +3111603340,52,303926772,99,29 +2327605629,94,303926772,99,29 +214851100,55,303926772,99,29 +214851100,50,532328014,99,29 +70634828,50,303926772,99,29 +3111603340,51,303926772,99,29 +214851100,53,532328014,99,29 +214851100,53,303926772,99,28 +591350440,91,532328014,99,28 +3111603340,53,532328014,99,28 +728969035,93,532328014,99,28 +2349705416,94,303926772,99,27 +70634828,55,303926772,99,27 +70634828,50,532328014,99,27 +70634828,51,532328014,99,27 +3111603340,51,532328014,99,27 +591350440,91,303926772,99,27 +214851100,55,532328014,99,26 +16210433,92,532328014,99,26 +2349179532,93,532328014,99,26 +70634828,55,532328014,99,26 +2349705416,94,532328014,99,26 +70634828,54,532328014,99,26 +3111603340,53,303926772,99,26 +70634828,51,303926772,99,26 +70634828,52,532328014,99,26 +70634828,54,303926772,99,25 +2349179532,93,303926772,99,25 +70634828,52,303926772,99,25 +16210433,92,303926772,99,24 +3111603340,49,303926772,99,24 +3111603340,54,303926772,99,24 +728969035,93,303926772,99,24 +340093034,95,29223617,95,23 +395736790,95,29223617,95,23 +3111603340,49,532328014,99,23 +3111603340,45,303926772,99,22 +471121089,93,532328014,99,22 +214851100,49,532328014,99,22 +471121089,93,303926772,99,22 +214851100,49,303926772,99,22 +3111603340,54,532328014,99,22 +25980377,42,532328014,99,22 +25980377,42,303926772,99,21 +16116663,92,303926772,99,21 +3111603340,49,3330358736,39,21 +70634828,45,303926772,99,21 +3191869223,91,29223617,95,21 +3330358736,41,532328014,99,21 +214851100,46,532328014,99,21 +3111603340,49,25980377,39,21 +214851100,46,303926772,99,21 +3111603340,45,532328014,99,21 +3330358736,42,532328014,99,20 +3111603340,47,303926772,99,20 +16116663,92,532328014,99,20 +25980377,41,303926772,99,20 +2336923756,91,29223617,95,20 +70634828,46,303926772,99,20 +70634828,46,532328014,99,20 +70634828,45,532328014,99,20 +591350440,91,29223617,95,20 +25980377,41,532328014,99,20 +331545755,90,29223617,95,20 +2337727838,90,29223617,95,19 +214851100,49,25980377,39,19 +214851100,46,25980377,43,19 +214851100,46,3330358736,43,19 +3111603340,47,532328014,99,19 +70634828,44,303926772,99,19 +3330358736,42,303926772,99,19 +2327605629,94,29223617,95,19 +3111603340,49,3330358736,43,19 +340093034,95,3330358736,43,19 +3330358736,41,303926772,99,18 +3111603340,48,303926772,99,18 +70634828,45,25980377,39,18 +214851100,44,303926772,99,18 +340093034,95,3330358736,39,18 +2326722141,90,29223617,95,18 +214851100,47,303926772,99,18 +214851100,48,303926772,99,18 +728969035,93,29223617,95,18 +70634828,48,303926772,99,18 +3111603340,47,3330358736,38,18 +214851100,47,532328014,99,18 +214851100,49,3330358736,39,18 +70634828,48,532328014,99,18 +3111603340,49,25980377,43,18 +70634828,44,532328014,99,18 +3111603340,44,303926772,99,18 +3111603340,45,3330358736,39,17 +70634828,45,3330358736,43,17 +70634828,45,3330358736,39,17 +517675473,92,29223617,95,17 +214851100,48,532328014,99,17 +70634828,46,3330358736,43,17 +29223617,95,3330358736,43,17 +25980377,42,3330358736,43,17 +70634828,49,303926772,99,17 +340093034,95,3330358736,38,17 +214851100,44,532328014,99,17 +214851100,49,3330358736,43,17 +3111603340,47,3330358736,43,17 +3111603340,45,25980377,39,17 +214851100,53,3330358736,43,16 +29223617,95,3330358736,39,16 +70634828,49,25980377,39,16 +340093034,95,3330358736,40,16 +3111603340,44,3330358736,40,16 +3111603340,44,532328014,99,16 +214851100,49,3330358736,40,16 +70634828,49,532328014,99,16 +3111603340,47,3330358736,39,16 +70634828,46,25980377,43,16 +3111603340,46,303926772,99,16 +3111603340,49,25980377,40,16 +25980377,42,3330358736,39,16 +3111603340,48,532328014,99,16 +25980377,42,3330358736,38,16 +395736790,95,3330358736,43,16 +214851100,54,3330358736,43,16 +3111603340,49,3330358736,38,16 +214851100,46,25980377,39,16 +3111603340,46,25980377,43,16 +3111603340,48,3330358736,43,16 +340093034,95,25980377,39,16 +3111603340,49,3330358736,40,16 +3111603340,45,3330358736,43,16 +3111603340,49,25980377,38,16 +70634828,46,3330358736,40,15 +70634828,49,3330358736,39,15 +70634828,46,25980377,39,15 +70634828,46,3330358736,38,15 +70634828,46,3330358736,39,15 +3111603340,51,25980377,39,15 +3111603340,51,3330358736,39,15 +395736790,95,3330358736,40,15 +395736790,95,3330358736,39,15 +214851100,51,3330358736,43,15 +395736790,95,3330358736,38,15 +70634828,48,3330358736,43,15 +395736790,95,25980377,39,15 +70634828,47,303926772,99,15 +25980377,42,25980377,43,15 +29223617,95,3330358736,38,15 +340093034,95,25980377,43,15 +29223617,95,25980377,39,15 +29223617,95,3330358736,40,15 +214851100,49,25980377,40,15 +214851100,49,3330358736,38,15 +70634828,53,25980377,39,15 +25980377,42,25980377,40,15 +3111603340,47,25980377,38,15 +25980377,42,25980377,39,15 +70634828,53,3330358736,39,15 +3330358736,42,3330358736,43,15 +3111603340,47,25980377,39,15 +3111603340,47,25980377,43,15 +25980377,42,3330358736,40,15 +25980377,41,3330358736,43,15 +70634828,54,3330358736,43,15 +70634828,54,3330358736,39,15 +214851100,46,3330358736,39,15 +3111603340,45,25980377,38,15 +3111603340,45,25980377,43,15 +70634828,54,3330358736,40,14 +70634828,54,3330358736,38,14 +214851100,53,25980377,39,14 +3111603340,47,331545755,90,14 +214851100,54,3330358736,39,14 +214851100,49,25980377,43,14 +214851100,50,3330358736,39,14 +214851100,47,25980377,39,14 +3111603340,55,3330358736,43,14 +214851100,50,25980377,39,14 +70634828,47,532328014,99,14 +3330358736,42,3330358736,38,14 +3111603340,45,3330358736,38,14 +214851100,55,3330358736,43,14 +3111603340,45,3330358736,40,14 +214851100,48,3330358736,43,14 +70634828,48,3330358736,38,14 +3111603340,46,3330358736,43,14 +70634828,48,3330358736,39,14 +3330358736,42,3330358736,40,14 +214851100,47,3330358736,43,14 +3111603340,49,331545755,90,14 +214851100,49,25980377,38,14 +70634828,54,25980377,39,14 +214851100,50,3330358736,43,14 +3111603340,47,3330358736,40,14 +3111603340,46,532328014,99,14 +3111603340,45,25980377,40,14 +214851100,51,3330358736,39,14 +214851100,51,25980377,40,14 +25980377,41,25980377,39,14 +25980377,41,3330358736,39,14 +214851100,44,25980377,40,14 +214851100,51,25980377,39,14 +70634828,45,25980377,43,14 +214851100,45,303926772,99,14 +214851100,53,3330358736,39,14 +25980377,41,3330358736,38,14 +70634828,45,3330358736,38,14 +25980377,42,25980377,38,14 +214851100,46,3330358736,38,14 +2349179532,93,29223617,95,14 +3111603340,48,25980377,39,14 +70634828,44,3330358736,38,14 +25980377,41,25980377,43,14 +3111603340,48,3330358736,38,14 +214851100,51,3330358736,40,14 +3111603340,48,3330358736,39,14 +3111603340,48,25980377,43,14 +29223617,95,25980377,43,14 +340093034,95,395736790,95,14 +340093034,95,25980377,40,14 +3191869223,91,395736790,95,14 +340093034,95,25980377,38,14 +70634828,53,3330358736,43,14 +70634828,44,3330358736,43,14 +214851100,54,25980377,39,14 +3330358736,41,3330358736,43,14 +3330358736,42,3330358736,39,13 +70634828,48,25980377,39,13 +70634828,48,25980377,38,13 +214851100,52,3330358736,43,13 +214851100,48,3330358736,38,13 +395736790,95,25980377,40,13 +70634828,44,3330358736,39,13 +2327605629,94,395736790,95,13 +2326722141,90,395736790,95,13 +3111603340,52,3330358736,40,13 +70634828,44,3330358736,40,13 +214851100,44,3330358736,40,13 +3111603340,54,3330358736,39,13 +214851100,47,331545755,90,13 +70634828,45,25980377,38,13 +70634828,45,3330358736,40,13 +214851100,51,3330358736,38,13 +214851100,45,3330358736,43,13 +214851100,45,532328014,99,13 +214851100,46,25980377,38,13 +214851100,46,25980377,40,13 +2349705416,94,29223617,95,13 +70634828,46,25980377,40,13 +214851100,46,3330358736,40,13 +214851100,47,25980377,38,13 +214851100,44,3330358736,43,13 +214851100,47,3330358736,38,13 +70634828,44,25980377,40,13 +395736790,95,2326722141,90,13 +214851100,47,3330358736,40,13 +70634828,44,331545755,90,13 +3330358736,42,25980377,39,13 +3330358736,42,25980377,40,13 +3330358736,42,25980377,43,13 +214851100,48,25980377,39,13 +3111603340,55,3330358736,40,13 +3111603340,55,3330358736,39,13 +214851100,52,25980377,40,13 +214851100,50,25980377,40,13 +3111603340,55,25980377,43,13 +70634828,44,25980377,39,13 +395736790,95,25980377,43,13 +3111603340,47,2326722141,90,13 +70634828,44,2326722141,90,13 +3111603340,44,3330358736,38,13 +3111603340,45,331545755,90,13 +70634828,55,3330358736,43,13 +70634828,55,3330358736,39,13 +3111603340,50,3330358736,39,13 +3111603340,47,25980377,40,13 +214851100,54,3330358736,38,13 +70634828,54,25980377,43,13 +214851100,54,25980377,43,13 +395736790,95,331545755,90,13 +3111603340,44,25980377,39,13 +16210433,92,29223617,95,13 +3111603340,49,2337727838,90,13 +3111603340,49,2326722141,90,13 +214851100,53,25980377,40,13 +214851100,53,25980377,43,13 +3111603340,48,3330358736,40,13 +25980377,39,3111603340,53,13 +3111603340,48,25980377,38,13 +214851100,53,3330358736,38,13 +3111603340,44,25980377,40,13 +214851100,53,3330358736,40,13 +29223617,95,25980377,38,13 +29223617,95,25980377,40,13 +214851100,55,25980377,43,13 +3111603340,51,3330358736,43,13 +214851100,54,25980377,40,12 +395736790,95,3111603340,53,12 +3111603340,55,3330358736,38,12 +214851100,52,25980377,39,12 +70634828,47,25980377,38,12 +340093034,95,2326722141,90,12 +214851100,46,331545755,90,12 +70634828,54,25980377,40,12 +2337727838,90,395736790,95,12 +214851100,52,3330358736,40,12 +395736790,95,25980377,38,12 +3111603340,52,3330358736,39,12 +3111603340,51,3330358736,38,12 +3111603340,47,2337727838,90,12 +214851100,47,2326722141,90,12 +70634828,47,3330358736,38,12 +214851100,47,2337727838,90,12 +25980377,41,25980377,38,12 +214851100,54,3330358736,40,12 +3111603340,55,25980377,39,12 +70634828,53,3330358736,40,12 +3111603340,51,3330358736,40,12 +395736790,95,2337727838,90,12 +214851100,47,25980377,43,12 +214851100,44,25980377,39,12 +340093034,95,331545755,90,12 +214851100,44,3330358736,39,12 +3111603340,52,25980377,39,12 +331545755,90,395736790,95,12 +340093034,95,3111603340,53,12 +214851100,51,25980377,43,12 +25980377,41,3330358736,40,12 +70634828,46,25980377,38,12 +70634828,49,3330358736,43,12 +70634828,44,25980377,43,12 +3330358736,41,25980377,39,12 +70634828,46,331545755,90,12 +3330358736,41,25980377,43,12 +70634828,49,3330358736,40,12 +3330358736,41,3330358736,38,12 +3330358736,41,3330358736,39,12 +214851100,47,25980377,40,12 +214851100,55,25980377,39,12 +3111603340,50,25980377,39,12 +70634828,55,3330358736,38,12 +70634828,48,25980377,43,12 +214851100,48,3330358736,39,12 +3111603340,50,3330358736,43,12 +214851100,48,2326722141,90,12 +214851100,48,25980377,40,12 +3111603340,44,3330358736,39,12 +3111603340,44,3330358736,43,12 +214851100,48,25980377,43,12 +214851100,50,25980377,43,12 +3111603340,53,3330358736,43,12 +70634828,49,25980377,40,12 +3111603340,45,2337727838,90,12 +3111603340,45,2326722141,90,12 +214851100,55,3330358736,39,12 +214851100,48,3330358736,40,12 +3111603340,52,3330358736,43,12 +3111603340,53,25980377,43,12 +2326722141,90,340093034,95,12 +3111603340,44,25980377,43,12 +214851100,50,3330358736,40,12 +3111603340,46,3330358736,38,12 +70634828,55,25980377,39,12 +214851100,47,3330358736,39,12 +214851100,52,3330358736,38,12 +3111603340,54,25980377,39,12 +3330358736,42,25980377,38,12 +214851100,49,2326722141,90,12 +70634828,52,3330358736,39,11 +70634828,52,29223617,95,11 +214851100,44,2326722141,90,11 +70634828,52,3330358736,38,11 +214851100,45,25980377,43,11 +214851100,45,25980377,39,11 +3330358736,39,3111603340,53,11 +70634828,45,25980377,40,11 +2327605629,94,340093034,95,11 +70634828,52,3330358736,40,11 +214851100,51,25980377,38,11 +29223617,95,2326722141,90,11 +214851100,44,2337727838,90,11 +471121089,93,29223617,95,11 +214851100,44,25980377,43,11 +214851100,44,3330358736,38,11 +214851100,55,3330358736,38,11 +728969035,93,395736790,95,11 +3330358736,40,70634828,50,11 +591350440,91,395736790,95,11 +214851100,55,3330358736,40,11 +70634828,55,3330358736,40,11 +3111603340,46,3330358736,39,11 +70634828,55,25980377,43,11 +214851100,50,3330358736,38,11 +3111603340,46,25980377,39,11 +2337727838,90,3330358736,40,11 +2337727838,90,3330358736,43,11 +3111603340,46,25980377,38,11 +29223617,95,331545755,90,11 +3111603340,44,25980377,38,11 +591350440,91,340093034,95,11 +2326722141,90,3330358736,43,11 +340093034,95,2337727838,90,11 +214851100,49,2337727838,90,11 +3330358736,41,214851100,52,11 +70634828,53,3330358736,38,11 +214851100,46,2337727838,90,11 +3330358736,41,3330358736,40,11 +214851100,49,331545755,90,11 +3330358736,41,3111603340,52,11 +29223617,95,3111603340,53,11 +3111603340,46,3330358736,40,11 +3330358736,41,25980377,40,11 +214851100,48,331545755,90,11 +3330358736,41,25980377,38,11 +70634828,53,25980377,43,11 +70634828,53,25980377,40,11 +70634828,54,25980377,38,11 +3111603340,52,25980377,43,11 +3111603340,54,3330358736,43,11 +214851100,53,25980377,38,11 +214851100,52,29223617,95,11 +3111603340,55,25980377,40,11 +3111603340,48,25980377,40,11 +70634828,48,3330358736,40,11 +3111603340,53,3330358736,39,11 +3111603340,51,25980377,38,11 +70634828,50,3330358736,43,11 +3111603340,51,25980377,40,11 +3111603340,51,25980377,43,11 +70634828,44,2337727838,90,11 +214851100,52,25980377,43,11 +70634828,47,3330358736,43,11 +214851100,52,3330358736,39,11 +3111603340,55,25980377,38,11 +70634828,44,25980377,38,11 +70634828,47,25980377,43,11 +70634828,46,2326722141,90,11 +3111603340,52,25980377,40,11 +25980377,41,214851100,52,11 +3111603340,50,25980377,43,11 +70634828,48,2326722141,90,11 +16116663,92,29223617,95,11 +214851100,52,25980377,38,11 +70634828,47,25980377,39,11 +3111603340,52,3330358736,38,11 +70634828,47,25980377,40,11 +70634828,49,25980377,43,11 +70634828,47,3330358736,40,10 +70634828,47,3330358736,39,10 +2337727838,90,25980377,39,10 +70634828,51,25980377,39,10 +2337727838,90,3111603340,53,10 +2337727838,90,25980377,43,10 +331545755,90,3111603340,53,10 +70634828,55,25980377,38,10 +2337727838,90,3330358736,39,10 +2337727838,90,340093034,95,10 +214851100,54,331545755,90,10 +2337727838,90,70634828,50,10 +25980377,43,3111603340,54,10 +395736790,95,3111603340,54,10 +214851100,54,25980377,38,10 +25980377,42,331545755,90,10 +2337727838,90,3330358736,38,10 +70634828,48,25980377,40,10 +70634828,55,25980377,40,10 +3111603340,44,331545755,90,10 +2326722141,90,25980377,39,10 +29223617,95,2337727838,90,10 +2326722141,90,3111603340,53,10 +214851100,52,395736790,95,10 +2326722141,90,3330358736,39,10 +29223617,95,3111603340,54,10 +29223617,95,70634828,50,10 +3111603340,44,2326722141,90,10 +2326722141,90,70634828,50,10 +3330358736,43,3111603340,54,10 +3111603340,53,25980377,39,10 +214851100,50,25980377,38,10 +2326722141,90,25980377,43,10 +3111603340,50,3330358736,38,10 +70634828,50,3330358736,38,10 +3330358736,42,3111603340,55,10 +70634828,50,3330358736,39,10 +70634828,48,331545755,90,10 +3111603340,45,70634828,50,10 +214851100,48,25980377,38,10 +214851100,48,2337727838,90,10 +214851100,46,2326722141,90,10 +3111603340,50,3330358736,40,10 +70634828,48,2337727838,90,10 +3330358736,42,2326722141,90,10 +3111603340,54,25980377,40,10 +25980377,42,3111603340,55,10 +70634828,52,3330358736,43,10 +517675473,92,340093034,95,10 +70634828,52,25980377,40,10 +70634828,51,3330358736,43,10 +3330358736,41,2326722141,90,10 +517675473,92,395736790,95,10 +340093034,95,70634828,50,10 +70634828,46,2337727838,90,10 +340093034,95,3111603340,54,10 +331545755,90,3330358736,43,10 +331545755,90,70634828,50,10 +3330358736,38,70634828,51,10 +214851100,45,3330358736,39,10 +214851100,45,3330358736,38,10 +25980377,42,214851100,55,10 +25980377,42,2326722141,90,10 +70634828,52,25980377,43,10 +70634828,52,25980377,39,10 +70634828,51,3330358736,40,10 +214851100,44,331545755,90,10 +70634828,45,331545755,90,10 +214851100,44,25980377,38,10 +70634828,51,3330358736,39,10 +3111603340,52,29223617,95,10 +25980377,42,3111603340,52,10 +25980377,40,3111603340,50,10 +25980377,41,3111603340,52,10 +3330358736,41,3111603340,55,10 +3111603340,48,331545755,90,10 +214851100,45,25980377,38,10 +25980377,41,25980377,40,10 +3111603340,49,3111603340,53,10 +395736790,95,70634828,50,10 +331545755,90,25980377,39,9 +3111603340,48,2337727838,90,9 +395736790,95,340093034,95,9 +3111603340,53,25980377,40,9 +3330358736,42,3111603340,52,9 +25980377,41,3111603340,53,9 +3111603340,45,3111603340,53,9 +3111603340,53,3330358736,40,9 +70634828,50,3330358736,40,9 +395736790,95,3111603340,50,9 +3330358736,42,70634828,50,9 +3330358736,42,331545755,90,9 +395736790,95,70634828,51,9 +3111603340,53,3330358736,38,9 +2349705416,94,395736790,95,9 +3111603340,53,25980377,38,9 +3111603340,52,70634828,50,9 +214851100,55,25980377,40,9 +2326722141,90,3111603340,50,9 +331545755,90,3111603340,54,9 +3111603340,52,25980377,38,9 +29223617,95,3111603340,50,9 +70634828,49,3330358736,38,9 +70634828,49,331545755,90,9 +2326722141,90,3111603340,54,9 +214851100,49,3111603340,53,9 +2326722141,90,3330358736,40,9 +70634828,52,25980377,38,9 +70634828,49,3111603340,53,9 +70634828,50,25980377,39,9 +331545755,90,3330358736,39,9 +29223617,95,70634828,51,9 +214851100,55,3111603340,53,9 +214851100,55,3111603340,54,9 +3111603340,48,2326722141,90,9 +70634828,50,25980377,40,9 +331545755,90,3330358736,40,9 +70634828,50,25980377,43,9 +214851100,52,70634828,50,9 +3330358736,42,70634828,55,9 +25980377,39,303926772,99,9 +331545755,90,3111603340,50,9 +3111603340,54,25980377,38,9 +3330358736,40,3111603340,50,9 +25980377,42,2337727838,90,9 +214851100,53,29223617,95,9 +70634828,45,2337727838,90,9 +471121089,93,340093034,95,9 +3111603340,55,29223617,95,9 +2337727838,90,3111603340,50,9 +2337727838,90,3111603340,54,9 +70634828,45,2326722141,90,9 +3111603340,50,25980377,38,9 +3111603340,55,3111603340,53,9 +3330358736,41,2337727838,90,9 +70634828,51,25980377,43,9 +340093034,95,70634828,51,9 +3111603340,49,70634828,50,9 +395736790,95,214851100,52,9 +214851100,53,2326722141,90,9 +70634828,44,3111603340,53,9 +214851100,46,3111603340,54,9 +214851100,54,2326722141,90,9 +70634828,47,2326722141,90,9 +16210433,92,395736790,95,9 +395736790,95,3111603340,55,9 +214851100,54,2337727838,90,9 +25980377,42,3111603340,53,9 +3111603340,55,70634828,50,9 +340093034,95,3111603340,50,9 +70634828,51,25980377,40,9 +3111603340,54,3330358736,38,9 +340093034,95,3111603340,52,9 +340093034,95,214851100,52,9 +3111603340,46,25980377,40,9 +3111603340,54,25980377,43,9 +3330358736,39,70634828,50,9 +70634828,55,3111603340,53,9 +3111603340,50,29223617,95,9 +214851100,51,2326722141,90,9 +3330358736,42,214851100,52,9 +3330358736,42,2337727838,90,9 +2336923756,91,340093034,95,9 +2336923756,91,395736790,95,9 +25980377,39,214851100,53,9 +3111603340,54,3330358736,40,9 +25980377,42,214851100,52,9 +214851100,55,29223617,95,8 +214851100,52,3111603340,53,8 +395736790,95,214851100,55,8 +3330358736,43,70634828,50,8 +395736790,95,214851100,53,8 +214851100,52,3111603340,54,8 +214851100,50,70634828,50,8 +395736790,95,3111603340,52,8 +532328014,99,3111603340,53,8 +3330358736,43,3111603340,53,8 +214851100,53,331545755,90,8 +340093034,95,214851100,53,8 +340093034,95,70634828,54,8 +214851100,50,331545755,90,8 +340093034,95,214851100,55,8 +214851100,55,70634828,50,8 +214851100,52,3111603340,50,8 +395736790,95,70634828,54,8 +214851100,53,2337727838,90,8 +340093034,95,3111603340,55,8 +214851100,51,331545755,90,8 +214851100,51,2337727838,90,8 +3111603340,47,3111603340,53,8 +3111603340,52,395736790,95,8 +2349705416,94,25980377,43,8 +3111603340,49,29223617,95,8 +3111603340,49,3111603340,52,8 +3111603340,49,3111603340,54,8 +3111603340,49,3111603340,55,8 +16210433,92,340093034,95,8 +70634828,51,29223617,95,8 +3111603340,50,25980377,40,8 +3111603340,51,2326722141,90,8 +3111603340,51,331545755,90,8 +3111603340,52,3111603340,53,8 +70634828,49,25980377,38,8 +70634828,49,2337727838,90,8 +214851100,49,70634828,50,8 +3111603340,53,29223617,95,8 +70634828,48,70634828,51,8 +3111603340,53,395736790,95,8 +70634828,48,3111603340,52,8 +3111603340,54,2326722141,90,8 +70634828,47,331545755,90,8 +3111603340,55,3111603340,54,8 +70634828,47,2337727838,90,8 +3111603340,55,331545755,90,8 +3191869223,91,25980377,39,8 +70634828,46,395736790,95,8 +2349705416,94,3330358736,43,8 +70634828,46,3111603340,54,8 +70634828,46,3111603340,53,8 +3111603340,49,214851100,55,8 +25980377,38,3111603340,53,8 +25980377,39,3111603340,54,8 +25980377,42,3111603340,50,8 +29223617,95,395736790,95,8 +29223617,95,70634828,54,8 +3111603340,44,2337727838,90,8 +3111603340,44,3111603340,53,8 +3111603340,45,3111603340,52,8 +3111603340,45,3111603340,55,8 +3111603340,46,3111603340,54,8 +70634828,54,331545755,90,8 +3111603340,47,3111603340,54,8 +25980377,43,3111603340,53,8 +3111603340,47,70634828,51,8 +70634828,53,331545755,90,8 +70634828,53,29223617,95,8 +70634828,51,3330358736,38,8 +70634828,53,25980377,38,8 +25980377,41,70634828,52,8 +70634828,52,395736790,95,8 +70634828,52,331545755,90,8 +70634828,52,3111603340,53,8 +25980377,41,331545755,90,8 +25980377,41,3111603340,55,8 +25980377,41,2326722141,90,8 +25980377,40,70634828,50,8 +25980377,40,303926772,99,8 +25980377,39,70634828,53,8 +25980377,39,70634828,50,8 +3191869223,91,25980377,43,8 +2349705416,94,25980377,39,8 +3330358736,41,70634828,52,8 +3330358736,38,70634828,50,8 +3330358736,41,29223617,95,8 +3330358736,42,3111603340,53,8 +331545755,90,340093034,95,8 +331545755,90,70634828,51,8 +214851100,46,3111603340,52,8 +2336923756,91,25980377,43,8 +70634828,44,70634828,50,8 +3330358736,38,3111603340,53,8 +2336923756,91,3330358736,43,8 +214851100,44,3111603340,50,8 +3330358736,39,214851100,53,8 +2336923756,91,25980377,39,8 +3330358736,39,303926772,99,8 +214851100,46,29223617,95,8 +3330358736,40,3111603340,53,8 +3330358736,41,331545755,90,8 +3330358736,42,214851100,55,8 +214851100,45,3330358736,40,8 +2326722141,90,70634828,51,8 +3330358736,41,214851100,55,8 +331545755,90,3330358736,38,8 +70634828,45,3111603340,53,8 +70634828,45,3111603340,54,8 +3191869223,91,3330358736,43,8 +331545755,90,25980377,43,8 +2337727838,90,70634828,51,8 +214851100,47,70634828,50,8 +3191869223,91,340093034,95,8 +214851100,49,395736790,95,8 +2326722141,90,3330358736,38,8 +517675473,92,3330358736,43,7 +25980377,43,214851100,54,7 +2336923756,91,3330358736,38,7 +29223617,95,214851100,54,7 +25980377,43,303926772,99,7 +471121089,93,395736790,95,7 +25980377,42,70634828,51,7 +25980377,41,395736790,95,7 +340093034,95,214851100,50,7 +517675473,92,25980377,39,7 +25980377,42,70634828,50,7 +517675473,92,25980377,43,7 +25980377,41,70634828,51,7 +340093034,95,214851100,51,7 +3330358736,43,70634828,51,7 +3330358736,43,70634828,54,7 +25980377,43,70634828,54,7 +532328014,99,303926772,99,7 +532328014,99,3111603340,50,7 +29223617,95,214851100,52,7 +29223617,95,214851100,51,7 +29223617,95,214851100,50,7 +2326722141,90,25980377,38,7 +303926772,99,3111603340,53,7 +214851100,55,331545755,90,7 +2326722141,90,214851100,50,7 +3111603340,44,70634828,50,7 +3111603340,45,214851100,52,7 +3111603340,45,214851100,55,7 +3111603340,45,3111603340,50,7 +3330358736,42,70634828,51,7 +3111603340,45,70634828,51,7 +3111603340,46,331545755,90,7 +3111603340,46,395736790,95,7 +3111603340,47,214851100,51,7 +3111603340,47,3111603340,52,7 +3330358736,42,3111603340,50,7 +532328014,99,70634828,50,7 +532328014,99,3111603340,54,7 +25980377,43,70634828,50,7 +2336923756,91,3330358736,39,7 +3191869223,91,3330358736,38,7 +395736790,95,70634828,55,7 +3111603340,55,395736790,95,7 +3330358736,38,3111603340,54,7 +3111603340,52,70634828,51,7 +3330358736,38,3111603340,50,7 +3330358736,38,214851100,51,7 +2349179532,93,395736790,95,7 +3111603340,54,2337727838,90,7 +3111603340,54,331545755,90,7 +3111603340,55,2326722141,90,7 +3111603340,55,2337727838,90,7 +3111603340,55,3111603340,50,7 +2349705416,94,340093034,95,7 +3111603340,52,3111603340,54,7 +331545755,90,25980377,40,7 +395736790,95,214851100,54,7 +331545755,90,25980377,38,7 +2349705416,94,3330358736,39,7 +395736790,95,214851100,51,7 +395736790,95,214851100,50,7 +331545755,90,214851100,50,7 +340093034,95,70634828,53,7 +2349705416,94,3330358736,38,7 +3191869223,91,3330358736,39,7 +3111603340,52,331545755,90,7 +3111603340,52,3111603340,50,7 +2337727838,90,214851100,50,7 +25980377,38,70634828,51,7 +3330358736,41,70634828,55,7 +25980377,41,214851100,55,7 +2337727838,90,25980377,38,7 +25980377,40,3111603340,53,7 +340093034,95,214851100,54,7 +395736790,95,70634828,53,7 +2337727838,90,25980377,40,7 +214851100,55,25980377,38,7 +3330358736,41,70634828,51,7 +3111603340,48,3111603340,53,7 +25980377,38,70634828,50,7 +3111603340,52,2326722141,90,7 +25980377,38,303926772,99,7 +3111603340,48,395736790,95,7 +3111603340,48,70634828,50,7 +3111603340,49,214851100,52,7 +3111603340,49,214851100,53,7 +3330358736,41,395736790,95,7 +3111603340,49,395736790,95,7 +3330358736,40,3111603340,54,7 +3330358736,40,303926772,99,7 +3111603340,51,2337727838,90,7 +2326722141,90,25980377,40,7 +29223617,95,214851100,53,7 +214851100,53,3111603340,50,7 +16116663,92,25980377,39,7 +214851100,44,70634828,50,7 +70634828,55,3111603340,50,7 +70634828,55,29223617,95,7 +16116663,92,3330358736,43,7 +214851100,51,70634828,50,7 +70634828,55,2326722141,90,7 +70634828,50,2326722141,90,7 +214851100,53,70634828,50,7 +70634828,44,3111603340,50,7 +70634828,44,70634828,51,7 +70634828,49,2326722141,90,7 +70634828,45,70634828,50,7 +70634828,44,3111603340,54,7 +16116663,92,25980377,43,7 +70634828,54,2337727838,90,7 +214851100,47,3111603340,53,7 +70634828,54,2326722141,90,7 +214851100,50,29223617,95,7 +70634828,46,29223617,95,7 +214851100,50,2337727838,90,7 +214851100,50,2326722141,90,7 +214851100,55,2326722141,90,7 +214851100,49,70634828,51,7 +70634828,53,3111603340,53,7 +70634828,53,2337727838,90,7 +70634828,52,2326722141,90,7 +70634828,53,2326722141,90,7 +214851100,49,214851100,53,7 +214851100,49,29223617,95,7 +214851100,49,3111603340,50,7 +214851100,47,3111603340,54,7 +70634828,52,3111603340,54,7 +214851100,46,70634828,54,7 +214851100,47,214851100,55,7 +214851100,52,331545755,90,7 +214851100,52,70634828,51,7 +214851100,46,395736790,95,7 +214851100,46,70634828,50,7 +214851100,46,214851100,52,7 +214851100,52,2337727838,90,7 +214851100,52,2326722141,90,7 +16210433,92,3330358736,43,7 +214851100,45,25980377,40,7 +214851100,46,214851100,54,7 +70634828,51,25980377,38,7 +16210433,92,25980377,43,7 +70634828,55,70634828,50,7 +16210433,92,25980377,39,7 +70634828,55,331545755,90,7 +214851100,46,214851100,55,7 +728969035,93,340093034,95,7 +214851100,46,3111603340,53,7 +70634828,50,331545755,90,7 +70634828,48,3111603340,53,6 +2326722141,90,214851100,51,6 +2326722141,90,214851100,53,6 +70634828,48,3111603340,50,6 +3111603340,51,29223617,95,6 +70634828,48,214851100,52,6 +3111603340,54,70634828,50,6 +214851100,52,70634828,54,6 +3111603340,55,214851100,50,6 +214851100,49,70634828,53,6 +214851100,50,3111603340,50,6 +70634828,47,70634828,51,6 +214851100,49,3111603340,55,6 +214851100,49,3111603340,54,6 +16210433,92,3330358736,39,6 +3111603340,49,340093034,95,6 +70634828,48,395736790,95,6 +3111603340,49,70634828,51,6 +340093034,95,3111603340,51,6 +70634828,50,395736790,95,6 +340093034,95,70634828,55,6 +70634828,50,25980377,38,6 +70634828,50,2337727838,90,6 +3111603340,50,331545755,90,6 +70634828,51,2337727838,90,6 +3111603340,49,70634828,55,6 +214851100,49,3111603340,52,6 +214851100,51,3111603340,50,6 +214851100,51,29223617,95,6 +70634828,49,70634828,50,6 +3330358736,43,70634828,53,6 +3111603340,49,70634828,53,6 +3111603340,52,340093034,95,6 +70634828,44,3111603340,52,6 +70634828,49,214851100,53,6 +214851100,52,340093034,95,6 +70634828,44,3111603340,55,6 +3111603340,53,2337727838,90,6 +3111603340,51,3111603340,53,6 +395736790,95,3111603340,51,6 +70634828,48,3111603340,55,6 +3111603340,51,70634828,50,6 +214851100,55,2337727838,90,6 +214851100,49,214851100,55,6 +2349179532,93,3330358736,43,6 +214851100,44,3111603340,55,6 +2349179532,93,25980377,43,6 +2349179532,93,25980377,39,6 +2336923756,91,3111603340,54,6 +331545755,90,70634828,54,6 +2336923756,91,3330358736,40,6 +214851100,47,3111603340,55,6 +3330358736,38,303926772,99,6 +3330358736,38,3111603340,51,6 +214851100,45,2326722141,90,6 +214851100,45,2337727838,90,6 +3330358736,39,3111603340,54,6 +2337727838,90,214851100,51,6 +2337727838,90,214851100,52,6 +2337727838,90,214851100,53,6 +3330358736,39,70634828,51,6 +214851100,47,3111603340,50,6 +3330358736,39,70634828,53,6 +214851100,47,29223617,95,6 +3330358736,40,214851100,50,6 +3330358736,40,70634828,51,6 +214851100,45,331545755,90,6 +70634828,45,214851100,55,6 +70634828,45,214851100,52,6 +214851100,46,70634828,51,6 +3330358736,41,3111603340,53,6 +214851100,46,340093034,95,6 +2337727838,90,70634828,54,6 +214851100,46,3111603340,55,6 +2336923756,91,25980377,38,6 +2349179532,93,340093034,95,6 +70634828,47,29223617,95,6 +2336923756,91,214851100,55,6 +3111603340,55,70634828,51,6 +2326722141,90,70634828,54,6 +3330358736,43,3111603340,50,6 +3191869223,91,214851100,55,6 +3191869223,91,25980377,38,6 +16210433,92,3330358736,38,6 +70634828,46,70634828,51,6 +2327605629,94,25980377,39,6 +2327605629,94,25980377,43,6 +2349705416,94,3330358736,40,6 +2349705416,94,3111603340,54,6 +70634828,46,3111603340,50,6 +2327605629,94,3330358736,39,6 +70634828,46,214851100,53,6 +2327605629,94,3330358736,43,6 +2349705416,94,25980377,38,6 +3191869223,91,3111603340,54,6 +3330358736,42,70634828,52,6 +70634828,46,214851100,50,6 +3191869223,91,3330358736,40,6 +331545755,90,214851100,51,6 +214851100,48,3111603340,55,6 +331545755,90,214851100,53,6 +70634828,45,395736790,95,6 +214851100,48,3111603340,50,6 +214851100,48,29223617,95,6 +3330358736,42,29223617,95,6 +214851100,48,214851100,52,6 +214851100,47,70634828,55,6 +3330358736,43,214851100,54,6 +70634828,50,29223617,95,6 +25980377,42,70634828,52,6 +16116663,92,3330358736,38,6 +70634828,51,395736790,95,6 +214851100,54,3111603340,54,6 +517675473,92,214851100,55,6 +25980377,39,70634828,54,6 +3111603340,45,70634828,54,6 +16116663,92,25980377,38,6 +25980377,39,70634828,51,6 +3111603340,47,214851100,55,6 +25980377,39,532328014,99,6 +3111603340,48,29223617,95,6 +25980377,42,70634828,55,6 +70634828,55,70634828,51,6 +3111603340,45,3111603340,54,6 +16116663,92,3111603340,54,6 +3111603340,45,29223617,95,6 +3111603340,48,3111603340,52,6 +25980377,39,3111603340,50,6 +517675473,92,25980377,38,6 +3111603340,48,3111603340,54,6 +3111603340,48,214851100,55,6 +3111603340,46,214851100,54,6 +3111603340,46,2326722141,90,6 +70634828,55,2337727838,90,6 +70634828,52,70634828,50,6 +70634828,52,340093034,95,6 +3111603340,47,214851100,50,6 +25980377,41,3111603340,54,6 +25980377,42,29223617,95,6 +3111603340,47,214851100,52,6 +70634828,52,2337727838,90,6 +25980377,42,3111603340,54,6 +25980377,41,29223617,95,6 +3111603340,46,2337727838,90,6 +532328014,99,70634828,51,6 +25980377,41,2337727838,90,6 +3111603340,46,29223617,95,6 +70634828,53,395736790,95,6 +3111603340,48,214851100,51,6 +25980377,42,395736790,95,6 +70634828,55,3111603340,54,6 +3111603340,48,214851100,52,6 +25980377,43,214851100,53,6 +214851100,55,70634828,51,6 +3111603340,44,3111603340,50,6 +70634828,51,331545755,90,6 +25980377,43,70634828,53,6 +303926772,99,70634828,51,6 +25980377,38,3111603340,50,6 +517675473,92,3330358736,38,6 +303926772,99,3111603340,54,6 +517675473,92,3330358736,39,6 +29223617,95,70634828,53,6 +3111603340,48,70634828,51,6 +70634828,54,3111603340,53,6 +214851100,55,3111603340,50,6 +29223617,95,3111603340,55,6 +29223617,95,3111603340,52,6 +16210433,92,214851100,55,6 +214851100,53,395736790,95,6 +16210433,92,25980377,38,6 +214851100,53,3111603340,54,6 +29223617,95,3111603340,51,6 +3111603340,49,3111603340,50,6 +29223617,95,214851100,55,6 +471121089,93,25980377,39,6 +25980377,41,70634828,50,6 +471121089,93,25980377,43,6 +3111603340,47,395736790,95,6 +471121089,93,3330358736,38,6 +16116663,92,3330358736,39,6 +3111603340,47,3111603340,51,6 +3111603340,47,29223617,95,6 +16116663,92,395736790,95,6 +3111603340,47,70634828,50,6 +70634828,54,3111603340,54,6 +25980377,38,3111603340,54,6 +25980377,43,3111603340,50,6 +214851100,54,29223617,95,6 +471121089,93,3330358736,43,6 +70634828,44,214851100,52,6 +3111603340,46,70634828,50,5 +70634828,55,214851100,50,5 +214851100,44,214851100,50,5 +3111603340,47,3111603340,50,5 +70634828,54,70634828,50,5 +331545755,90,214851100,52,5 +214851100,44,3111603340,52,5 +331545755,90,3111603340,55,5 +70634828,45,3111603340,55,5 +70634828,45,3111603340,52,5 +3111603340,47,3111603340,55,5 +331545755,90,3111603340,52,5 +214851100,44,214851100,55,5 +331545755,90,214851100,54,5 +331545755,90,3111603340,51,5 +70634828,54,395736790,95,5 +3111603340,45,70634828,55,5 +2349179532,93,3330358736,39,5 +2349179532,93,3330358736,38,5 +3111603340,44,70634828,51,5 +3330358736,40,214851100,53,5 +214851100,45,3111603340,54,5 +728969035,93,3330358736,38,5 +3330358736,41,214851100,51,5 +728969035,93,3330358736,43,5 +214851100,45,395736790,95,5 +3111603340,44,3111603340,54,5 +70634828,45,214851100,54,5 +70634828,45,214851100,53,5 +3330358736,41,3111603340,50,5 +3111603340,44,214851100,50,5 +303926772,99,70634828,50,5 +3330358736,41,3111603340,54,5 +29223617,95,70634828,55,5 +214851100,46,214851100,51,5 +29223617,95,70634828,52,5 +3111603340,45,214851100,51,5 +3111603340,45,214851100,53,5 +3111603340,45,214851100,54,5 +70634828,55,3111603340,52,5 +2349179532,93,3111603340,54,5 +214851100,44,3111603340,54,5 +3111603340,46,340093034,95,5 +70634828,45,3111603340,50,5 +70634828,55,214851100,53,5 +2349179532,93,214851100,55,5 +331545755,90,70634828,53,5 +3330358736,38,214851100,50,5 +728969035,93,25980377,43,5 +70634828,45,70634828,51,5 +3330358736,39,214851100,50,5 +3330358736,39,3111603340,50,5 +3111603340,45,70634828,52,5 +70634828,55,395736790,95,5 +3330358736,39,532328014,99,5 +728969035,93,25980377,39,5 +70634828,54,3111603340,50,5 +16210433,92,3111603340,54,5 +70634828,45,70634828,52,5 +70634828,49,3111603340,50,5 +3111603340,52,214851100,51,5 +3111603340,52,214851100,54,5 +3111603340,52,2337727838,90,5 +25980377,38,70634828,53,5 +70634828,50,214851100,50,5 +70634828,49,70634828,55,5 +25980377,39,214851100,54,5 +70634828,49,340093034,95,5 +70634828,49,29223617,95,5 +3111603340,51,70634828,51,5 +3111603340,48,3111603340,51,5 +3111603340,52,70634828,54,5 +3111603340,48,3111603340,50,5 +3111603340,53,2326722141,90,5 +70634828,48,70634828,52,5 +3111603340,53,331545755,90,5 +70634828,48,70634828,50,5 +70634828,48,3111603340,54,5 +3111603340,52,214851100,50,5 +16116663,92,3330358736,40,5 +16116663,92,214851100,55,5 +25980377,38,214851100,53,5 +16210433,92,3330358736,40,5 +70634828,51,3111603340,50,5 +3111603340,49,214851100,54,5 +16210433,92,214851100,52,5 +3111603340,49,70634828,52,5 +3111603340,49,214851100,51,5 +3111603340,49,70634828,54,5 +25980377,38,214851100,51,5 +3111603340,50,2326722141,90,5 +16116663,92,340093034,95,5 +3111603340,50,2337727838,90,5 +3111603340,48,340093034,95,5 +70634828,51,2326722141,90,5 +3111603340,50,3111603340,54,5 +25980377,38,3111603340,51,5 +3111603340,50,395736790,95,5 +3111603340,51,3111603340,54,5 +214851100,46,3111603340,50,5 +25980377,40,214851100,50,5 +25980377,40,214851100,53,5 +70634828,45,70634828,53,5 +70634828,46,214851100,55,5 +70634828,53,70634828,50,5 +3191869223,91,25980377,40,5 +70634828,46,70634828,50,5 +16210433,92,3111603340,53,5 +70634828,46,340093034,95,5 +70634828,46,3111603340,52,5 +2349705416,94,3111603340,53,5 +70634828,54,214851100,50,5 +70634828,46,214851100,54,5 +3191869223,91,214851100,52,5 +2349705416,94,25980377,40,5 +25980377,43,532328014,99,5 +25980377,43,70634828,51,5 +3191869223,91,3111603340,52,5 +3191869223,91,3111603340,53,5 +3191869223,91,3111603340,55,5 +70634828,54,29223617,95,5 +70634828,45,70634828,54,5 +70634828,53,3111603340,54,5 +25980377,42,214851100,53,5 +25980377,40,3111603340,54,5 +3111603340,55,214851100,54,5 +3111603340,54,214851100,52,5 +3111603340,48,214851100,54,5 +70634828,48,29223617,95,5 +70634828,48,214851100,55,5 +70634828,48,214851100,50,5 +25980377,40,70634828,51,5 +3111603340,48,214851100,50,5 +3111603340,55,214851100,53,5 +25980377,41,3111603340,50,5 +70634828,46,70634828,54,5 +70634828,47,395736790,95,5 +70634828,47,340093034,95,5 +70634828,47,3111603340,54,5 +70634828,52,3111603340,50,5 +70634828,47,3111603340,53,5 +25980377,41,340093034,95,5 +70634828,47,3111603340,52,5 +70634828,52,70634828,51,5 +3330358736,41,340093034,95,5 +471121089,93,3330358736,39,5 +471121089,93,25980377,38,5 +214851100,54,3111603340,53,5 +340093034,95,70634828,52,5 +532328014,99,214851100,53,5 +70634828,44,29223617,95,5 +214851100,54,3111603340,50,5 +214851100,51,395736790,95,5 +214851100,51,3111603340,54,5 +214851100,49,214851100,52,5 +214851100,54,3111603340,52,5 +214851100,53,3111603340,52,5 +70634828,44,214851100,53,5 +214851100,51,3111603340,53,5 +532328014,99,70634828,54,5 +3330358736,42,3111603340,54,5 +214851100,53,3111603340,53,5 +395736790,95,70634828,52,5 +517675473,92,214851100,52,5 +214851100,48,3111603340,54,5 +214851100,48,340093034,95,5 +532328014,99,214851100,50,5 +214851100,47,340093034,95,5 +2337727838,90,214851100,54,5 +2336923756,91,214851100,52,5 +214851100,47,70634828,53,5 +2336923756,91,25980377,40,5 +3330358736,41,70634828,50,5 +214851100,52,214851100,54,5 +3330358736,43,214851100,51,5 +214851100,47,70634828,51,5 +3330358736,43,303926772,99,5 +70634828,44,214851100,55,5 +2336923756,91,3111603340,52,5 +214851100,48,214851100,55,5 +517675473,92,3111603340,53,5 +2336923756,91,3111603340,53,5 +2336923756,91,3111603340,55,5 +517675473,92,3111603340,54,5 +2326722141,90,70634828,53,5 +517675473,92,3330358736,40,5 +3330358736,43,214851100,50,5 +214851100,48,70634828,55,5 +214851100,47,3111603340,51,5 +214851100,48,3111603340,53,5 +214851100,49,340093034,95,5 +2337727838,90,3111603340,51,5 +214851100,50,3111603340,54,5 +471121089,93,3330358736,40,5 +214851100,46,70634828,55,5 +70634828,44,70634828,54,5 +214851100,50,3111603340,53,5 +214851100,48,70634828,50,5 +214851100,48,70634828,51,5 +2326722141,90,214851100,52,5 +70634828,44,214851100,51,5 +214851100,46,70634828,52,5 +2326722141,90,214851100,54,5 +70634828,45,214851100,50,5 +2326722141,90,214851100,55,5 +2337727838,90,70634828,53,5 +214851100,55,214851100,52,5 +214851100,55,214851100,53,5 +214851100,55,214851100,54,5 +214851100,55,395736790,95,5 +2337727838,90,3111603340,55,5 +214851100,53,70634828,51,5 +214851100,55,70634828,53,5 +214851100,48,395736790,95,5 +214851100,47,214851100,54,5 +2326722141,90,3111603340,52,5 +214851100,47,214851100,53,5 +2327605629,94,3330358736,38,5 +2326722141,90,3111603340,51,5 +2327605629,94,3330358736,40,5 +214851100,55,70634828,54,5 +3330358736,43,214851100,53,5 +214851100,47,214851100,51,5 +214851100,54,395736790,95,5 +70634828,44,214851100,50,5 +214851100,47,214851100,52,5 +214851100,53,214851100,52,4 +214851100,52,3111603340,51,4 +16210433,92,3111603340,52,4 +25980377,38,214851100,54,4 +16210433,92,25980377,40,4 +214851100,52,70634828,53,4 +214851100,53,3111603340,55,4 +3111603340,48,70634828,55,4 +16210433,92,214851100,54,4 +3111603340,49,214851100,50,4 +214851100,53,214851100,55,4 +70634828,44,214851100,54,4 +70634828,51,3111603340,53,4 +16210433,92,3111603340,55,4 +214851100,53,340093034,95,4 +16210433,92,331545755,90,4 +214851100,46,3111603340,51,4 +214851100,52,214851100,55,4 +70634828,49,3111603340,55,4 +214851100,51,214851100,52,4 +214851100,50,70634828,54,4 +70634828,49,214851100,55,4 +3111603340,52,70634828,55,4 +3111603340,53,214851100,50,4 +214851100,50,395736790,95,4 +214851100,50,3111603340,55,4 +70634828,48,70634828,54,4 +70634828,48,70634828,53,4 +3111603340,53,3111603340,50,4 +3111603340,53,3111603340,52,4 +3111603340,53,3111603340,54,4 +70634828,48,340093034,95,4 +214851100,50,3111603340,52,4 +3330358736,43,532328014,99,4 +70634828,48,3111603340,51,4 +214851100,50,214851100,55,4 +70634828,49,3111603340,54,4 +70634828,49,395736790,95,4 +3111603340,50,214851100,52,4 +3111603340,52,3111603340,51,4 +16210433,92,70634828,55,4 +214851100,52,214851100,51,4 +214851100,52,214851100,50,4 +3111603340,50,3111603340,52,4 +3111603340,50,3111603340,53,4 +70634828,51,214851100,53,4 +70634828,51,214851100,50,4 +3111603340,50,70634828,50,4 +3111603340,51,214851100,55,4 +70634828,50,3111603340,54,4 +3111603340,51,3111603340,52,4 +471121089,93,214851100,55,4 +214851100,51,70634828,51,4 +3111603340,51,395736790,95,4 +3111603340,52,214851100,52,4 +214851100,51,3111603340,52,4 +70634828,44,3111603340,51,4 +3111603340,51,3111603340,55,4 +3111603340,47,70634828,54,4 +471121089,93,25980377,40,4 +591350440,91,214851100,55,4 +3111603340,45,340093034,95,4 +3111603340,45,395736790,95,4 +591350440,91,3330358736,38,4 +3111603340,45,70634828,53,4 +3111603340,46,214851100,50,4 +3111603340,46,214851100,51,4 +591350440,91,25980377,43,4 +591350440,91,25980377,39,4 +3111603340,46,3111603340,52,4 +591350440,91,3330358736,40,4 +532328014,99,70634828,53,4 +70634828,55,214851100,54,4 +532328014,99,3111603340,51,4 +70634828,55,214851100,52,4 +3111603340,46,70634828,55,4 +532328014,99,214851100,54,4 +70634828,54,70634828,55,4 +517675473,92,70634828,55,4 +591350440,91,3330358736,39,4 +728969035,93,214851100,52,4 +471121089,93,3111603340,53,4 +728969035,93,70634828,55,4 +214851100,55,3111603340,52,4 +214851100,55,214851100,51,4 +303926772,99,214851100,50,4 +303926772,99,3111603340,50,4 +214851100,55,214851100,50,4 +214851100,54,70634828,54,4 +303926772,99,70634828,54,4 +3111603340,44,214851100,55,4 +214851100,54,70634828,51,4 +728969035,93,214851100,55,4 +3111603340,44,3111603340,55,4 +214851100,54,70634828,50,4 +728969035,93,3330358736,40,4 +728969035,93,3330358736,39,4 +3111603340,44,70634828,55,4 +728969035,93,3111603340,55,4 +728969035,93,3111603340,52,4 +591350440,91,3330358736,43,4 +214851100,54,214851100,55,4 +70634828,54,3111603340,52,4 +214851100,54,214851100,52,4 +70634828,51,70634828,50,4 +25980377,41,70634828,55,4 +25980377,41,70634828,54,4 +70634828,52,70634828,54,4 +70634828,52,214851100,54,4 +25980377,41,214851100,54,4 +70634828,51,70634828,55,4 +3111603340,54,29223617,95,4 +25980377,40,3111603340,51,4 +70634828,51,340093034,95,4 +517675473,92,331545755,90,4 +16116663,92,214851100,54,4 +16116663,92,25980377,40,4 +16116663,92,3111603340,52,4 +16116663,92,3111603340,53,4 +16116663,92,3111603340,55,4 +25980377,39,214851100,50,4 +471121089,93,3111603340,54,4 +25980377,38,532328014,99,4 +25980377,42,214851100,50,4 +70634828,53,214851100,52,4 +70634828,53,214851100,55,4 +70634828,53,3111603340,50,4 +517675473,92,3111603340,55,4 +517675473,92,3111603340,52,4 +3111603340,47,340093034,95,4 +70634828,54,214851100,55,4 +70634828,54,214851100,53,4 +214851100,54,214851100,50,4 +25980377,43,3111603340,51,4 +70634828,54,214851100,52,4 +517675473,92,25980377,40,4 +214851100,53,70634828,54,4 +25980377,43,214851100,51,4 +25980377,43,214851100,50,4 +517675473,92,214851100,54,4 +70634828,53,70634828,51,4 +70634828,53,340093034,95,4 +70634828,53,3111603340,52,4 +25980377,42,3111603340,51,4 +70634828,48,214851100,53,4 +214851100,52,3111603340,52,4 +214851100,48,3111603340,52,4 +2349705416,94,214851100,54,4 +3330358736,38,532328014,99,4 +214851100,48,70634828,53,4 +3111603340,55,70634828,53,4 +214851100,45,214851100,52,4 +3330358736,38,70634828,53,4 +2326722141,90,70634828,52,4 +3330358736,42,214851100,51,4 +2349705416,94,214851100,55,4 +3330358736,39,214851100,51,4 +214851100,45,214851100,55,4 +2349179532,93,3330358736,40,4 +3330358736,39,214851100,54,4 +3111603340,55,340093034,95,4 +214851100,44,70634828,55,4 +3330358736,42,214851100,54,4 +2336923756,91,70634828,52,4 +214851100,47,70634828,54,4 +214851100,44,3111603340,53,4 +3330358736,42,214851100,50,4 +2336923756,91,70634828,55,4 +2337727838,90,214851100,55,4 +70634828,47,3111603340,50,4 +3330358736,39,70634828,54,4 +3330358736,40,214851100,51,4 +3111603340,55,3111603340,51,4 +2349179532,93,70634828,52,4 +214851100,45,214851100,50,4 +70634828,46,214851100,52,4 +214851100,49,214851100,54,4 +214851100,49,214851100,50,4 +2327605629,94,25980377,38,4 +2349179532,93,3111603340,52,4 +2349179532,93,25980377,38,4 +2327605629,94,25980377,40,4 +70634828,45,29223617,95,4 +214851100,44,70634828,51,4 +2349179532,93,214851100,52,4 +331545755,90,70634828,52,4 +2336923756,91,331545755,90,4 +214851100,47,395736790,95,4 +331545755,90,70634828,55,4 +70634828,46,3111603340,55,4 +2349705416,94,331545755,90,4 +3111603340,55,70634828,54,4 +2349179532,93,3111603340,53,4 +3330358736,38,214851100,53,4 +3191869223,91,214851100,54,4 +70634828,46,3111603340,51,4 +2327605629,94,3111603340,53,4 +2326722141,90,70634828,55,4 +2327605629,94,3111603340,54,4 +214851100,47,3111603340,52,4 +214851100,44,70634828,54,4 +2349179532,93,3111603340,55,4 +2349179532,93,331545755,90,4 +214851100,48,70634828,54,4 +70634828,44,340093034,95,4 +2336923756,91,214851100,54,4 +214851100,45,70634828,50,4 +3111603340,55,214851100,52,4 +3330358736,42,340093034,95,4 +3111603340,55,214851100,51,4 +214851100,49,70634828,54,4 +214851100,45,3111603340,52,4 +3191869223,91,70634828,52,4 +3111603340,54,70634828,51,4 +3111603340,54,3111603340,50,4 +214851100,49,70634828,55,4 +214851100,45,70634828,53,4 +3111603340,54,395736790,95,4 +3330358736,42,3111603340,51,4 +214851100,46,70634828,53,4 +3330358736,41,3111603340,51,4 +3191869223,91,70634828,55,4 +70634828,44,70634828,55,4 +214851100,46,214851100,53,4 +214851100,50,214851100,52,4 +2337727838,90,70634828,55,4 +70634828,48,214851100,51,4 +331545755,90,214851100,55,4 +3111603340,54,3111603340,53,4 +3111603340,54,3111603340,52,4 +70634828,45,214851100,51,4 +214851100,48,214851100,53,4 +70634828,44,70634828,53,4 +2326722141,90,3111603340,55,4 +3191869223,91,331545755,90,4 +70634828,47,3111603340,55,4 +70634828,45,70634828,55,4 +214851100,44,214851100,53,4 +214851100,48,214851100,51,4 +70634828,46,214851100,51,4 +3330358736,43,3111603340,51,4 +3330358736,41,214851100,50,4 +214851100,48,214851100,50,4 +2337727838,90,3111603340,52,4 +3330358736,40,70634828,53,4 +25980377,42,214851100,51,3 +70634828,44,70634828,52,3 +214851100,47,70634828,52,3 +25980377,40,70634828,53,3 +25980377,40,532328014,99,3 +515770253,9,2326722141,90,3 +25980377,40,70634828,54,3 +25980377,41,70634828,53,3 +3111603340,48,214851100,53,3 +70634828,45,3111603340,51,3 +3111603340,47,70634828,53,3 +3111603340,47,70634828,52,3 +16116663,92,214851100,52,3 +2336923756,91,214851100,53,3 +1452048,9,395736790,95,3 +214851100,44,29223617,95,3 +214851100,53,70634828,55,3 +25980377,42,214851100,54,3 +214851100,48,3111603340,51,3 +25980377,41,214851100,53,3 +3111603340,47,70634828,55,3 +70634828,45,340093034,95,3 +70634828,52,70634828,55,3 +70634828,53,70634828,52,3 +70634828,53,70634828,54,3 +70634828,52,3111603340,52,3 +70634828,53,70634828,55,3 +25980377,41,3111603340,51,3 +517675473,92,214851100,53,3 +25980377,42,70634828,53,3 +70634828,52,214851100,55,3 +214851100,44,214851100,52,3 +70634828,52,214851100,53,3 +70634828,52,214851100,52,3 +25980377,42,70634828,54,3 +70634828,53,3111603340,55,3 +515770253,9,2336923756,91,3 +515770253,9,2327605629,94,3 +70634828,52,214851100,51,3 +214851100,44,214851100,51,3 +25980377,42,340093034,95,3 +70634828,53,214851100,50,3 +214851100,50,214851100,54,3 +3330358736,42,214851100,53,3 +728969035,93,331545755,90,3 +214851100,47,214851100,50,3 +214851100,55,340093034,95,3 +3330358736,41,214851100,54,3 +3111603340,44,340093034,95,3 +3111603340,44,395736790,95,3 +3330358736,41,214851100,53,3 +3111603340,45,214851100,50,3 +728969035,93,3111603340,54,3 +728969035,93,70634828,52,3 +728969035,93,3111603340,53,3 +3330358736,40,532328014,99,3 +214851100,45,3111603340,53,3 +728969035,93,25980377,40,3 +3330358736,40,3111603340,51,3 +728969035,93,25980377,38,3 +214851100,45,3111603340,50,3 +214851100,45,70634828,51,3 +3111603340,44,3111603340,51,3 +214851100,55,70634828,55,3 +303926772,99,3111603340,51,3 +3330358736,41,70634828,53,3 +29223617,95,340093034,95,3 +214851100,55,3111603340,51,3 +2337727838,90,70634828,52,3 +303926772,99,214851100,51,3 +303926772,99,214851100,53,3 +303926772,99,214851100,54,3 +3330358736,41,70634828,54,3 +214851100,54,70634828,52,3 +214851100,45,70634828,54,3 +591350440,91,70634828,55,3 +3111603340,44,214851100,51,3 +3111603340,44,214851100,52,3 +3111603340,44,214851100,53,3 +214851100,45,70634828,52,3 +3111603340,44,29223617,95,3 +3111603340,45,3111603340,51,3 +214851100,45,29223617,95,3 +70634828,54,214851100,54,3 +3330358736,38,214851100,54,3 +3111603340,46,70634828,51,3 +25980377,40,214851100,51,3 +3111603340,46,70634828,54,3 +2336923756,91,70634828,50,3 +3111603340,47,214851100,53,3 +3111603340,47,214851100,54,3 +532328014,99,214851100,51,3 +70634828,54,70634828,51,3 +214851100,45,214851100,51,3 +214851100,44,70634828,53,3 +517675473,92,70634828,53,3 +517675473,92,70634828,52,3 +517675473,92,70634828,50,3 +214851100,44,70634828,52,3 +214851100,44,395736790,95,3 +2349179532,93,25980377,40,3 +70634828,55,214851100,51,3 +3111603340,46,3111603340,53,3 +70634828,55,70634828,54,3 +214851100,54,3111603340,55,3 +70634828,55,70634828,53,3 +70634828,55,70634828,52,3 +3330358736,40,214851100,54,3 +70634828,55,340093034,95,3 +591350440,91,3111603340,55,3 +591350440,91,3111603340,54,3 +591350440,91,3111603340,52,3 +2336923756,91,70634828,53,3 +3111603340,46,3111603340,51,3 +3111603340,46,214851100,52,3 +3111603340,46,214851100,55,3 +591350440,91,25980377,40,3 +70634828,55,3111603340,55,3 +591350440,91,25980377,38,3 +70634828,55,3111603340,51,3 +3111603340,46,3111603340,50,3 +3111603340,46,70634828,53,3 +2349705416,94,70634828,52,3 +2327605629,94,331545755,90,3 +214851100,51,70634828,55,3 +3111603340,50,214851100,55,3 +70634828,46,70634828,53,3 +214851100,52,214851100,53,3 +2327605629,94,214851100,53,3 +3111603340,53,214851100,52,3 +3111603340,53,214851100,51,3 +214851100,49,70634828,52,3 +214851100,50,70634828,51,3 +2349705416,94,70634828,53,3 +70634828,51,214851100,54,3 +3191869223,91,214851100,53,3 +214851100,51,70634828,54,3 +3111603340,52,70634828,53,3 +70634828,51,214851100,52,3 +3111603340,55,70634828,55,3 +70634828,50,70634828,51,3 +70634828,49,214851100,52,3 +3111603340,50,214851100,50,3 +3111603340,48,70634828,53,3 +214851100,49,214851100,51,3 +2349705416,94,214851100,53,3 +16210433,92,214851100,53,3 +3111603340,54,70634828,54,3 +3330358736,42,70634828,54,3 +3111603340,49,3111603340,51,3 +2349705416,94,3111603340,52,3 +2349705416,94,3111603340,55,3 +3111603340,54,70634828,55,3 +2327605629,94,214851100,54,3 +214851100,53,214851100,50,3 +214851100,52,70634828,55,3 +16210433,92,70634828,50,3 +16210433,92,70634828,52,3 +16210433,92,70634828,53,3 +214851100,52,3111603340,55,3 +2349705416,94,70634828,50,3 +214851100,50,70634828,52,3 +3111603340,50,340093034,95,3 +70634828,49,214851100,54,3 +70634828,50,214851100,52,3 +70634828,47,214851100,51,3 +70634828,49,70634828,53,3 +70634828,49,70634828,54,3 +214851100,51,214851100,55,3 +70634828,50,214851100,53,3 +3111603340,51,340093034,95,3 +70634828,47,214851100,53,3 +70634828,47,3111603340,51,3 +3111603340,50,70634828,51,3 +214851100,51,340093034,95,3 +3111603340,51,70634828,52,3 +3111603340,51,70634828,54,3 +214851100,51,3111603340,55,3 +70634828,47,214851100,55,3 +3111603340,52,214851100,53,3 +3111603340,55,3111603340,52,3 +214851100,51,70634828,53,3 +70634828,47,214851100,50,3 +70634828,46,70634828,55,3 +3111603340,51,3111603340,50,3 +3111603340,51,214851100,50,3 +3111603340,55,214851100,55,3 +3111603340,51,214851100,52,3 +70634828,47,70634828,50,3 +214851100,50,70634828,55,3 +214851100,51,214851100,50,3 +70634828,49,3111603340,52,3 +3111603340,52,3111603340,55,3 +214851100,51,214851100,53,3 +214851100,49,3111603340,51,3 +70634828,50,3111603340,53,3 +70634828,50,3111603340,52,3 +214851100,51,214851100,54,3 +70634828,50,3111603340,50,3 +70634828,49,70634828,52,3 +3111603340,48,70634828,54,3 +3111603340,52,214851100,55,3 +3111603340,48,70634828,52,3 +16116663,92,70634828,53,3 +16116663,92,70634828,52,3 +3111603340,48,3111603340,55,3 +16116663,92,70634828,50,3 +3111603340,53,340093034,95,3 +70634828,44,395736790,95,3 +3191869223,91,70634828,53,3 +471121089,93,331545755,90,3 +3330358736,42,395736790,95,3 +25980377,38,70634828,54,3 +70634828,47,70634828,54,3 +471121089,93,70634828,55,3 +471121089,93,70634828,50,3 +3111603340,53,70634828,50,3 +16116663,92,331545755,90,3 +3111603340,53,70634828,52,3 +25980377,39,214851100,51,3 +3111603340,53,70634828,55,3 +214851100,53,70634828,52,3 +3191869223,91,70634828,50,3 +2327605629,94,70634828,50,3 +3330358736,42,70634828,53,3 +16116663,92,70634828,55,3 +2349705416,94,214851100,52,3 +3111603340,54,3111603340,55,3 +471121089,93,214851100,54,3 +70634828,51,3111603340,54,3 +25980377,38,214851100,50,3 +471121089,93,214851100,52,3 +70634828,48,214851100,54,3 +80158773,69,70634828,51,2 +80158773,69,70634828,50,2 +3111603340,54,214851100,54,2 +80158773,69,214851100,54,2 +80158773,69,3111603340,53,2 +80158773,69,70634828,52,2 +80158773,69,70634828,53,2 +80158773,69,70634828,54,2 +80158773,69,70634828,55,2 +80158773,69,214851100,52,2 +80158773,69,214851100,51,2 +80158773,69,214851100,53,2 +80158773,69,532328014,99,2 +80158773,69,214851100,55,2 +80158773,69,3111603340,52,2 +70634828,49,70634828,51,2 +80158773,69,395736790,95,2 +80158773,69,29223617,95,2 +80158773,69,340093034,95,2 +80158773,69,303926772,99,2 +80158773,69,3111603340,55,2 +80158773,69,3111603340,50,2 +80158773,69,3111603340,54,2 +728969035,93,214851100,54,2 +728969035,93,214851100,53,2 +80158773,69,3111603340,51,2 +591350440,91,70634828,50,2 +3111603340,54,214851100,55,2 +3111603340,54,214851100,53,2 +3111603340,53,70634828,51,2 +6,10,29223617,95,2 +70634828,47,70634828,52,2 +70634828,48,70634828,55,2 +3111603340,44,3111603340,52,2 +70634828,47,70634828,53,2 +3392803162,9,331545755,90,2 +3392803162,9,395736790,95,2 +3111603340,53,3111603340,55,2 +3111603340,44,214851100,54,2 +8,37,395736790,95,2 +70634828,49,214851100,50,2 +70634828,50,214851100,51,2 +728969035,93,70634828,53,2 +3111603340,54,70634828,52,2 +3111603340,53,3111603340,51,2 +79938367,9,395736790,95,2 +8,37,29223617,95,2 +8,37,303926772,99,2 +33822284,9,340093034,95,2 +303926772,99,70634828,53,2 +3111603340,54,214851100,51,2 +3111603340,44,70634828,54,2 +3330358736,40,70634828,54,2 +80158773,69,214851100,50,2 +6,10,2337727838,90,2 +3111603340,54,214851100,50,2 +3111603340,53,70634828,53,2 +8,37,340093034,95,2 +70634828,47,70634828,55,2 +5971532,9,517675473,92,2 +728969035,93,70634828,51,2 +8,37,532328014,99,2 +303926772,99,532328014,99,2 +3111603340,53,214851100,53,2 +3111603340,53,214851100,54,2 +591350440,91,70634828,52,2 +3111603340,53,214851100,55,2 +728969035,93,70634828,50,2 +495782506,19,2336923756,91,2 +3111603340,50,70634828,52,2 +70634828,47,214851100,54,2 +471121089,93,70634828,53,2 +495782506,19,3111603340,55,2 +495782506,19,3191869223,91,2 +495782506,19,331545755,90,2 +495782506,19,340093034,95,2 +495782506,19,395736790,95,2 +495782506,19,471121089,93,2 +70634828,52,3111603340,51,2 +495782506,19,517675473,92,2 +70634828,52,3111603340,55,2 +495782506,19,532328014,99,2 +495782506,19,591350440,91,2 +495782506,19,70634828,50,2 +495782506,19,70634828,51,2 +70634828,52,70634828,53,2 +495782506,19,70634828,52,2 +471121089,93,3111603340,55,2 +471121089,93,3111603340,52,2 +495782506,19,70634828,53,2 +70634828,53,214851100,51,2 +70634828,53,214851100,53,2 +70634828,53,214851100,54,2 +3191869223,91,70634828,51,2 +70634828,52,214851100,50,2 +495782506,19,70634828,55,2 +495782506,19,16116663,92,2 +495782506,19,2327605629,94,2 +495782506,19,2326722141,90,2 +495782506,19,214851100,55,2 +495782506,19,2349179532,93,2 +331545755,90,2326722141,90,2 +495782506,19,214851100,54,2 +495782506,19,2349705416,94,2 +70634828,51,70634828,52,2 +495782506,19,29223617,95,2 +495782506,19,303926772,99,2 +495782506,19,214851100,53,2 +495782506,19,3111603340,50,2 +495782506,19,3111603340,51,2 +495782506,19,214851100,52,2 +70634828,51,70634828,53,2 +495782506,19,3111603340,52,2 +495782506,19,3111603340,53,2 +495782506,19,214851100,51,2 +495782506,19,214851100,50,2 +3191869223,91,70634828,54,2 +495782506,19,16210433,92,2 +495782506,19,70634828,54,2 +495782506,19,728969035,93,2 +70634828,47,214851100,52,2 +70634828,54,70634828,52,2 +37873062,9,532328014,99,2 +6,10,340093034,95,2 +37873062,9,395736790,95,2 +37873062,9,340093034,95,2 +3111603340,46,70634828,52,2 +495782506,19,2337727838,90,2 +3111603340,51,214851100,51,2 +6,10,3191869223,91,2 +3111603340,51,214851100,53,2 +70634828,55,214851100,55,2 +70634828,50,340093034,95,2 +37873062,9,3191869223,91,2 +3111603340,46,3111603340,55,2 +3330358736,38,70634828,54,2 +70634828,50,3111603340,51,2 +37873062,9,303926772,99,2 +591350440,91,214851100,52,2 +37873062,9,2337727838,90,2 +37873062,9,2336923756,91,2 +3330358736,39,29223617,95,2 +3111603340,46,214851100,53,2 +70634828,54,70634828,53,2 +70634828,51,214851100,55,2 +70634828,51,3111603340,55,2 +517675473,92,70634828,54,2 +471121089,93,214851100,53,2 +420984285,16,532328014,99,2 +420984285,16,395736790,95,2 +420984285,16,340093034,95,2 +420984285,16,303926772,99,2 +517675473,92,2326722141,90,2 +420984285,16,29223617,95,2 +70634828,51,3111603340,51,2 +517675473,92,2337727838,90,2 +70634828,54,214851100,51,2 +70634828,46,70634828,52,2 +6,10,728969035,93,2 +3111603340,50,214851100,51,2 +3111603340,50,214851100,53,2 +3111603340,50,214851100,54,2 +70634828,54,3111603340,51,2 +6,10,395736790,95,2 +70634828,54,3111603340,55,2 +3191869223,91,2337727838,90,2 +3191869223,91,2326722141,90,2 +70634828,54,340093034,95,2 +495782506,19,3111603340,54,2 +1,10,2326722141,90,2 +25980377,39,3111603340,51,2 +214851100,55,3111603340,55,2 +214851100,46,214851100,50,2 +214851100,45,70634828,55,2 +2327605629,94,214851100,52,2 +214851100,45,340093034,95,2 +214851100,45,3111603340,55,2 +214851100,45,3111603340,51,2 +2327605629,94,214851100,55,2 +214851100,45,214851100,54,2 +214851100,45,214851100,53,2 +214851100,44,340093034,95,2 +214851100,44,3111603340,51,2 +2327605629,94,3111603340,52,2 +2327605629,94,3111603340,55,2 +2327605629,94,70634828,52,2 +2336923756,91,2326722141,90,2 +2327605629,94,70634828,53,2 +214851100,54,70634828,55,2 +214851100,54,70634828,53,2 +2349179532,93,70634828,55,2 +2349179532,93,70634828,54,2 +2349179532,93,70634828,53,2 +2349179532,93,70634828,51,2 +2349179532,93,2337727838,90,2 +2349179532,93,2326722141,90,2 +2349179532,93,214851100,54,2 +2349179532,93,214851100,53,2 +2349705416,94,2326722141,90,2 +214851100,54,214851100,51,2 +2326722141,90,331545755,90,2 +214851100,48,214851100,54,2 +214851100,48,70634828,52,2 +214851100,50,214851100,53,2 +14913649,9,395736790,95,2 +16116663,11,16210433,92,2 +16116663,11,2336923756,91,2 +214851100,53,3111603340,51,2 +16116663,11,29223617,95,2 +214851100,53,214851100,54,2 +16116663,11,3191869223,91,2 +214851100,53,214851100,51,2 +16116663,11,340093034,95,2 +16116663,11,395736790,95,2 +214851100,52,70634828,52,2 +16116663,11,532328014,99,2 +16116663,11,591350440,91,2 +214851100,51,70634828,52,2 +16116663,92,214851100,53,2 +16116663,92,2326722141,90,2 +16116663,92,2337727838,90,2 +16116663,92,70634828,51,2 +16116663,92,70634828,54,2 +16210433,92,2326722141,90,2 +16210433,92,2337727838,90,2 +214851100,50,70634828,53,2 +1,10,591350440,91,2 +1,10,395736790,95,2 +1,10,3191869223,91,2 +214851100,50,340093034,95,2 +16210433,92,70634828,54,2 +2349705416,94,2337727838,90,2 +214851100,55,70634828,52,2 +214851100,54,3111603340,51,2 +25980377,41,214851100,50,2 +2337727838,90,331545755,90,2 +2337727838,90,2326722141,90,2 +2336923756,91,70634828,54,2 +2336923756,91,70634828,51,2 +25980377,41,214851100,51,2 +214851100,54,214851100,53,2 +2336923756,91,2337727838,90,2 +25980377,40,214851100,54,2 +2349705416,94,70634828,51,2 +2349705416,94,70634828,55,2 +2349705416,94,70634828,54,2 +25980377,39,29223617,95,2 +598808584,15,214851100,55,1 +648145286,35,29223617,95,1 +598808584,15,214851100,52,1 +598808584,15,214851100,51,1 +648145286,35,25980377,39,1 +598808584,15,214851100,49,1 +598808584,15,214851100,50,1 +598808584,15,2337727838,90,1 +598808584,15,214851100,48,1 +648145286,35,303926772,99,1 +598808584,15,214851100,47,1 +598808584,15,2326722141,90,1 +6,10,532328014,99,1 +648145286,35,214851100,53,1 +598808584,15,25980377,40,1 +648145286,35,214851100,49,1 +598808584,15,25980377,42,1 +598808584,15,29223617,95,1 +598808584,15,214851100,46,1 +644252759,61,728969035,93,1 +644252759,61,591350440,91,1 +598808584,15,303926772,99,1 +644252759,61,532328014,99,1 +598808584,15,3111603340,45,1 +644252759,61,471121089,93,1 +648145286,35,3111603340,49,1 +648145286,35,532328014,99,1 +648145286,35,3111603340,53,1 +598808584,15,214851100,44,1 +675729777,10,3191869223,91,1 +675729777,10,303926772,99,1 +675729777,10,2336923756,91,1 +675729777,10,16116663,92,1 +668539285,17,728969035,93,1 +668539285,17,591350440,91,1 +668539285,17,517675473,92,1 +668539285,17,471121089,93,1 +668539285,17,395736790,95,1 +668539285,17,340093034,95,1 +668539285,17,331545755,90,1 +668539285,17,3191869223,91,1 +668539285,17,303926772,99,1 +668539285,17,29223617,95,1 +668539285,17,2349705416,94,1 +668539285,17,2349179532,93,1 +668539285,17,2337727838,90,1 +668539285,17,2327605629,94,1 +668539285,17,2326722141,90,1 +668539285,17,16210433,92,1 +664591135,9,340093034,95,1 +648145286,35,70634828,53,1 +648145286,35,70634828,49,1 +644252759,61,395736790,95,1 +648145286,35,395736790,95,1 +648145286,35,340093034,95,1 +648145286,35,3330358736,39,1 +598808584,15,3111603340,47,1 +598808584,15,3111603340,50,1 +598808584,15,3111603340,48,1 +644252759,61,340093034,95,1 +598808584,15,70634828,46,1 +598808584,15,70634828,48,1 +6333996,66,532328014,99,1 +675729777,10,395736790,95,1 +6333996,66,517675473,92,1 +6333996,66,395736790,95,1 +598808584,15,70634828,50,1 +598808584,15,70634828,51,1 +6,10,2327605629,94,1 +214851100,54,70634828,44,1 +6,10,2349179532,93,1 +6,10,2349705416,94,1 +214851100,54,340093034,95,1 +6333996,66,340093034,95,1 +6333996,66,331545755,90,1 +6,10,303926772,99,1 +6333996,66,29223617,95,1 +6333996,66,2349179532,93,1 +6,10,331545755,90,1 +6333996,66,2337727838,90,1 +6333996,66,2336923756,91,1 +214851100,54,3111603340,45,1 +6333996,66,2327605629,94,1 +6333996,66,2326722141,90,1 +6333996,66,16210433,92,1 +618469306,9,331545755,90,1 +6,10,591350440,91,1 +598808584,15,70634828,44,1 +598808584,15,532328014,99,1 +598808584,15,395736790,95,1 +644252759,61,2336923756,91,1 +644252759,61,331545755,90,1 +598808584,15,3111603340,49,1 +598808584,15,3111603340,51,1 +598808584,15,3111603340,52,1 +598808584,15,3111603340,55,1 +644252759,61,3191869223,91,1 +598808584,15,331545755,90,1 +644252759,61,303926772,99,1 +644252759,61,29223617,95,1 +644252759,61,2349179532,93,1 +598808584,15,3330358736,38,1 +644252759,61,2337727838,90,1 +644252759,61,2327605629,94,1 +598808584,15,340093034,95,1 +598808584,15,3330358736,39,1 +644252759,61,2326722141,90,1 +643954924,9,2327605629,94,1 +640700057,9,728969035,93,1 +640700057,9,517675473,92,1 +640700057,9,3191869223,91,1 +598808584,15,3330358736,40,1 +6333996,66,728969035,93,1 +598808584,15,3330358736,41,1 +598808584,15,3330358736,42,1 +598808584,15,3330358736,43,1 +6333996,66,591350440,91,1 +675729777,10,340093034,95,1 +290636928,9,2336923756,91,1 +676597455,68,214851100,50,1 +203314437,22,532328014,99,1 +70634828,46,3111603340,44,1 +70634828,46,3111603340,45,1 +203314437,22,340093034,95,1 +203314437,22,3330358736,43,1 +203314437,22,3330358736,42,1 +203314437,22,3330358736,41,1 +203314437,22,3330358736,40,1 +203314437,22,3330358736,39,1 +203314437,22,3330358736,38,1 +203314437,22,331545755,90,1 +203314437,22,3111603340,55,1 +203314437,22,3111603340,54,1 +203314437,22,3111603340,53,1 +203314437,22,3111603340,52,1 +203314437,22,3111603340,51,1 +203314437,22,395736790,95,1 +203314437,22,70634828,44,1 +203314437,22,3111603340,49,1 +203314437,22,70634828,45,1 +205960791,63,214851100,55,1 +205960791,63,214851100,54,1 +205960791,63,214851100,51,1 +205960791,63,214851100,50,1 +70634828,46,214851100,44,1 +203314437,22,70634828,55,1 +203314437,22,70634828,54,1 +203314437,22,70634828,53,1 +203314437,22,70634828,52,1 +203314437,22,70634828,51,1 +203314437,22,70634828,50,1 +203314437,22,70634828,49,1 +203314437,22,70634828,48,1 +203314437,22,70634828,47,1 +203314437,22,70634828,46,1 +203314437,22,3111603340,50,1 +203314437,22,3111603340,48,1 +676597455,68,214851100,51,1 +203314437,22,214851100,52,1 +70634828,47,3111603340,45,1 +203314437,22,214851100,51,1 +203314437,22,214851100,50,1 +203314437,22,214851100,49,1 +203314437,22,214851100,48,1 +203314437,22,214851100,47,1 +203314437,22,214851100,46,1 +203314437,22,214851100,45,1 +203314437,22,214851100,44,1 +197362120,15,70634828,55,1 +197362120,15,70634828,49,1 +197362120,15,70634828,47,1 +197362120,15,70634828,46,1 +197362120,15,70634828,44,1 +197362120,15,532328014,99,1 +70634828,47,3111603340,44,1 +203314437,22,214851100,53,1 +203314437,22,3111603340,47,1 +203314437,22,214851100,54,1 +203314437,22,3111603340,46,1 +203314437,22,3111603340,45,1 +203314437,22,3111603340,44,1 +70634828,47,214851100,44,1 +203314437,22,303926772,99,1 +203314437,22,29223617,95,1 +203314437,22,25980377,43,1 +203314437,22,25980377,42,1 +203314437,22,25980377,41,1 +203314437,22,25980377,40,1 +203314437,22,25980377,39,1 +203314437,22,25980377,38,1 +203314437,22,2337727838,90,1 +203314437,22,2326722141,90,1 +203314437,22,214851100,55,1 +205960791,63,29223617,95,1 +205960791,63,303926772,99,1 +205960791,63,3111603340,50,1 +676597455,68,70634828,53,1 +688155470,30,303926772,99,1 +688155470,30,340093034,95,1 +688155470,30,395736790,95,1 +688155470,30,532328014,99,1 +696450846,9,3191869223,91,1 +70634828,44,214851100,44,1 +214851100,53,70634828,53,1 +214851100,53,70634828,45,1 +214851100,53,70634828,44,1 +214851100,53,3111603340,45,1 +214851100,52,70634828,45,1 +214851100,52,70634828,44,1 +214851100,52,3111603340,45,1 +214851100,51,70634828,45,1 +214851100,51,70634828,44,1 +5979030,9,2337727838,90,1 +676597455,68,70634828,52,1 +205960791,63,3111603340,51,1 +676597455,68,70634828,51,1 +676597455,68,214851100,52,1 +676597455,68,214851100,53,1 +676597455,68,214851100,54,1 +676597455,68,214851100,55,1 +676597455,68,2326722141,90,1 +676597455,68,2337727838,90,1 +676597455,68,29223617,95,1 +676597455,68,303926772,99,1 +676597455,68,3111603340,50,1 +676597455,68,3111603340,52,1 +676597455,68,3111603340,55,1 +676597455,68,331545755,90,1 +676597455,68,340093034,95,1 +676597455,68,395736790,95,1 +676597455,68,532328014,99,1 +70634828,44,3111603340,44,1 +70634828,44,3111603340,45,1 +214851100,51,3111603340,51,1 +214851100,51,3111603340,45,1 +214851100,45,3111603340,45,1 +214851100,44,70634828,45,1 +214851100,44,70634828,44,1 +70634828,45,3111603340,44,1 +70634828,45,3111603340,45,1 +214851100,44,3111603340,45,1 +214851100,44,214851100,54,1 +205960791,63,70634828,53,1 +205960791,63,70634828,51,1 +205960791,63,70634828,50,1 +205960791,63,532328014,99,1 +205960791,63,395736790,95,1 +205960791,63,340093034,95,1 +205960791,63,3111603340,55,1 +205960791,63,3111603340,53,1 +214851100,45,70634828,44,1 +214851100,45,70634828,45,1 +214851100,46,3111603340,45,1 +214851100,48,70634828,45,1 +214851100,50,70634828,45,1 +214851100,50,70634828,44,1 +214851100,50,3111603340,45,1 +214851100,49,70634828,45,1 +214851100,49,70634828,44,1 +214851100,49,3111603340,45,1 +214851100,48,70634828,44,1 +214851100,46,70634828,44,1 +214851100,48,3111603340,45,1 +214851100,47,70634828,45,1 +214851100,47,70634828,44,1 +214851100,47,3111603340,45,1 +214851100,46,70634828,45,1 +70634828,45,214851100,44,1 +688155470,30,29223617,95,1 +59234665,65,70634828,55,1 +5971532,9,532328014,99,1 +2310406050,60,70634828,45,1 +517675473,92,214851100,51,1 +2310406050,60,3111603340,49,1 +2310406050,60,3111603340,48,1 +2310406050,60,3111603340,47,1 +2310406050,60,3111603340,46,1 +2310406050,60,3111603340,45,1 +2310406050,60,303926772,99,1 +2310406050,60,29223617,95,1 +2310406050,60,25980377,43,1 +2310406050,60,25980377,42,1 +2310406050,60,25980377,41,1 +2310406050,60,25980377,39,1 +2310406050,60,25980377,38,1 +517675473,92,3111603340,50,1 +517675473,92,3111603340,51,1 +2310406050,60,2337727838,90,1 +2310406050,60,2326722141,90,1 +2310406050,60,3111603340,50,1 +2310406050,60,3111603340,51,1 +2310406050,60,3111603340,52,1 +2310406050,60,3111603340,54,1 +2310406050,60,395736790,95,1 +2310406050,60,340093034,95,1 +2310406050,60,3330358736,43,1 +2310406050,60,3330358736,41,1 +2310406050,60,3330358736,39,1 +2310406050,60,3330358736,38,1 +2310406050,60,331545755,90,1 +2310406050,60,3111603340,53,1 +507827038,10,728969035,93,1 +507827038,10,2327605629,94,1 +507827038,10,2336923756,91,1 +507827038,10,29223617,95,1 +507827038,10,331545755,90,1 +507827038,10,340093034,95,1 +507827038,10,395736790,95,1 +507827038,10,591350440,91,1 +2310406050,60,214851100,55,1 +2310406050,60,214851100,54,1 +2310406050,60,214851100,53,1 +214851100,7,532328014,99,1 +225958786,11,2327605629,94,1 +225958786,11,16116663,92,1 +214851100,7,70634828,54,1 +214851100,7,70634828,53,1 +214851100,7,70634828,50,1 +214851100,7,70634828,45,1 +214851100,7,70634828,44,1 +214851100,7,395736790,95,1 +225958786,11,2337727838,90,1 +543470507,8,16116663,92,1 +543470507,8,2326722141,90,1 +543470507,8,2327605629,94,1 +543470507,8,2336923756,91,1 +543470507,8,2337727838,90,1 +543470507,8,2349179532,93,1 +543470507,8,29223617,95,1 +225958786,11,2336923756,91,1 +225958786,11,2349179532,93,1 +2310406050,60,214851100,52,1 +517675473,92,70634828,51,1 +2310406050,60,214851100,51,1 +2310406050,60,214851100,49,1 +2310406050,60,214851100,48,1 +2310406050,60,214851100,46,1 +2310406050,60,214851100,45,1 +225958786,11,591350440,91,1 +225958786,11,395736790,95,1 +225958786,11,340093034,95,1 +225958786,11,2349705416,94,1 +225958786,11,3191869223,91,1 +225958786,11,303926772,99,1 +225958786,11,29223617,95,1 +518871190,9,2326722141,90,1 +518871190,9,2336923756,91,1 +518871190,9,340093034,95,1 +518871190,9,395736790,95,1 +2310406050,60,532328014,99,1 +2310406050,60,70634828,46,1 +214851100,54,70634828,45,1 +2310406050,60,70634828,47,1 +2310534839,64,70634828,50,1 +2310534839,64,70634828,49,1 +2310534839,64,70634828,45,1 +471121089,93,2326722141,90,1 +471121089,93,2337727838,90,1 +2310534839,64,532328014,99,1 +2310534839,64,395736790,95,1 +2310534839,64,340093034,95,1 +2310534839,64,3330358736,42,1 +2310534839,64,3330358736,41,1 +2310534839,64,3330358736,40,1 +471121089,93,3111603340,50,1 +471121089,93,3111603340,51,1 +2310534839,64,3330358736,39,1 +2310534839,64,3330358736,38,1 +2310534839,64,331545755,90,1 +2310534839,64,3111603340,55,1 +2310534839,64,70634828,51,1 +471121089,93,214851100,51,1 +466148111,9,340093034,95,1 +2310534839,64,70634828,55,1 +410030851,27,70634828,48,1 +410030851,27,70634828,50,1 +410030851,27,70634828,51,1 +410030851,27,70634828,53,1 +410030851,27,70634828,54,1 +410030851,27,70634828,55,1 +2311838590,97,29223617,95,1 +2310534839,64,70634828,54,1 +4607820,9,395736790,95,1 +2310534839,64,70634828,53,1 +2310534839,64,70634828,52,1 +441623911,79,303926772,99,1 +441623911,79,532328014,99,1 +4607820,9,2326722141,90,1 +4607820,9,331545755,90,1 +4607820,9,340093034,95,1 +2310534839,64,3111603340,54,1 +2310534839,64,3111603340,53,1 +2310534839,64,3111603340,52,1 +2310534839,64,214851100,47,1 +2310534839,64,214851100,54,1 +2310534839,64,214851100,53,1 +2310534839,64,214851100,52,1 +2310534839,64,214851100,51,1 +2310534839,64,214851100,50,1 +2310534839,64,214851100,49,1 +2310534839,64,214851100,48,1 +2310534839,64,214851100,44,1 +2310534839,64,2326722141,90,1 +2310406050,60,70634828,55,1 +2310406050,60,70634828,54,1 +2310406050,60,70634828,53,1 +2310406050,60,70634828,52,1 +2310406050,60,70634828,51,1 +2310406050,60,70634828,50,1 +2310406050,60,70634828,48,1 +2310534839,64,214851100,55,1 +2310534839,64,2337727838,90,1 +2310534839,64,3111603340,51,1 +2310534839,64,303926772,99,1 +2310534839,64,3111603340,50,1 +2310534839,64,3111603340,49,1 +2310534839,64,3111603340,47,1 +2310534839,64,3111603340,45,1 +2310534839,64,3111603340,44,1 +471121089,93,70634828,51,1 +471121089,93,70634828,52,1 +471121089,93,70634828,54,1 +2310534839,64,25980377,38,1 +2310534839,64,29223617,95,1 +493002466,9,331545755,90,1 +493002466,9,728969035,93,1 +2310534839,64,25980377,42,1 +2310534839,64,25980377,41,1 +2310534839,64,25980377,40,1 +2310534839,64,25980377,39,1 +543470507,8,303926772,99,1 +543470507,8,3191869223,91,1 +543470507,8,331545755,90,1 +543470507,8,340093034,95,1 +59234665,65,214851100,51,1 +59234665,65,214851100,52,1 +59234665,65,214851100,53,1 +59234665,65,214851100,54,1 +59234665,65,214851100,55,1 +59234665,65,2326722141,90,1 +59234665,65,2327605629,94,1 +59234665,65,2336923756,91,1 +59234665,65,2337727838,90,1 +59234665,65,2349705416,94,1 +59234665,65,25980377,38,1 +59234665,65,25980377,39,1 +59234665,65,25980377,40,1 +59234665,65,25980377,42,1 +59234665,65,25980377,43,1 +59234665,65,29223617,95,1 +59234665,65,303926772,99,1 +59234665,65,214851100,50,1 +59234665,65,214851100,49,1 +59234665,65,214851100,48,1 +214851100,55,70634828,44,1 +214851100,7,25980377,43,1 +214851100,7,25980377,40,1 +591350440,91,331545755,90,1 +214851100,7,25980377,39,1 +214851100,7,2337727838,90,1 +214851100,7,2326722141,90,1 +214851100,55,70634828,45,1 +214851100,55,3111603340,45,1 +59234665,65,214851100,47,1 +591350440,91,70634828,51,1 +591350440,91,70634828,53,1 +59234665,65,16116663,92,1 +59234665,65,16210433,92,1 +59234665,65,214851100,44,1 +59234665,65,214851100,45,1 +59234665,65,214851100,46,1 +59234665,65,3111603340,45,1 +59234665,65,3111603340,46,1 +59234665,65,3111603340,48,1 +197362120,15,340093034,95,1 +59234665,65,70634828,46,1 +59234665,65,70634828,48,1 +59234665,65,70634828,49,1 +59234665,65,70634828,50,1 +59234665,65,70634828,51,1 +59234665,65,70634828,53,1 +59234665,65,70634828,54,1 +59234665,65,728969035,93,1 +59234665,65,70634828,44,1 +596368303,12,29223617,95,1 +596368303,12,303926772,99,1 +596368303,12,340093034,95,1 +596368303,12,395736790,95,1 +596368303,12,532328014,99,1 +5971532,9,29223617,95,1 +5971532,9,340093034,95,1 +59234665,65,70634828,45,1 +59234665,65,591350440,91,1 +59234665,65,3111603340,49,1 +59234665,65,3330358736,38,1 +59234665,65,3111603340,50,1 +59234665,65,3111603340,52,1 +59234665,65,3111603340,53,1 +59234665,65,3111603340,54,1 +59234665,65,3111603340,55,1 +59234665,65,3191869223,91,1 +59234665,65,331545755,90,1 +59234665,65,3330358736,39,1 +59234665,65,532328014,99,1 +59234665,65,3330358736,40,1 +59234665,65,3330358736,42,1 +59234665,65,3330358736,43,1 +59234665,65,340093034,95,1 +59234665,65,395736790,95,1 +59234665,65,471121089,93,1 +59234665,65,517675473,92,1 +591350440,91,3111603340,53,1 +214851100,7,29223617,95,1 +591350440,91,3111603340,50,1 +562681526,25,3111603340,52,1 +562681526,25,25980377,42,1 +562681526,25,25980377,43,1 +562681526,25,29223617,95,1 +562681526,25,303926772,99,1 +562681526,25,3111603340,45,1 +562681526,25,3111603340,49,1 +562681526,25,3111603340,51,1 +562681526,25,3111603340,53,1 +562681526,25,25980377,39,1 +562681526,25,3111603340,54,1 +562681526,25,3111603340,55,1 +562681526,25,331545755,90,1 +562681526,25,3330358736,39,1 +562681526,25,3330358736,41,1 +562681526,25,3330358736,42,1 +562681526,25,3330358736,43,1 +562681526,25,25980377,41,1 +562681526,25,2337727838,90,1 +562681526,25,395736790,95,1 +562681526,25,214851100,44,1 +543470507,8,395736790,95,1 +543470507,8,517675473,92,1 +543470507,8,532328014,99,1 +543470507,8,591350440,91,1 +543470507,8,728969035,93,1 +551856519,33,214851100,47,1 +551856519,33,70634828,47,1 +562681526,25,214851100,45,1 +562681526,25,2326722141,90,1 +562681526,25,214851100,46,1 +562681526,25,214851100,48,1 +562681526,25,214851100,50,1 +562681526,25,214851100,52,1 +562681526,25,214851100,53,1 +562681526,25,214851100,54,1 +562681526,25,214851100,55,1 +562681526,25,340093034,95,1 +562681526,25,532328014,99,1 +214851100,7,303926772,99,1 +214851100,7,340093034,95,1 +5849940,36,303926772,99,1 +5849940,36,3111603340,52,1 +5849940,36,3330358736,41,1 +5849940,36,340093034,95,1 +5849940,36,395736790,95,1 +5849940,36,532328014,99,1 +5849940,36,70634828,52,1 +591350440,91,214851100,53,1 +5849940,36,25980377,41,1 +591350440,91,214851100,54,1 +214851100,7,3330358736,43,1 +214851100,7,3330358736,40,1 +214851100,7,331545755,90,1 +214851100,7,3111603340,54,1 +214851100,7,3111603340,50,1 +214851100,7,3111603340,45,1 +5849940,36,29223617,95,1 +5849940,36,214851100,52,1 +562681526,25,70634828,45,1 +578803019,10,16116663,92,1 +562681526,25,70634828,48,1 +562681526,25,70634828,49,1 +562681526,25,70634828,51,1 +562681526,25,70634828,52,1 +562681526,25,70634828,53,1 +562681526,25,70634828,54,1 +562681526,25,70634828,55,1 +578803019,10,2326722141,90,1 +5849940,26,532328014,99,1 +578803019,10,2337727838,90,1 +578803019,10,2349705416,94,1 +578803019,10,395736790,95,1 +5849940,26,29223617,95,1 +5849940,26,303926772,99,1 +5849940,26,340093034,95,1 +5849940,26,395736790,95,1 +197362120,15,395736790,95,1 +197362120,15,25980377,43,1 +197362120,15,3330358736,42,1 +78979697,61,395736790,95,1 +758879940,65,3111603340,54,1 +758879940,65,3111603340,55,1 +758879940,65,3191869223,91,1 +758879940,65,331545755,90,1 +758879940,65,3330358736,38,1 +758879940,65,3330358736,39,1 +758879940,65,3330358736,40,1 +758879940,65,3330358736,41,1 +758879940,65,3330358736,43,1 +758879940,65,340093034,95,1 +758879940,65,395736790,95,1 +758879940,65,471121089,93,1 +758879940,65,517675473,92,1 +758879940,65,532328014,99,1 +758879940,65,591350440,91,1 +758879940,65,70634828,45,1 +758879940,65,70634828,46,1 +758879940,65,3111603340,53,1 +758879940,65,3111603340,52,1 +758879940,65,3111603340,51,1 +758879940,65,25980377,42,1 +758879940,65,2337727838,90,1 +758879940,65,2349179532,93,1 +758879940,65,2349705416,94,1 +758879940,65,25980377,38,1 +758879940,65,25980377,39,1 +758879940,65,25980377,40,1 +758879940,65,25980377,41,1 +758879940,65,25980377,43,1 +758879940,65,3111603340,50,1 +758879940,65,29223617,95,1 +758879940,65,303926772,99,1 +758879940,65,3111603340,44,1 +758879940,65,3111603340,46,1 +758879940,65,3111603340,47,1 +758879940,65,3111603340,48,1 +758879940,65,3111603340,49,1 +758879940,65,70634828,47,1 +758879940,65,70634828,50,1 +758879940,65,70634828,52,1 +78979697,61,16210433,92,1 +771821595,31,517675473,92,1 +771821595,31,532328014,99,1 +771821595,31,591350440,91,1 +771821595,31,70634828,55,1 +771821595,31,728969035,93,1 +778745779,9,3191869223,91,1 +78576577,9,517675473,92,1 +78979697,61,2326722141,90,1 +771821595,31,395736790,95,1 +78979697,61,2327605629,94,1 +78979697,61,2336923756,91,1 +78979697,61,2337727838,90,1 +78979697,61,29223617,95,1 +78979697,61,303926772,99,1 +78979697,61,3191869223,91,1 +78979697,61,331545755,90,1 +771821595,31,471121089,93,1 +771821595,31,340093034,95,1 +758879940,65,70634828,53,1 +771821595,31,2336923756,91,1 +758879940,65,70634828,54,1 +762501019,9,2327605629,94,1 +771821595,31,16116663,92,1 +771821595,31,16210433,92,1 +771821595,31,214851100,52,1 +771821595,31,214851100,55,1 +771821595,31,2326722141,90,1 +771821595,31,2337727838,90,1 +771821595,31,3330358736,42,1 +771821595,31,25980377,42,1 +771821595,31,29223617,95,1 +771821595,31,3111603340,52,1 +771821595,31,3111603340,55,1 +771821595,31,3191869223,91,1 +771821595,31,331545755,90,1 +771821595,31,3330358736,41,1 +758879940,65,2336923756,91,1 +758879940,65,2326722141,90,1 +758879940,65,214851100,55,1 +11807506,9,532328014,99,1 +728969035,93,3111603340,50,1 +728969035,93,3111603340,51,1 +1208566436,62,214851100,53,1 +1208566436,62,214851100,52,1 +1208566436,62,214851100,51,1 +1208566436,62,16210433,92,1 +1208566436,62,16116663,92,1 +11807506,9,340093034,95,1 +1208566436,62,2327605629,94,1 +11807506,9,303926772,99,1 +11807506,9,29223617,95,1 +11807506,9,2336923756,91,1 +11807506,36,70634828,52,1 +11807506,36,532328014,99,1 +11807506,36,395736790,95,1 +11807506,36,340093034,95,1 +1208566436,62,2326722141,90,1 +1208566436,62,2336923756,91,1 +11807506,36,3111603340,52,1 +728969035,93,214851100,51,1 +71271700,27,70634828,45,1 +71271700,27,70634828,46,1 +71271700,27,70634828,47,1 +71271700,27,70634828,49,1 +71271700,27,70634828,50,1 +71271700,27,70634828,53,1 +71271700,27,70634828,54,1 +1208566436,62,3111603340,51,1 +1208566436,62,2337727838,90,1 +1208566436,62,3111603340,50,1 +1208566436,62,303926772,99,1 +1208566436,62,29223617,95,1 +728969035,93,2326722141,90,1 +728969035,93,2337727838,90,1 +1208566436,62,2349705416,94,1 +1208566436,62,2349179532,93,1 +11807506,36,3330358736,41,1 +728969035,93,70634828,54,1 +758879940,65,214851100,54,1 +758879940,65,214851100,44,1 +756272716,32,340093034,95,1 +756272716,32,395736790,95,1 +756272716,32,532328014,99,1 +756272716,32,70634828,46,1 +756272716,32,70634828,54,1 +758879940,65,16116663,92,1 +758879940,65,16210433,92,1 +758879940,65,214851100,45,1 +756272716,32,303926772,99,1 +758879940,65,214851100,46,1 +758879940,65,214851100,48,1 +758879940,65,214851100,49,1 +758879940,65,214851100,50,1 +758879940,65,214851100,51,1 +758879940,65,214851100,52,1 +758879940,65,214851100,53,1 +756272716,32,3111603340,46,1 +756272716,32,29223617,95,1 +11807506,36,303926772,99,1 +737770776,34,340093034,95,1 +733657390,10,3191869223,91,1 +733657390,10,340093034,95,1 +733657390,10,517675473,92,1 +737770776,34,214851100,48,1 +737770776,34,29223617,95,1 +737770776,34,303926772,99,1 +737770776,34,3111603340,48,1 +737770776,34,395736790,95,1 +756272716,32,25980377,43,1 +737770776,34,70634828,48,1 +742704658,9,2327605629,94,1 +742704658,9,340093034,95,1 +742704658,9,395736790,95,1 +742704658,9,532328014,99,1 +756272716,32,214851100,46,1 +756272716,32,214851100,54,1 +78979697,61,340093034,95,1 +78979697,61,471121089,93,1 +71271700,27,532328014,99,1 +78979697,61,532328014,99,1 +961017,23,214851100,55,1 +961017,23,2326722141,90,1 +961017,23,2327605629,94,1 +961017,23,2336923756,91,1 +961017,23,2337727838,90,1 +961017,23,2349179532,93,1 +961017,23,2349705416,94,1 +961017,23,25980377,39,1 +961017,23,25980377,40,1 +961017,23,25980377,41,1 +961017,23,25980377,42,1 +961017,23,25980377,43,1 +961017,23,29223617,95,1 +961017,23,303926772,99,1 +961017,23,3111603340,44,1 +961017,23,3111603340,45,1 +961017,23,3111603340,46,1 +961017,23,214851100,54,1 +961017,23,214851100,53,1 +961017,23,214851100,52,1 +907433543,10,331545755,90,1 +9032550,34,3111603340,48,1 +9032550,34,340093034,95,1 +9032550,34,70634828,48,1 +907433543,10,2327605629,94,1 +907433543,10,2349179532,93,1 +907433543,10,29223617,95,1 +907433543,10,303926772,99,1 +907433543,10,340093034,95,1 +961017,23,214851100,51,1 +907433543,10,517675473,92,1 +950849442,9,340093034,95,1 +961017,23,16116663,92,1 +961017,23,214851100,44,1 +961017,23,214851100,46,1 +961017,23,214851100,49,1 +961017,23,214851100,50,1 +961017,23,3111603340,47,1 +961017,23,3111603340,49,1 +961017,23,3111603340,50,1 +961017,23,70634828,55,1 +961017,23,70634828,48,1 +961017,23,70634828,49,1 +961017,23,70634828,50,1 +961017,23,70634828,51,1 +961017,23,70634828,52,1 +961017,23,70634828,53,1 +961017,23,70634828,54,1 +961017,23,728969035,93,1 +961017,23,70634828,46,1 +9620005,9,29223617,95,1 +9620005,9,517675473,92,1 +9620005,9,728969035,93,1 +9746245,97,29223617,95,1 +9746245,97,303926772,99,1 +9746245,97,340093034,95,1 +9746245,97,395736790,95,1 +961017,23,70634828,47,1 +961017,23,70634828,45,1 +961017,23,3111603340,51,1 +961017,23,3330358736,39,1 +961017,23,3111603340,52,1 +961017,23,3111603340,53,1 +961017,23,3111603340,54,1 +961017,23,3111603340,55,1 +961017,23,3191869223,91,1 +961017,23,331545755,90,1 +961017,23,3330358736,38,1 +961017,23,3330358736,40,1 +961017,23,70634828,44,1 +961017,23,3330358736,41,1 +961017,23,3330358736,42,1 +961017,23,3330358736,43,1 +961017,23,340093034,95,1 +961017,23,395736790,95,1 +961017,23,532328014,99,1 +961017,23,591350440,91,1 +9032550,34,214851100,48,1 +872394725,70,728969035,93,1 +872394725,70,591350440,91,1 +10437056,9,340093034,95,1 +1171244159,32,214851100,54,1 +1171244159,32,214851100,46,1 +1160497810,12,532328014,99,1 +1160497810,12,395736790,95,1 +1160497810,12,340093034,95,1 +1160497810,12,303926772,99,1 +1160497810,12,29223617,95,1 +10437056,9,2337727838,90,1 +1171244159,32,29223617,95,1 +10437056,9,2327605629,94,1 +10437056,9,2326722141,90,1 +1,10,303926772,99,1 +805940123,72,214851100,50,1 +805940123,72,214851100,52,1 +805940123,72,214851100,54,1 +805940123,72,214851100,55,1 +1171244159,32,25980377,43,1 +1171244159,32,303926772,99,1 +805940123,72,303926772,99,1 +11807506,36,25980377,41,1 +78979697,61,728969035,93,1 +78979697,74,29223617,95,1 +78979697,74,303926772,99,1 +78979697,74,340093034,95,1 +78979697,74,395736790,95,1 +78979697,74,532328014,99,1 +11807506,36,29223617,95,1 +11807506,36,214851100,52,1 +1171244159,32,3111603340,46,1 +1171244159,32,70634828,54,1 +1171244159,32,70634828,46,1 +1171244159,32,532328014,99,1 +1171244159,32,395736790,95,1 +1171244159,32,340093034,95,1 +1171244159,32,3330358736,43,1 +1171244159,32,3111603340,54,1 +805940123,72,29223617,95,1 +805940123,72,3111603340,50,1 +872394725,70,532328014,99,1 +872394725,70,16116663,92,1 +862404568,11,340093034,95,1 +862404568,11,395736790,95,1 +862404568,11,532328014,99,1 +862404568,11,591350440,91,1 +862404568,11,728969035,93,1 +863973253,9,2336923756,91,1 +863973253,9,728969035,93,1 +872394725,70,2327605629,94,1 +862404568,11,3191869223,91,1 +872394725,70,2349705416,94,1 +872394725,70,29223617,95,1 +872394725,70,3191869223,91,1 +872394725,70,340093034,95,1 +872394725,70,395736790,95,1 +872394725,70,471121089,93,1 +872394725,70,517675473,92,1 +862404568,11,331545755,90,1 +862404568,11,303926772,99,1 +805940123,72,3111603340,51,1 +805940123,72,70634828,55,1 +805940123,72,3111603340,53,1 +805940123,72,340093034,95,1 +805940123,72,395736790,95,1 +805940123,72,532328014,99,1 +805940123,72,70634828,50,1 +805940123,72,70634828,53,1 +805940123,72,70634828,54,1 +808524154,9,517675473,92,1 +862404568,11,29223617,95,1 +8114841,9,2337727838,90,1 +8114841,9,728969035,93,1 +862404568,11,2326722141,90,1 +862404568,11,2327605629,94,1 +862404568,11,2336923756,91,1 +862404568,11,2337727838,90,1 +862404568,11,2349705416,94,1 +71271700,27,70634828,44,1 +71271700,27,395736790,95,1 +197362120,15,3330358736,41,1 +157087137,73,395736790,95,1 +169978927,66,2349179532,93,1 +169978927,66,2337727838,90,1 +169978927,66,2326722141,90,1 +169978927,66,16116663,92,1 +1698501971,9,3191869223,91,1 +16715045,10,591350440,91,1 +16715045,10,395736790,95,1 +70634828,50,70634828,52,1 +70634828,50,70634828,53,1 +70634828,50,70634828,54,1 +70634828,50,70634828,55,1 +70634828,51,214851100,44,1 +16715045,10,331545755,90,1 +70634828,51,214851100,51,1 +16715045,10,3191869223,91,1 +16715045,10,2349705416,94,1 +16715045,10,2336923756,91,1 +169978927,66,2349705416,94,1 +169978927,66,29223617,95,1 +70634828,50,3111603340,55,1 +169978927,66,591350440,91,1 +178452970,25,214851100,50,1 +70634828,50,214851100,55,1 +178452970,25,214851100,49,1 +178452970,25,214851100,48,1 +178452970,25,214851100,47,1 +178452970,25,214851100,44,1 +169978927,9,331545755,90,1 +169978927,66,532328014,99,1 +169978927,66,303926772,99,1 +169978927,66,517675473,92,1 +70634828,50,3111603340,44,1 +70634828,50,3111603340,45,1 +169978927,66,395736790,95,1 +169978927,66,340093034,95,1 +169978927,66,331545755,90,1 +169978927,66,3191869223,91,1 +1651310523,9,532328014,99,1 +1651310523,9,395736790,95,1 +1651310523,9,340093034,95,1 +16116663,10,517675473,92,1 +16116663,11,2349179532,93,1 +16116663,11,2337727838,90,1 +16116663,11,2327605629,94,1 +16116663,11,16116663,92,1 +16116663,10,532328014,99,1 +70634828,52,3111603340,44,1 +70634828,52,3111603340,45,1 +16116663,10,471121089,93,1 +16116663,11,303926772,99,1 +16116663,10,395736790,95,1 +16116663,10,340093034,95,1 +16116663,10,303926772,99,1 +16116663,10,29223617,95,1 +16116663,10,2326722141,90,1 +16116663,10,16210433,92,1 +1605495,9,2326722141,90,1 +16116663,11,2349705416,94,1 +16116663,11,331545755,90,1 +1651310523,9,3191869223,91,1 +70634828,51,3111603340,52,1 +1651310523,9,303926772,99,1 +1651310523,9,29223617,95,1 +16210433,92,70634828,51,1 +16210433,92,3111603340,51,1 +70634828,51,3111603340,44,1 +70634828,51,3111603340,45,1 +16210433,92,3111603340,50,1 +16210433,92,214851100,51,1 +70634828,52,214851100,44,1 +16116663,92,3111603340,51,1 +16116663,92,3111603340,50,1 +16116663,92,214851100,51,1 +16116663,9,2327605629,94,1 +16116663,11,728969035,93,1 +70634828,51,70634828,54,1 +16116663,11,517675473,92,1 +178452970,25,214851100,51,1 +178452970,25,214851100,52,1 +178452970,25,214851100,53,1 +193814549,33,70634828,47,1 +197362120,15,214851100,53,1 +197362120,15,214851100,49,1 +197362120,15,214851100,48,1 +197362120,15,214851100,47,1 +197362120,15,214851100,46,1 +197362120,15,214851100,44,1 +193814549,33,70634828,51,1 +193814549,33,532328014,99,1 +70634828,48,3111603340,45,1 +193814549,33,395736790,95,1 +193814549,33,340093034,95,1 +193814549,33,3330358736,38,1 +193814549,33,3111603340,51,1 +193814549,33,3111603340,47,1 +193814549,33,303926772,99,1 +193814549,33,29223617,95,1 +197362120,15,214851100,55,1 +70634828,48,3111603340,44,1 +193814549,33,214851100,51,1 +197362120,15,3111603340,44,1 +197362120,15,3330358736,40,1 +197362120,15,331545755,90,1 +70634828,48,214851100,44,1 +197362120,15,3111603340,55,1 +197362120,15,3111603340,53,1 +197362120,15,3111603340,49,1 +197362120,15,3111603340,45,1 +197362120,15,303926772,99,1 +197362120,15,2326722141,90,1 +197362120,15,29223617,95,1 +410030851,27,70634828,46,1 +197362120,15,25980377,42,1 +197362120,15,25980377,40,1 +197362120,15,25980377,39,1 +197362120,15,25980377,38,1 +197362120,15,2337727838,90,1 +193814549,33,25980377,38,1 +193814549,33,214851100,47,1 +70634828,50,214851100,44,1 +178452970,25,3111603340,44,1 +178452970,25,3111603340,55,1 +178452970,25,3111603340,54,1 +178452970,25,3111603340,52,1 +178452970,25,3111603340,51,1 +178452970,25,3111603340,50,1 +178452970,25,3111603340,49,1 +178452970,25,3111603340,45,1 +178452970,25,303926772,99,1 +178452970,25,3330358736,38,1 +178452970,25,29223617,95,1 +178452970,25,25980377,42,1 +178452970,25,25980377,41,1 +178452970,25,25980377,40,1 +178452970,25,25980377,38,1 +178452970,25,2337727838,90,1 +178452970,25,2326722141,90,1 +178452970,25,331545755,90,1 +70634828,49,3111603340,51,1 +70634828,49,214851100,44,1 +178452970,25,70634828,47,1 +189427260,9,331545755,90,1 +70634828,49,214851100,51,1 +178452970,25,70634828,55,1 +178452970,25,70634828,52,1 +178452970,25,70634828,51,1 +178452970,25,70634828,50,1 +178452970,25,70634828,48,1 +178452970,25,70634828,44,1 +178452970,25,3330358736,40,1 +178452970,25,532328014,99,1 +178452970,25,395736790,95,1 +178452970,25,340093034,95,1 +178452970,25,3330358736,42,1 +178452970,25,3330358736,41,1 +70634828,49,3111603340,44,1 +70634828,49,3111603340,45,1 +157087137,73,532328014,99,1 +157087137,73,340093034,95,1 +71271700,27,340093034,95,1 +157087137,73,303926772,99,1 +1208566436,62,70634828,55,1 +1208566436,62,70634828,53,1 +1208566436,62,70634828,52,1 +1208566436,62,532328014,99,1 +1208566436,62,517675473,92,1 +1208566436,62,471121089,93,1 +1208566436,62,395736790,95,1 +1208566436,62,340093034,95,1 +1208566436,62,331545755,90,1 +1208566436,62,3191869223,91,1 +1208566436,62,3111603340,55,1 +1208566436,62,3111603340,54,1 +1208566436,62,3111603340,52,1 +70634828,7,214851100,44,1 +70634828,7,214851100,50,1 +70634828,7,214851100,53,1 +70634828,7,2326722141,90,1 +1208566436,62,728969035,93,1 +1247902451,9,29223617,95,1 +1247902451,9,340093034,95,1 +1444449910,20,214851100,47,1 +1444449910,20,214851100,54,1 +1444449910,20,214851100,53,1 +1444449910,20,214851100,52,1 +1444449910,20,214851100,51,1 +1444449910,20,214851100,50,1 +1444449910,20,214851100,49,1 +1444449910,20,214851100,48,1 +1444449910,20,214851100,46,1 +1247902451,9,395736790,95,1 +1444449910,20,16210433,92,1 +13854344,9,591350440,91,1 +1253552935,9,728969035,93,1 +70634828,55,3111603340,44,1 +70634828,55,3111603340,45,1 +1247902451,9,591350440,91,1 +1247902451,9,532328014,99,1 +70634828,7,2337727838,90,1 +70634828,7,25980377,39,1 +70634828,7,25980377,40,1 +71271700,27,3111603340,45,1 +71271700,27,2326722141,90,1 +71271700,27,2337727838,90,1 +71271700,27,25980377,39,1 +71271700,27,25980377,40,1 +71271700,27,29223617,95,1 +71271700,27,303926772,99,1 +71271700,27,3111603340,44,1 +71271700,27,3111603340,47,1 +71271700,27,214851100,53,1 +71271700,27,3111603340,49,1 +71271700,27,3111603340,51,1 +71271700,27,3111603340,52,1 +71271700,27,3111603340,54,1 +71271700,27,331545755,90,1 +71271700,27,3330358736,39,1 +71271700,27,3330358736,43,1 +71271700,27,214851100,54,1 +71271700,27,214851100,52,1 +70634828,7,29223617,95,1 +70634828,7,3330358736,40,1 +70634828,7,303926772,99,1 +70634828,7,3111603340,44,1 +70634828,7,3111603340,45,1 +70634828,7,3111603340,50,1 +70634828,7,3111603340,53,1 +70634828,7,331545755,90,1 +70634828,7,3330358736,39,1 +70634828,7,340093034,95,1 +71271700,27,214851100,51,1 +70634828,7,395736790,95,1 +70634828,7,532328014,99,1 +71271700,27,214851100,44,1 +71271700,27,214851100,47,1 +71271700,27,214851100,48,1 +71271700,27,214851100,49,1 +71271700,27,214851100,50,1 +1444449910,20,214851100,55,1 +1444449910,20,2326722141,90,1 +70634828,55,214851100,44,1 +1452048,11,2327605629,94,1 +70634828,53,3111603340,44,1 +70634828,53,3111603340,45,1 +1452048,11,29223617,95,1 +70634828,53,3111603340,51,1 +1452048,11,2349705416,94,1 +1452048,11,2349179532,93,1 +1452048,11,2336923756,91,1 +1452048,11,2326722141,90,1 +1452048,11,3191869223,91,1 +1444449910,20,728969035,93,1 +1444449910,20,70634828,55,1 +1444449910,20,70634828,54,1 +1444449910,20,70634828,53,1 +1444449910,20,70634828,52,1 +1444449910,20,70634828,51,1 +1444449910,20,70634828,50,1 +1452048,11,303926772,99,1 +1452048,11,331545755,90,1 +1444449910,20,70634828,46,1 +1476953321,10,2337727838,90,1 +157087137,73,29223617,95,1 +1524794108,9,2326722141,90,1 +1476953321,10,517675473,92,1 +1476953321,10,340093034,95,1 +1476953321,10,303926772,99,1 +70634828,53,214851100,44,1 +1476953321,10,29223617,95,1 +1476953321,10,2327605629,94,1 +1452048,11,340093034,95,1 +1452048,30,395736790,95,1 +1452048,30,340093034,95,1 +1452048,30,303926772,99,1 +1452048,30,29223617,95,1 +1452048,11,532328014,99,1 +1452048,11,517675473,92,1 +1452048,11,395736790,95,1 +1444449910,20,70634828,49,1 +1444449910,20,70634828,45,1 +1444449910,20,2327605629,94,1 +1444449910,20,25980377,43,1 +1444449910,20,3111603340,49,1 +1444449910,20,3111603340,48,1 +1444449910,20,3111603340,47,1 +1444449910,20,3111603340,45,1 +1444449910,20,3111603340,44,1 +1444449910,20,303926772,99,1 +1444449910,20,29223617,95,1 +1444449910,20,25980377,42,1 +1444449910,20,3111603340,51,1 +1444449910,20,25980377,41,1 +1444449910,20,25980377,40,1 +1444449910,20,25980377,39,1 +1444449910,20,2349705416,94,1 +1444449910,20,2349179532,93,1 +1444449910,20,2337727838,90,1 +1444449910,20,2336923756,91,1 +1444449910,20,3111603340,50,1 +70634828,54,3111603340,45,1 +1444449910,20,70634828,44,1 +1444449910,20,3330358736,40,1 +1444449910,20,532328014,99,1 +70634828,54,214851100,44,1 +1444449910,20,517675473,92,1 +1444449910,20,471121089,93,1 +1444449910,20,395736790,95,1 +1444449910,20,340093034,95,1 +1444449910,20,3330358736,43,1 +1444449910,20,3330358736,39,1 +70634828,54,3111603340,44,1 +1444449910,20,3330358736,38,1 +1444449910,20,331545755,90,1 +1444449910,20,3191869223,91,1 +1444449910,20,3111603340,55,1 +1444449910,20,3111603340,54,1 +1444449910,20,3111603340,53,1 +1444449910,20,3111603340,52,1 +410030851,27,70634828,47,1 +410030851,27,3111603340,47,1 +410030851,27,70634828,45,1 +3118140206,68,214851100,51,1 +247297633,18,214851100,48,1 +247297633,18,214851100,47,1 +247297633,18,214851100,46,1 +247297633,18,214851100,45,1 +247297633,18,16210433,92,1 +247297633,18,16116663,92,1 +3111603340,50,70634828,44,1 +3111603340,50,70634828,45,1 +2448521375,25,70634828,55,1 +2448521375,25,70634828,54,1 +2448521375,25,70634828,51,1 +3111603340,50,70634828,53,1 +3111603340,50,70634828,55,1 +3111603340,51,214851100,44,1 +3111603340,51,214851100,45,1 +2448521375,25,70634828,50,1 +2448521375,25,70634828,48,1 +247297633,18,214851100,51,1 +247297633,18,214851100,52,1 +3111603340,50,3111603340,55,1 +247297633,18,25980377,41,1 +247297633,18,3111603340,48,1 +247297633,18,3111603340,47,1 +247297633,18,3111603340,46,1 +247297633,18,3111603340,45,1 +247297633,18,303926772,99,1 +247297633,18,29223617,95,1 +247297633,18,25980377,43,1 +247297633,18,25980377,39,1 +247297633,18,214851100,54,1 +247297633,18,25980377,38,1 +247297633,18,2349705416,94,1 +247297633,18,2349179532,93,1 +247297633,18,2337727838,90,1 +247297633,18,2336923756,91,1 +247297633,18,2326722141,90,1 +247297633,18,214851100,55,1 +2448521375,25,70634828,47,1 +2448521375,25,70634828,46,1 +3111603340,51,214851100,54,1 +2448521375,25,25980377,38,1 +2448521375,25,25980377,43,1 +3111603340,51,70634828,44,1 +3111603340,51,70634828,45,1 +2448521375,25,25980377,42,1 +2448521375,25,25980377,41,1 +2448521375,25,25980377,40,1 +3111603340,51,70634828,53,1 +3111603340,51,70634828,55,1 +2448521375,25,303926772,99,1 +3111603340,52,214851100,44,1 +3111603340,52,214851100,45,1 +2448521375,25,2337727838,90,1 +2448521375,25,2326722141,90,1 +2448521375,25,214851100,54,1 +2448521375,25,214851100,53,1 +2448521375,25,214851100,52,1 +2448521375,25,29223617,95,1 +2448521375,25,3111603340,44,1 +2448521375,25,70634828,45,1 +2448521375,25,3330358736,38,1 +2448521375,25,532328014,99,1 +2448521375,25,395736790,95,1 +2448521375,25,340093034,95,1 +2448521375,25,3330358736,43,1 +2448521375,25,3330358736,42,1 +2448521375,25,3330358736,41,1 +2448521375,25,3330358736,40,1 +2448521375,25,331545755,90,1 +2448521375,25,3111603340,46,1 +2448521375,25,3111603340,55,1 +2448521375,25,3111603340,53,1 +2448521375,25,3111603340,52,1 +2448521375,25,3111603340,51,1 +2448521375,25,3111603340,50,1 +2448521375,25,3111603340,48,1 +2448521375,25,3111603340,47,1 +3111603340,50,214851100,45,1 +3111603340,50,214851100,44,1 +247297633,18,3111603340,49,1 +25980377,38,3111603340,55,1 +25980377,39,3111603340,55,1 +25980377,39,3111603340,52,1 +25980377,39,214851100,55,1 +25980377,39,214851100,52,1 +25980377,38,70634828,52,1 +25980377,38,395736790,95,1 +25980377,38,340093034,95,1 +25980377,38,3111603340,52,1 +25980377,39,340093034,95,1 +25980377,38,29223617,95,1 +25980377,38,214851100,55,1 +25980377,38,214851100,52,1 +3111603340,48,70634828,44,1 +3111603340,48,70634828,45,1 +25685135,11,532328014,99,1 +25685135,11,517675473,92,1 +25980377,39,3330358736,40,1 +25980377,39,395736790,95,1 +25685135,11,395736790,95,1 +25980377,40,70634828,52,1 +3111603340,47,70634828,45,1 +25980377,43,3111603340,52,1 +25980377,43,29223617,95,1 +25980377,43,214851100,55,1 +25980377,43,214851100,52,1 +3111603340,48,214851100,44,1 +3111603340,48,214851100,45,1 +25980377,40,395736790,95,1 +25980377,39,70634828,52,1 +25980377,40,340093034,95,1 +25980377,40,3330358736,40,1 +25980377,40,3111603340,55,1 +25980377,40,3111603340,52,1 +25980377,40,29223617,95,1 +25980377,40,214851100,55,1 +25980377,40,214851100,52,1 +25685135,11,471121089,93,1 +25685135,11,340093034,95,1 +247297633,18,3111603340,51,1 +247297633,18,3330358736,38,1 +247297633,18,517675473,92,1 +247297633,18,471121089,93,1 +247297633,18,395736790,95,1 +247297633,18,340093034,95,1 +247297633,18,3330358736,43,1 +247297633,18,3330358736,42,1 +247297633,18,3330358736,41,1 +247297633,18,331545755,90,1 +247297633,18,70634828,44,1 +247297633,18,3191869223,91,1 +3111603340,49,70634828,44,1 +3111603340,49,70634828,45,1 +247297633,18,3111603340,55,1 +247297633,18,3111603340,54,1 +247297633,18,3111603340,53,1 +247297633,18,3111603340,52,1 +247297633,18,532328014,99,1 +247297633,18,70634828,45,1 +25685135,11,3191869223,91,1 +25685135,11,2336923756,91,1 +3111603340,49,214851100,44,1 +3111603340,49,214851100,45,1 +25685135,11,303926772,99,1 +25685135,11,29223617,95,1 +25685135,11,2349705416,94,1 +25685135,11,2349179532,93,1 +25685135,11,2337727838,90,1 +25685135,11,2326722141,90,1 +247297633,18,70634828,47,1 +247297633,18,728969035,93,1 +247297633,18,70634828,55,1 +247297633,18,70634828,54,1 +247297633,18,70634828,53,1 +247297633,18,70634828,52,1 +247297633,18,70634828,51,1 +247297633,18,70634828,48,1 +2448521375,25,214851100,51,1 +2448521375,25,214851100,50,1 +2448521375,25,214851100,49,1 +2352421906,17,591350440,91,1 +3111603340,55,214851100,45,1 +2353389310,15,2326722141,90,1 +2353389310,15,214851100,51,1 +2353389310,15,214851100,49,1 +2353389310,15,214851100,47,1 +2353389310,15,214851100,46,1 +2352421906,17,728969035,93,1 +2352421906,17,517675473,92,1 +2353389310,15,2337727838,90,1 +2352421906,17,471121089,93,1 +2352421906,17,395736790,95,1 +2352421906,17,340093034,95,1 +2352421906,17,303926772,99,1 +2352421906,17,29223617,95,1 +2352421906,17,2349705416,94,1 +2352421906,17,2349179532,93,1 +3111603340,55,214851100,44,1 +2353389310,15,25980377,38,1 +2352421906,17,2336923756,91,1 +2353389310,15,3111603340,48,1 +2353389310,15,70634828,44,1 +2353389310,15,532328014,99,1 +2353389310,15,395736790,95,1 +2353389310,15,340093034,95,1 +2353389310,15,3330358736,38,1 +2353389310,15,331545755,90,1 +2353389310,15,3111603340,51,1 +3111603340,54,340093034,95,1 +3111603340,54,70634828,53,1 +2353389310,15,3111603340,47,1 +2353389310,15,3111603340,45,1 +3111603340,54,70634828,44,1 +3111603340,54,70634828,45,1 +2353389310,15,3111603340,44,1 +2353389310,15,303926772,99,1 +2353389310,15,29223617,95,1 +2352421906,17,2337727838,90,1 +2352421906,17,2327605629,94,1 +2353389310,15,70634828,46,1 +3111603340,7,303926772,99,1 +3111603340,7,2326722141,90,1 +3111603340,7,2337727838,90,1 +3111603340,7,25980377,38,1 +3111603340,7,25980377,39,1 +3111603340,7,25980377,40,1 +3111603340,7,25980377,43,1 +3111603340,7,29223617,95,1 +3111603340,7,331545755,90,1 +3111603340,7,214851100,50,1 +3111603340,7,3330358736,39,1 +3111603340,7,3330358736,40,1 +3111603340,7,340093034,95,1 +3111603340,7,395736790,95,1 +3111603340,7,70634828,44,1 +3111603340,7,70634828,45,1 +3111603340,7,70634828,50,1 +3111603340,7,214851100,51,1 +3111603340,7,214851100,45,1 +2352421906,17,16210433,92,1 +2351592628,10,2326722141,90,1 +2352421906,17,16116663,92,1 +2351592628,10,728969035,93,1 +2351592628,10,395736790,95,1 +2351592628,10,340093034,95,1 +2351592628,10,29223617,95,1 +2351592628,10,2337727838,90,1 +2351592628,10,2327605629,94,1 +3111603340,55,70634828,44,1 +3111603340,7,214851100,44,1 +3111603340,55,70634828,45,1 +2351592628,10,16210433,92,1 +2350544061,9,395736790,95,1 +3111603340,55,70634828,52,1 +2350544061,9,2327605629,94,1 +2350443114,74,532328014,99,1 +2350443114,74,395736790,95,1 +2353389310,15,70634828,45,1 +2353389310,15,70634828,48,1 +2448521375,25,214851100,45,1 +3111603340,53,214851100,45,1 +2353549582,23,591350440,91,1 +2353549582,23,532328014,99,1 +3111603340,52,70634828,52,1 +2353549582,23,517675473,92,1 +2353549582,23,471121089,93,1 +2353549582,23,395736790,95,1 +3111603340,53,214851100,44,1 +2353549582,23,340093034,95,1 +3111603340,52,70634828,44,1 +2353549582,23,3330358736,43,1 +2353549582,23,3330358736,42,1 +2353549582,23,3330358736,40,1 +2353549582,23,3330358736,39,1 +2353549582,23,3330358736,38,1 +2353549582,23,331545755,90,1 +2353549582,23,3191869223,91,1 +3111603340,52,70634828,45,1 +2353549582,23,70634828,44,1 +2353549582,23,3111603340,54,1 +2353549582,23,728969035,93,1 +2424229017,9,591350440,91,1 +2424229017,26,532328014,99,1 +2424229017,26,395736790,95,1 +2424229017,26,340093034,95,1 +2424229017,26,303926772,99,1 +2424229017,26,29223617,95,1 +2382390052,9,517675473,92,1 +2353549582,23,70634828,55,1 +2353549582,23,70634828,45,1 +2353549582,23,70634828,54,1 +2353549582,23,70634828,53,1 +2353549582,23,70634828,52,1 +2353549582,23,70634828,50,1 +2353549582,23,70634828,49,1 +2353549582,23,70634828,48,1 +2353549582,23,70634828,46,1 +2353549582,23,3111603340,55,1 +2353549582,23,3111603340,53,1 +2353389310,15,70634828,51,1 +2353549582,23,214851100,54,1 +2353549582,23,2336923756,91,1 +3111603340,53,70634828,54,1 +2353549582,23,2327605629,94,1 +3111603340,54,214851100,44,1 +3111603340,54,214851100,45,1 +2353549582,23,2326722141,90,1 +2353549582,23,214851100,55,1 +2353549582,23,214851100,53,1 +2353549582,23,2349179532,93,1 +2353549582,23,214851100,52,1 +2353549582,23,214851100,50,1 +2353549582,23,214851100,47,1 +2353549582,23,214851100,46,1 +2353549582,23,214851100,45,1 +2353549582,23,16210433,92,1 +2353549582,23,16116663,92,1 +2353549582,23,2337727838,90,1 +2353549582,23,2349705416,94,1 +2353549582,23,3111603340,52,1 +2353549582,23,3111603340,44,1 +2353549582,23,3111603340,51,1 +2353549582,23,3111603340,50,1 +2353549582,23,3111603340,49,1 +2353549582,23,3111603340,48,1 +2353549582,23,3111603340,47,1 +2353549582,23,3111603340,46,1 +2353549582,23,3111603340,45,1 +2353549582,23,303926772,99,1 +3111603340,53,70634828,45,1 +2353549582,23,29223617,95,1 +2353549582,23,25980377,43,1 +2353549582,23,25980377,42,1 +2353549582,23,25980377,41,1 +2353549582,23,25980377,39,1 +2353549582,23,25980377,38,1 +3111603340,53,70634828,44,1 +3111603340,47,70634828,44,1 +25980377,43,3111603340,55,1 +25980377,43,340093034,95,1 +29954548,18,25980377,42,1 +29954548,18,2336923756,91,1 +29954548,18,2337727838,90,1 +29954548,18,2349179532,93,1 +29954548,18,2349705416,94,1 +29954548,18,25980377,38,1 +29954548,18,25980377,39,1 +29954548,18,25980377,41,1 +29954548,18,25980377,43,1 +29954548,18,2326722141,90,1 +29954548,18,29223617,95,1 +29954548,18,3111603340,45,1 +29954548,18,3111603340,47,1 +29954548,18,3111603340,48,1 +29954548,18,3111603340,49,1 +29954548,18,3111603340,52,1 +29954548,18,3111603340,53,1 +29954548,18,2327605629,94,1 +29954548,18,214851100,55,1 +29954548,18,3111603340,55,1 +2989649772,71,70634828,54,1 +2989649772,71,395736790,95,1 +2989649772,71,532328014,99,1 +2989649772,71,70634828,44,1 +2989649772,71,70634828,47,1 +2989649772,71,70634828,48,1 +2989649772,71,70634828,50,1 +2989649772,71,70634828,52,1 +2989649772,71,70634828,55,1 +29954548,18,214851100,54,1 +29954548,18,16116663,92,1 +29954548,18,16210433,92,1 +29954548,18,214851100,46,1 +29954548,18,214851100,47,1 +29954548,18,214851100,49,1 +29954548,18,214851100,52,1 +29954548,18,214851100,53,1 +29954548,18,3111603340,54,1 +29954548,18,3191869223,91,1 +2989649772,71,3330358736,43,1 +300186799,11,2337727838,90,1 +300186799,10,395736790,95,1 +300186799,10,471121089,93,1 +300186799,10,532328014,99,1 +300186799,10,728969035,93,1 +300186799,11,16116663,92,1 +300186799,11,2326722141,90,1 +300186799,11,2336923756,91,1 +300186799,11,2349705416,94,1 +300186799,10,29223617,95,1 +300186799,11,29223617,95,1 +300186799,11,303926772,99,1 +300186799,11,3191869223,91,1 +300186799,11,331545755,90,1 +300186799,11,340093034,95,1 +300186799,11,395736790,95,1 +300186799,11,517675473,92,1 +300186799,10,340093034,95,1 +300186799,10,2349179532,93,1 +29954548,18,331545755,90,1 +29954548,18,70634828,44,1 +29954548,18,3330358736,39,1 +29954548,18,3330358736,41,1 +29954548,18,3330358736,43,1 +29954548,18,340093034,95,1 +29954548,18,395736790,95,1 +29954548,18,517675473,92,1 +29954548,18,532328014,99,1 +29954548,18,70634828,45,1 +300186799,10,2337727838,90,1 +29954548,18,70634828,46,1 +29954548,18,70634828,48,1 +29954548,18,70634828,52,1 +29954548,18,70634828,53,1 +29954548,18,70634828,54,1 +300186799,10,2326722141,90,1 +300186799,10,2327605629,94,1 +2989649772,71,340093034,95,1 +2989649772,71,3330358736,42,1 +3010580773,9,3191869223,91,1 +29452962,9,2336923756,91,1 +286335813,72,214851100,54,1 +286335813,72,214851100,52,1 +286335813,72,214851100,50,1 +280281699,60,70634828,55,1 +280281699,60,70634828,54,1 +280281699,60,70634828,53,1 +2944593082,9,2336923756,91,1 +2962064709,9,591350440,91,1 +286335813,72,29223617,95,1 +2978926070,8,16210433,92,1 +2978926070,8,2326722141,90,1 +2978926070,8,2327605629,94,1 +2978926070,8,2336923756,91,1 +2978926070,8,2337727838,90,1 +2978926070,8,2349705416,94,1 +2978926070,8,29223617,95,1 +286335813,72,214851100,55,1 +286335813,72,303926772,99,1 +2978926070,8,3191869223,91,1 +286335813,72,70634828,52,1 +28667694,10,517675473,92,1 +28667694,10,395736790,95,1 +28667694,10,340093034,95,1 +28667694,10,29223617,95,1 +28667694,10,2327605629,94,1 +286335813,72,70634828,55,1 +286335813,72,70634828,53,1 +286335813,72,70634828,51,1 +286335813,72,3111603340,50,1 +286335813,72,70634828,50,1 +286335813,72,532328014,99,1 +286335813,72,395736790,95,1 +286335813,72,340093034,95,1 +286335813,72,3111603340,55,1 +286335813,72,3111603340,54,1 +286335813,72,3111603340,53,1 +2978926070,8,303926772,99,1 +2978926070,8,331545755,90,1 +2989649772,71,3330358736,41,1 +2989649772,71,3111603340,49,1 +2989649772,71,25980377,42,1 +2989649772,71,25980377,43,1 +2989649772,71,29223617,95,1 +2989649772,71,303926772,99,1 +2989649772,71,3111603340,45,1 +2989649772,71,3111603340,46,1 +2989649772,71,3111603340,47,1 +2989649772,71,3111603340,50,1 +2989649772,71,25980377,40,1 +2989649772,71,3111603340,52,1 +2989649772,71,3111603340,53,1 +2989649772,71,3111603340,54,1 +2989649772,71,3111603340,55,1 +2989649772,71,331545755,90,1 +2989649772,71,3330358736,38,1 +2989649772,71,3330358736,39,1 +2989649772,71,25980377,41,1 +2989649772,71,25980377,38,1 +2978926070,8,340093034,95,1 +2989649772,71,214851100,46,1 +2978926070,8,395736790,95,1 +2978926070,8,471121089,93,1 +2978926070,8,517675473,92,1 +2978926070,8,532328014,99,1 +2978926070,8,591350440,91,1 +2989649772,71,214851100,44,1 +2989649772,71,214851100,45,1 +2989649772,71,214851100,48,1 +2989649772,71,2337727838,90,1 +2989649772,71,214851100,50,1 +2989649772,71,214851100,51,1 +2989649772,71,214851100,52,1 +2989649772,71,214851100,53,1 +2989649772,71,214851100,54,1 +2989649772,71,214851100,55,1 +2989649772,71,2326722141,90,1 +300186799,11,591350440,91,1 +3011933107,9,728969035,93,1 +25980377,43,395736790,95,1 +2728939,63,3111603340,55,1 +2728939,71,214851100,44,1 +2728939,63,70634828,53,1 +2728939,63,70634828,51,1 +2728939,63,70634828,50,1 +2728939,63,532328014,99,1 +2728939,63,395736790,95,1 +2728939,63,340093034,95,1 +2728939,63,3111603340,53,1 +2728939,71,214851100,47,1 +2728939,63,3111603340,51,1 +2728939,63,3111603340,50,1 +2728939,63,303926772,99,1 +2728939,63,29223617,95,1 +2728939,63,214851100,55,1 +2728939,63,214851100,54,1 +2728939,63,214851100,51,1 +2728939,71,214851100,46,1 +2728939,71,214851100,48,1 +27042865,9,395736790,95,1 +2728939,71,2337727838,90,1 +2728939,71,303926772,99,1 +2728939,71,29223617,95,1 +2728939,71,25980377,43,1 +3111603340,45,70634828,44,1 +3111603340,45,70634828,45,1 +2728939,71,25980377,42,1 +2728939,71,25980377,40,1 +2728939,71,2326722141,90,1 +2728939,71,214851100,50,1 +2728939,71,214851100,55,1 +2728939,71,214851100,54,1 +3111603340,46,214851100,44,1 +3111603340,46,214851100,45,1 +2728939,71,214851100,53,1 +2728939,71,214851100,52,1 +2728939,71,214851100,51,1 +2728939,63,214851100,50,1 +26895145,9,591350440,91,1 +2728939,71,3111603340,46,1 +26487185,62,2327605629,94,1 +26487185,62,3111603340,51,1 +26487185,62,3111603340,50,1 +26487185,62,29223617,95,1 +26487185,62,2349705416,94,1 +26487185,62,2349179532,93,1 +26487185,62,2337727838,90,1 +26487185,62,2336923756,91,1 +1,10,29223617,95,1 +26487185,62,3111603340,53,1 +26487185,62,2326722141,90,1 +26487185,62,214851100,54,1 +26487185,62,214851100,53,1 +26487185,62,214851100,50,1 +26487185,62,16210433,92,1 +26487185,62,16116663,92,1 +25980377,43,70634828,52,1 +26487185,62,3111603340,52,1 +26487185,62,3111603340,55,1 +26895145,9,395736790,95,1 +26487185,62,70634828,54,1 +26895145,9,340093034,95,1 +3111603340,46,70634828,44,1 +3111603340,46,70634828,45,1 +26895145,9,303926772,99,1 +265133300,9,3191869223,91,1 +26487185,62,728969035,93,1 +26487185,62,70634828,55,1 +26487185,62,70634828,51,1 +26487185,62,340093034,95,1 +3111603340,47,214851100,44,1 +3111603340,47,214851100,45,1 +26487185,62,70634828,50,1 +26487185,62,591350440,91,1 +26487185,62,532328014,99,1 +26487185,62,517675473,92,1 +26487185,62,395736790,95,1 +2728939,71,3111603340,44,1 +2728939,71,3111603340,47,1 +3031766093,9,29223617,95,1 +280281699,60,3111603340,48,1 +280281699,60,331545755,90,1 +280281699,60,3111603340,55,1 +280281699,60,3111603340,54,1 +280281699,60,3111603340,53,1 +280281699,60,3111603340,52,1 +280281699,60,3111603340,51,1 +280281699,60,3111603340,50,1 +280281699,60,3111603340,47,1 +280281699,60,3330358736,39,1 +280281699,60,3111603340,44,1 +280281699,60,303926772,99,1 +280281699,60,29223617,95,1 +280281699,60,25980377,42,1 +280281699,60,25980377,41,1 +280281699,60,25980377,39,1 +280281699,60,2337727838,90,1 +280281699,60,3330358736,38,1 +3111603340,44,214851100,45,1 +280281699,60,214851100,55,1 +280281699,60,70634828,45,1 +3031766093,9,340093034,95,1 +3031766093,9,591350440,91,1 +280281699,60,70634828,51,1 +280281699,60,70634828,50,1 +280281699,60,70634828,48,1 +280281699,60,70634828,46,1 +303926772,99,29223617,95,1 +280281699,60,70634828,44,1 +3111603340,44,214851100,44,1 +280281699,60,532328014,99,1 +280281699,60,395736790,95,1 +280281699,60,340093034,95,1 +280281699,60,3330358736,43,1 +280281699,60,3330358736,42,1 +280281699,60,3330358736,41,1 +280281699,60,3330358736,40,1 +280281699,60,2326722141,90,1 +280281699,60,214851100,54,1 +2728939,71,3111603340,48,1 +2728939,71,3330358736,38,1 +2728939,71,532328014,99,1 +2728939,71,395736790,95,1 +2728939,71,340093034,95,1 +2728939,71,3330358736,43,1 +2728939,71,3330358736,42,1 +2728939,71,3330358736,41,1 +2728939,71,3330358736,40,1 +2728939,71,331545755,90,1 +2728939,71,70634828,46,1 +2728939,71,3111603340,55,1 +2728939,71,3111603340,54,1 +2728939,71,3111603340,53,1 +2728939,71,3111603340,52,1 +2728939,71,3111603340,51,1 +2728939,71,3111603340,50,1 +2728939,71,3111603340,49,1 +2728939,71,70634828,44,1 +2728939,71,70634828,49,1 +280281699,60,214851100,53,1 +3111603340,44,70634828,45,1 +280281699,60,214851100,52,1 +280281699,60,214851100,51,1 +280281699,60,214851100,50,1 +280281699,60,214851100,49,1 +280281699,60,214851100,48,1 +280281699,60,214851100,45,1 +3111603340,44,70634828,44,1 +2728939,71,70634828,55,1 +2728939,71,70634828,50,1 +2728939,71,70634828,54,1 +3111603340,44,70634828,52,1 +2728939,71,70634828,53,1 +2728939,71,70634828,52,1 +3111603340,45,214851100,44,1 +3111603340,45,214851100,45,1 +2728939,71,70634828,51,1 +3118140206,68,214851100,50,1 +3118140206,68,214851100,52,1 +410030851,27,532328014,99,1 +3118140206,68,214851100,53,1 +3358892171,64,25980377,41,1 +3358892171,64,25980377,42,1 +3358892171,64,25980377,43,1 +3358892171,64,29223617,95,1 +3358892171,64,303926772,99,1 +3358892171,64,3111603340,44,1 +3358892171,64,3111603340,45,1 +3358892171,64,3111603340,47,1 +3358892171,64,3111603340,48,1 +3358892171,64,3111603340,49,1 +3358892171,64,3111603340,50,1 +3358892171,64,3111603340,51,1 +3358892171,64,3111603340,52,1 +3358892171,64,3111603340,53,1 +3358892171,64,3111603340,54,1 +3358892171,64,3111603340,55,1 +3358892171,64,331545755,90,1 +3358892171,64,25980377,40,1 +3358892171,64,25980377,39,1 +3358892171,64,25980377,38,1 +3358892171,64,214851100,46,1 +2326655246,9,340093034,95,1 +2326520912,10,728969035,93,1 +3330358736,43,70634828,52,1 +2326520912,10,395736790,95,1 +2326520912,10,3191869223,91,1 +3330358736,43,70634828,55,1 +3358892171,64,214851100,44,1 +3358892171,64,214851100,49,1 +3358892171,64,2337727838,90,1 +3358892171,64,214851100,50,1 +3358892171,64,214851100,51,1 +3358892171,64,214851100,52,1 +3358892171,64,214851100,53,1 +3358892171,64,214851100,54,1 +3358892171,64,214851100,55,1 +3358892171,64,2326722141,90,1 +3358892171,64,3330358736,38,1 +3358892171,64,3330358736,39,1 +3358892171,64,3330358736,40,1 +2326520912,10,16210433,92,1 +3378606529,9,2337727838,90,1 +3378606529,9,395736790,95,1 +33822284,9,29223617,95,1 +2326520912,10,29223617,95,1 +33822284,9,532328014,99,1 +2326520912,10,2336923756,91,1 +2326520912,10,2326722141,90,1 +2323069589,9,395736790,95,1 +3362063909,10,395736790,95,1 +2323069589,9,340093034,95,1 +2323069589,9,331545755,90,1 +2323069589,9,303926772,99,1 +2323069589,9,29223617,95,1 +2316150629,10,591350440,91,1 +2316150629,10,340093034,95,1 +2316150629,10,331545755,90,1 +3362063909,10,591350440,91,1 +3362063909,10,340093034,95,1 +3358892171,64,3330358736,42,1 +3358892171,64,70634828,48,1 +3358892171,64,3330358736,43,1 +3358892171,64,340093034,95,1 +3358892171,64,395736790,95,1 +3358892171,64,532328014,99,1 +3358892171,64,70634828,44,1 +3358892171,64,70634828,46,1 +3358892171,64,70634828,47,1 +3358892171,64,70634828,49,1 +3362063909,10,2349179532,93,1 +3358892171,64,70634828,50,1 +3358892171,64,70634828,51,1 +3358892171,64,70634828,52,1 +3358892171,64,70634828,53,1 +3358892171,64,70634828,54,1 +3358892171,64,70634828,55,1 +3362063909,10,16210433,92,1 +2326655246,9,395736790,95,1 +3330358736,43,395736790,95,1 +3330358736,43,340093034,95,1 +2337952436,24,591350440,91,1 +2345982379,67,214851100,46,1 +2345982379,67,214851100,45,1 +2345982379,67,214851100,44,1 +2344471631,9,591350440,91,1 +23421122,9,340093034,95,1 +2341774429,9,2337727838,90,1 +2337952436,24,728969035,93,1 +2337952436,24,532328014,99,1 +2345982379,67,214851100,49,1 +2337952436,24,517675473,92,1 +2337952436,24,395736790,95,1 +2337952436,24,340093034,95,1 +2337952436,24,331545755,90,1 +2337952436,24,3191869223,91,1 +2337952436,24,303926772,99,1 +2337952436,24,29223617,95,1 +2345982379,67,214851100,47,1 +2345982379,67,214851100,50,1 +2337952436,24,2349179532,93,1 +2345982379,67,25980377,39,1 +3330358736,40,340093034,95,1 +3330358736,40,395736790,95,1 +2345982379,67,303926772,99,1 +2345982379,67,29223617,95,1 +2345982379,67,25980377,42,1 +3330358736,40,70634828,52,1 +2345982379,67,25980377,40,1 +3330358736,40,70634828,55,1 +2345982379,67,214851100,51,1 +2345982379,67,25980377,38,1 +2345982379,67,2337727838,90,1 +2345982379,67,2326722141,90,1 +2345982379,67,214851100,55,1 +2345982379,67,214851100,54,1 +2345982379,67,214851100,53,1 +2345982379,67,214851100,52,1 +2337952436,24,2349705416,94,1 +2337952436,24,2336923756,91,1 +3330358736,43,3111603340,55,1 +2327605629,94,3111603340,50,1 +2333843479,70,2336923756,91,1 +2333843479,70,2327605629,94,1 +2333843479,70,16210433,92,1 +2333843479,70,16116663,92,1 +2327605629,94,70634828,55,1 +2327605629,94,70634828,54,1 +2327605629,94,70634828,51,1 +2327605629,94,2337727838,90,1 +2333843479,70,29223617,95,1 +3330358736,43,214851100,52,1 +2327605629,94,2326722141,90,1 +3330358736,43,29223617,95,1 +2326903290,9,395736790,95,1 +3330358736,43,3111603340,52,1 +2326722141,90,2337727838,90,1 +2326655246,9,517675473,92,1 +2333843479,70,2349179532,93,1 +2333843479,70,303926772,99,1 +2337952436,24,2327605629,94,1 +2334430421,73,303926772,99,1 +2337952436,24,16210433,92,1 +2336923756,91,3111603340,51,1 +2336923756,91,3111603340,50,1 +2336923756,91,214851100,51,1 +2334430421,73,532328014,99,1 +2334430421,73,395736790,95,1 +2334430421,73,340093034,95,1 +2334430421,73,29223617,95,1 +2333843479,70,3191869223,91,1 +2333843479,70,728969035,93,1 +2333843479,70,591350440,91,1 +2333843479,70,532328014,99,1 +2333843479,70,517675473,92,1 +2333843479,70,471121089,93,1 +2333843479,70,395736790,95,1 +2333843479,70,340093034,95,1 +2316150629,10,3191869223,91,1 +2316150629,10,29223617,95,1 +2316150629,10,2336923756,91,1 +2314659369,20,2327605629,94,1 +2314659369,20,25980377,41,1 +2314659369,20,25980377,40,1 +2314659369,20,25980377,39,1 +2314659369,20,25980377,38,1 +2314659369,20,2349705416,94,1 +2314659369,20,2337727838,90,1 +2314659369,20,2336923756,91,1 +2314659369,20,2326722141,90,1 +2314659369,20,25980377,43,1 +2314659369,20,214851100,55,1 +2314659369,20,214851100,54,1 +2314659369,20,214851100,53,1 +2314659369,20,214851100,52,1 +2314659369,20,214851100,51,1 +2314659369,20,214851100,50,1 +2314659369,20,214851100,49,1 +2314659369,20,25980377,42,1 +2314659369,20,29223617,95,1 +2314659369,20,214851100,46,1 +38852110,10,29223617,95,1 +385766513,24,340093034,95,1 +385766513,24,395736790,95,1 +385766513,24,471121089,93,1 +385766513,24,517675473,92,1 +385766513,24,532328014,99,1 +385766513,24,728969035,93,1 +38852110,10,2326722141,90,1 +38852110,10,395736790,95,1 +2314659369,20,303926772,99,1 +38852110,10,591350440,91,1 +2314659369,20,3111603340,49,1 +2314659369,20,3111603340,48,1 +2314659369,20,3111603340,47,1 +2314659369,20,3111603340,46,1 +2314659369,20,3111603340,45,1 +2314659369,20,3111603340,44,1 +2314659369,20,214851100,47,1 +2314659369,20,16210433,92,1 +385766513,24,3191869223,91,1 +410030851,27,3111603340,54,1 +410030851,27,303926772,99,1 +410030851,27,3111603340,46,1 +28667694,10,728969035,93,1 +410030851,27,3111603340,49,1 +410030851,27,3111603340,50,1 +410030851,27,3111603340,51,1 +410030851,27,3111603340,53,1 +410030851,27,3111603340,55,1 +410030851,27,25980377,43,1 +410030851,27,331545755,90,1 +410030851,27,3330358736,38,1 +410030851,27,3330358736,39,1 +410030851,27,3330358736,40,1 +410030851,27,3330358736,43,1 +410030851,27,340093034,95,1 +410030851,27,395736790,95,1 +410030851,27,29223617,95,1 +410030851,27,25980377,39,1 +2314659369,20,16116663,92,1 +410030851,27,214851100,48,1 +2311838590,97,395736790,95,1 +2311838590,97,340093034,95,1 +2311838590,97,303926772,99,1 +395739442,9,2337727838,90,1 +410030851,27,214851100,44,1 +410030851,27,214851100,45,1 +410030851,27,214851100,47,1 +410030851,27,214851100,49,1 +410030851,27,25980377,38,1 +410030851,27,214851100,50,1 +410030851,27,214851100,51,1 +410030851,27,214851100,53,1 +410030851,27,214851100,54,1 +410030851,27,214851100,55,1 +410030851,27,2326722141,90,1 +410030851,27,2337727838,90,1 +385766513,24,331545755,90,1 +385766513,24,303926772,99,1 +2314659369,20,70634828,55,1 +35404067,9,2336923756,91,1 +340603317,9,517675473,92,1 +3420061649,9,2337727838,90,1 +3429928077,9,331545755,90,1 +3462551351,13,29223617,95,1 +3462551351,13,340093034,95,1 +3462551351,13,395736790,95,1 +3462551351,13,532328014,99,1 +35404067,9,340093034,95,1 +2314659369,20,3330358736,38,1 +35404067,9,532328014,99,1 +35404067,9,728969035,93,1 +367669349,31,16210433,92,1 +367669349,31,214851100,52,1 +367669349,31,214851100,55,1 +367669349,31,2326722141,90,1 +367669349,31,2336923756,91,1 +2314659369,20,331545755,90,1 +2314659369,20,3330358736,39,1 +367669349,31,2349179532,93,1 +2314659369,20,70634828,46,1 +2314659369,20,70634828,54,1 +2314659369,20,70634828,53,1 +2314659369,20,70634828,52,1 +2314659369,20,70634828,51,1 +2314659369,20,70634828,50,1 +2314659369,20,70634828,49,1 +2314659369,20,70634828,47,1 +2314659369,20,70634828,45,1 +2314659369,20,3330358736,40,1 +2314659369,20,70634828,44,1 +2314659369,20,517675473,92,1 +2314659369,20,471121089,93,1 +2314659369,20,395736790,95,1 +2314659369,20,340093034,95,1 +2314659369,20,3330358736,43,1 +2314659369,20,3330358736,42,1 +367669349,31,2337727838,90,1 +367669349,31,25980377,41,1 +385766513,24,29223617,95,1 +382080545,9,303926772,99,1 +2314659369,20,3111603340,53,1 +2314659369,20,3111603340,52,1 +2314659369,20,3111603340,51,1 +2314659369,20,3111603340,50,1 +382080545,9,16210433,92,1 +382080545,9,2327605629,94,1 +382080545,9,29223617,95,1 +382080545,9,395736790,95,1 +37873062,9,29223617,95,1 +382080545,9,517675473,92,1 +382080545,9,532328014,99,1 +385766513,24,16116663,92,1 +385766513,24,2326722141,90,1 +385766513,24,2327605629,94,1 +385766513,24,2337727838,90,1 +385766513,24,2349705416,94,1 +2314659369,20,3111603340,54,1 +37873062,9,2349179532,93,1 +367669349,31,25980377,42,1 +367669349,31,340093034,95,1 +367669349,31,29223617,95,1 +367669349,31,303926772,99,1 +367669349,31,3111603340,52,1 +367669349,31,3111603340,55,1 +367669349,31,3191869223,91,1 +367669349,31,331545755,90,1 +367669349,31,3330358736,42,1 +367669349,31,395736790,95,1 +2314659369,20,3111603340,55,1 +367669349,31,517675473,92,1 +367669349,31,532328014,99,1 +367669349,31,591350440,91,1 +367669349,31,70634828,52,1 +367669349,31,70634828,55,1 +367669349,31,728969035,93,1 +2314659369,20,3191869223,91,1 +3330358736,40,3111603340,55,1 +2345982379,67,3111603340,45,1 +2345982379,67,3111603340,48,1 +3195293647,28,2327605629,94,1 +2349345463,59,2349179532,93,1 +3195293647,28,16116663,92,1 +3195293647,28,16210433,92,1 +3195293647,28,214851100,51,1 +3195293647,28,214851100,52,1 +3195293647,28,214851100,54,1 +3195293647,28,2326722141,90,1 +3195293647,28,2336923756,91,1 +2349345463,59,29223617,95,1 +3195293647,28,2337727838,90,1 +3195293647,28,2349705416,94,1 +3195293647,28,29223617,95,1 +3195293647,28,303926772,99,1 +3195293647,28,3111603340,50,1 +3195293647,28,3111603340,52,1 +3195293647,28,3111603340,53,1 +2349345463,59,2349705416,94,1 +2349345463,59,303926772,99,1 +3195293647,28,3111603340,55,1 +2349588257,10,2337727838,90,1 +2349705416,94,3111603340,51,1 +2349705416,94,3111603340,50,1 +3191869223,91,3111603340,50,1 +3191869223,91,3111603340,51,1 +2349705416,94,214851100,51,1 +2349588257,10,395736790,95,1 +2349588257,10,2349179532,93,1 +2349588257,10,16116663,92,1 +2349345463,59,3191869223,91,1 +2349349655,9,340093034,95,1 +2349345463,59,728969035,93,1 +2349345463,59,591350440,91,1 +2349345463,59,532328014,99,1 +2349345463,59,471121089,93,1 +2349345463,59,395736790,95,1 +2349345463,59,340093034,95,1 +3195293647,28,3111603340,54,1 +3195293647,28,3191869223,91,1 +2349742676,33,3111603340,47,1 +3226664625,13,340093034,95,1 +3222664794,9,2327605629,94,1 +3222821993,9,331545755,90,1 +3226232,10,29223617,95,1 +3226232,10,517675473,92,1 +3226232,10,728969035,93,1 +3226664625,13,29223617,95,1 +3226664625,13,303926772,99,1 +3226664625,13,395736790,95,1 +3203980088,10,591350440,91,1 +3226664625,13,532328014,99,1 +3226664625,28,16210433,92,1 +3226664625,28,214851100,50,1 +3226664625,28,214851100,51,1 +3226664625,28,214851100,54,1 +3226664625,28,214851100,55,1 +3226664625,28,2326722141,90,1 +3220049148,9,2337727838,90,1 +3203980088,10,471121089,93,1 +3195293647,28,331545755,90,1 +3195293647,28,70634828,54,1 +3195293647,28,340093034,95,1 +3195293647,28,395736790,95,1 +3195293647,28,471121089,93,1 +3195293647,28,517675473,92,1 +3195293647,28,532328014,99,1 +3195293647,28,70634828,50,1 +3195293647,28,70634828,51,1 +3195293647,28,70634828,55,1 +3203980088,10,395736790,95,1 +3195293647,28,728969035,93,1 +3196033145,9,2326722141,90,1 +3203980088,10,2349705416,94,1 +3203980088,10,29223617,95,1 +3203980088,10,3191869223,91,1 +3203980088,10,331545755,90,1 +3203980088,10,340093034,95,1 +2349742676,33,214851100,47,1 +2349746655,10,340093034,95,1 +3226664625,28,2349179532,93,1 +3147958370,12,395736790,95,1 +3145389278,9,340093034,95,1 +3145389278,9,395736790,95,1 +3145389278,9,532328014,99,1 +3145389278,9,591350440,91,1 +3147958370,12,29223617,95,1 +3147958370,12,303926772,99,1 +3147958370,12,340093034,95,1 +3147958370,12,532328014,99,1 +3135349256,9,591350440,91,1 +314846874,11,16116663,92,1 +314846874,11,2326722141,90,1 +314846874,11,2336923756,91,1 +314846874,11,2337727838,90,1 +314846874,11,2349179532,93,1 +314846874,11,29223617,95,1 +314846874,11,3191869223,91,1 +3145389278,9,2326722141,90,1 +3135349256,9,340093034,95,1 +314846874,11,340093034,95,1 +3118140206,68,3111603340,54,1 +3118140206,68,214851100,54,1 +3118140206,68,214851100,55,1 +3118140206,68,2326722141,90,1 +3118140206,68,29223617,95,1 +3118140206,68,303926772,99,1 +3118140206,68,3111603340,50,1 +3118140206,68,3111603340,52,1 +3118140206,68,3111603340,55,1 +3135349256,9,29223617,95,1 +3118140206,68,331545755,90,1 +3118140206,68,340093034,95,1 +3118140206,68,395736790,95,1 +3118140206,68,532328014,99,1 +3118140206,68,70634828,50,1 +3118140206,68,70634828,52,1 +3118140206,68,70634828,55,1 +314846874,11,331545755,90,1 +314846874,11,395736790,95,1 +2350443114,74,29223617,95,1 +31732840,29,395736790,95,1 +31732840,29,29223617,95,1 +31732840,29,303926772,99,1 +31732840,29,3111603340,50,1 +31732840,29,3111603340,51,1 +31732840,29,3111603340,52,1 +31732840,29,3111603340,55,1 +31732840,29,340093034,95,1 +31732840,29,532328014,99,1 +31732840,29,214851100,52,1 +31732840,29,70634828,50,1 +31732840,29,70634828,51,1 +31732840,29,70634828,52,1 +31732840,29,70634828,54,1 +3191869223,91,214851100,51,1 +2350443114,74,340093034,95,1 +2350443114,74,303926772,99,1 +31732840,29,214851100,54,1 +31732840,29,214851100,51,1 +314846874,11,471121089,93,1 +3151377261,29,3111603340,51,1 +314846874,11,591350440,91,1 +3151377261,29,214851100,50,1 +3151377261,29,214851100,51,1 +3151377261,29,214851100,52,1 +3151377261,29,214851100,55,1 +3151377261,29,29223617,95,1 +3151377261,29,3111603340,50,1 +3151377261,29,3111603340,52,1 +3151377261,29,70634828,54,1 +3151377261,29,3111603340,53,1 +3151377261,29,3111603340,55,1 +3151377261,29,340093034,95,1 +3151377261,29,395736790,95,1 +3151377261,29,532328014,99,1 +3151377261,29,70634828,51,1 +3151377261,29,70634828,52,1 +3226664625,28,2337727838,90,1 +3226664625,28,29223617,95,1 +3330358736,40,3111603340,52,1 +3330358736,38,29223617,95,1 +2348894245,11,532328014,99,1 +2348894245,11,517675473,92,1 +2348894245,11,395736790,95,1 +2348894245,11,340093034,95,1 +3330358736,38,214851100,52,1 +2348894245,11,331545755,90,1 +2348894245,11,3191869223,91,1 +2348894245,11,303926772,99,1 +2348987001,9,728969035,93,1 +2348894245,11,29223617,95,1 +2348894245,11,2349705416,94,1 +3330358736,38,3111603340,52,1 +2348894245,11,2327605629,94,1 +2348894245,11,2326722141,90,1 +3330358736,38,3111603340,55,1 +3330358736,38,340093034,95,1 +2348894245,11,591350440,91,1 +2349179532,93,214851100,51,1 +2348894245,11,16210433,92,1 +2349345463,35,3330358736,39,1 +2349345463,59,16210433,92,1 +2349345463,35,70634828,53,1 +2349345463,35,70634828,49,1 +2349345463,35,532328014,99,1 +331545755,90,2337727838,90,1 +2349345463,35,395736790,95,1 +2349345463,35,340093034,95,1 +2349345463,35,3111603340,53,1 +2349179532,93,3111603340,51,1 +2349345463,35,3111603340,49,1 +2349345463,35,303926772,99,1 +2349345463,35,29223617,95,1 +2349345463,35,25980377,39,1 +2349345463,35,214851100,53,1 +2349345463,35,214851100,49,1 +2349179532,93,70634828,50,1 +3330358736,38,395736790,95,1 +2348894245,11,16116663,92,1 +2349345463,59,2336923756,91,1 +2345982379,67,3111603340,55,1 +2345982379,67,3330358736,43,1 +2345982379,67,3330358736,42,1 +2345982379,67,3330358736,41,1 +3330358736,39,70634828,52,1 +2345982379,67,3330358736,39,1 +2345982379,67,331545755,90,1 +3330358736,39,70634828,55,1 +2345982379,67,3111603340,54,1 +3330358736,39,340093034,95,1 +3330358736,40,214851100,52,1 +2345982379,67,3111603340,53,1 +2345982379,67,3111603340,52,1 +3330358736,40,29223617,95,1 +2345982379,67,3111603340,51,1 +2345982379,67,3111603340,50,1 +2345982379,67,3111603340,49,1 +3330358736,39,395736790,95,1 +3330358736,39,3330358736,40,1 +2347561020,9,3191869223,91,1 +2345982379,67,70634828,51,1 +3330358736,38,70634828,52,1 +2345982379,67,70634828,55,1 +2345982379,67,70634828,54,1 +3330358736,38,70634828,55,1 +2345982379,67,70634828,53,1 +2345982379,67,70634828,52,1 +3330358736,39,214851100,52,1 +2345982379,67,70634828,49,1 +3330358736,39,3111603340,55,1 +2345982379,67,70634828,48,1 +2345982379,67,70634828,45,1 +2345982379,67,532328014,99,1 +3330358736,39,3111603340,51,1 +3330358736,39,3111603340,52,1 +2345982379,67,395736790,95,1 +2345982379,67,340093034,95,1 +2349345463,59,2327605629,94,1 +2349345463,59,2337727838,90,1 +3226664625,28,303926772,99,1 +3268669333,67,2337727838,90,1 +3268669333,67,214851100,50,1 +3268669333,67,214851100,51,1 +3268669333,67,214851100,52,1 +3268669333,67,214851100,53,1 +3268669333,67,214851100,54,1 +3268669333,67,214851100,55,1 +3268669333,67,2326722141,90,1 +3268669333,67,25980377,39,1 +3268669333,67,214851100,47,1 +3268669333,67,25980377,41,1 +3268669333,67,25980377,43,1 +3268669333,67,29223617,95,1 +3268669333,67,303926772,99,1 +3268669333,67,3111603340,44,1 +3268669333,67,3111603340,45,1 +3268669333,67,3111603340,46,1 +3268669333,67,214851100,49,1 +3268669333,67,214851100,46,1 +3268669333,67,3111603340,49,1 +3226664625,28,340093034,95,1 +3226664625,28,3111603340,50,1 +3226664625,28,3111603340,51,1 +3226664625,28,3111603340,52,1 +3226664625,28,3111603340,53,1 +3226664625,28,3111603340,55,1 +3226664625,28,3191869223,91,1 +3226664625,28,331545755,90,1 +3226664625,28,395736790,95,1 +3226664625,28,728969035,93,1 +3226664625,28,517675473,92,1 +3226664625,28,532328014,99,1 +3226664625,28,591350440,91,1 +3226664625,28,70634828,50,1 +3226664625,28,70634828,51,1 +3226664625,28,70634828,53,1 +3226664625,28,70634828,55,1 +3268669333,67,3111603340,48,1 +3268669333,67,3111603340,50,1 +3312358902,79,532328014,99,1 +3312358902,59,3191869223,91,1 +3312358902,59,2326722141,90,1 +3312358902,59,2327605629,94,1 +3312358902,59,2336923756,91,1 +3312358902,59,2349179532,93,1 +3312358902,59,2349705416,94,1 +3312358902,59,29223617,95,1 +3312358902,59,303926772,99,1 +3312358902,59,331545755,90,1 +3268669333,67,70634828,54,1 +3312358902,59,340093034,95,1 +3312358902,59,395736790,95,1 +3312358902,59,471121089,93,1 +3312358902,59,532328014,99,1 +3312358902,59,591350440,91,1 +3312358902,59,728969035,93,1 +3312358902,79,303926772,99,1 +3268669333,67,70634828,55,1 +3268669333,67,70634828,53,1 +3268669333,67,3111603340,52,1 +3268669333,67,3330358736,42,1 +3268669333,67,3111603340,53,1 +3268669333,67,3111603340,54,1 +3268669333,67,3111603340,55,1 +3268669333,67,331545755,90,1 +3268669333,67,3330358736,39,1 +3268669333,67,3330358736,40,1 +3268669333,67,3330358736,41,1 +3268669333,67,3330358736,43,1 +3268669333,67,70634828,52,1 +3268669333,67,340093034,95,1 +3268669333,67,395736790,95,1 +3268669333,67,532328014,99,1 +3268669333,67,70634828,45,1 +3268669333,67,70634828,49,1 +3268669333,67,70634828,50,1 +3268669333,67,70634828,51,1 +9746245,97,532328014,99,1 diff --git a/GA_Agent_0925/count_firm.csv b/GA_Agent_0925/count_firm.csv new file mode 100644 index 0000000..6b2d132 --- /dev/null +++ b/GA_Agent_0925/count_firm.csv @@ -0,0 +1,204 @@ +id_firm,count +214851100,1722 +3111603340,1654 +70634828,1548 +25980377,643 +340093034,616 +395736790,607 +3330358736,567 +29223617,564 +303926772,494 +532328014,488 +331545755,339 +2337727838,333 +2326722141,332 +3191869223,272 +728969035,240 +2327605629,237 +591350440,232 +517675473,226 +2336923756,223 +16116663,205 +2349705416,196 +16210433,168 +471121089,168 +2349179532,167 +1452048,22 +515770253,15 +2349345463,10 +495782506,10 +300186799,10 +3312358902,10 +33822284,10 +2728939,10 +420984285,10 +6,10 +37873062,10 +3226664625,10 +1,10 +80158773,10 +78979697,10 +8,10 +169978927,9 +5849940,9 +3392803162,8 +11807506,8 +79938367,8 +5971532,8 +2424229017,8 +314846874,7 +14913649,6 +3462551351,5 +872394725,5 +35404067,5 +805940123,5 +3362063909,5 +3358892171,5 +862404568,5 +6333996,5 +9032550,5 +367669349,5 +3268669333,5 +950849442,5 +3226232,5 +3203980088,5 +3195293647,5 +31732840,5 +961017,5 +3151377261,5 +3147958370,5 +9620005,5 +10437056,5 +907433543,5 +382080545,5 +598808584,5 +676597455,5 +640700057,5 +644252759,5 +596368303,5 +59234665,5 +648145286,5 +668539285,5 +675729777,5 +578803019,5 +3118140206,5 +551856519,5 +543470507,5 +688155470,5 +385766513,5 +71271700,5 +733657390,5 +737770776,5 +507827038,5 +756272716,5 +758879940,5 +4607820,5 +441623911,5 +771821595,5 +410030851,5 +38852110,5 +562681526,5 +9746245,5 +26487185,5 +197362120,5 +2333843479,5 +25685135,5 +247297633,5 +2448521375,5 +2353549582,5 +2353389310,5 +2352421906,5 +205960791,5 +2351592628,5 +225958786,5 +2350443114,5 +2310406050,5 +2310534839,5 +2349742676,5 +2349588257,5 +2349349655,5 +2311838590,5 +2348894245,5 +2314659369,5 +2316150629,5 +2345982379,5 +2326520912,5 +2337952436,5 +203314437,5 +2334430421,5 +193814549,5 +157087137,5 +1160497810,5 +1171244159,5 +3010580773,5 +29954548,5 +2989649772,5 +2978926070,5 +1208566436,5 +178452970,5 +1476953321,5 +1444449910,5 +280281699,5 +16715045,5 +26895145,5 +286335813,5 +28667694,5 +742704658,4 +2326903290,4 +2326655246,4 +1698501971,4 +2323069589,4 +1605495,4 +696450846,4 +1247902451,4 +1253552935,4 +664591135,4 +863973253,4 +1651310523,4 +8114841,4 +3135349256,4 +3145389278,4 +2348987001,4 +3420061649,4 +3031766093,4 +3196033145,4 +265133300,4 +2350544061,4 +3378606529,4 +3011933107,4 +493002466,4 +290636928,4 +518871190,4 +2347561020,4 +3222664794,4 +2344471631,4 +3220049148,4 +28665295,3 +78576577,3 +2341774429,3 +808524154,3 +2944593082,3 +1524794108,3 +29452962,3 +3222821993,3 +13854344,3 +778745779,3 +340603317,3 +762501019,3 +27042865,3 +5979030,3 +189427260,3 +3429928077,3 +2382390052,3 +395739442,3 +2349746655,3 +466148111,3 +643954924,3 +618469306,3 +23421122,3 +2962064709,3 +308365582,2 +1717102128,1 +2959520478,1 +3449575456,1 +2346894985,1 diff --git a/GA_Agent_0925/count_firm_prod.csv b/GA_Agent_0925/count_firm_prod.csv new file mode 100644 index 0000000..78dd3da --- /dev/null +++ b/GA_Agent_0925/count_firm_prod.csv @@ -0,0 +1,266 @@ +id_firm,id_product,count +340093034,95,616 +395736790,95,607 +29223617,95,564 +303926772,99,494 +532328014,99,488 +331545755,90,339 +2337727838,90,333 +2326722141,90,332 +3191869223,91,272 +728969035,93,240 +2327605629,94,237 +591350440,91,232 +517675473,92,226 +2336923756,91,223 +2349705416,94,196 +3111603340,53,193 +3111603340,55,192 +214851100,54,189 +214851100,55,188 +214851100,52,188 +16116663,92,187 +214851100,53,187 +214851100,50,187 +214851100,51,184 +3111603340,54,182 +3111603340,52,181 +70634828,53,179 +3111603340,51,178 +70634828,52,178 +70634828,54,178 +3111603340,50,178 +70634828,51,177 +70634828,55,171 +16210433,92,168 +471121089,93,168 +70634828,50,168 +2349179532,93,167 +25980377,39,115 +25980377,38,112 +25980377,43,108 +214851100,49,106 +25980377,41,105 +214851100,47,104 +3330358736,43,104 +25980377,40,102 +3330358736,38,102 +214851100,46,102 +25980377,42,101 +3111603340,47,100 +214851100,44,98 +3111603340,45,96 +3330358736,39,93 +214851100,48,93 +3330358736,41,92 +3330358736,40,92 +214851100,45,91 +70634828,47,90 +3111603340,46,89 +3111603340,49,89 +70634828,45,88 +3111603340,44,86 +3111603340,48,85 +3330358736,42,84 +70634828,46,81 +70634828,44,80 +70634828,48,77 +70634828,49,76 +515770253,9,15 +1452048,9,12 +6,10,10 +495782506,19,10 +420984285,16,10 +37873062,9,10 +33822284,9,10 +8,37,10 +80158773,69,10 +1,10,10 +16116663,11,10 +3392803162,9,8 +79938367,9,8 +5971532,9,8 +14913649,9,6 +950849442,9,5 +16116663,10,5 +382080545,9,5 +385766513,24,5 +38852110,10,5 +410030851,27,5 +169978927,66,5 +441623911,79,5 +4607820,9,5 +16715045,10,5 +507827038,10,5 +9620005,9,5 +543470507,8,5 +551856519,33,5 +562681526,25,5 +578803019,10,5 +367669349,31,5 +35404067,9,5 +3462551351,13,5 +214851100,7,5 +3226664625,28,5 +3268669333,67,5 +3312358902,59,5 +3312358902,79,5 +2310406050,60,5 +225958786,11,5 +205960791,63,5 +178452970,25,5 +203314437,22,5 +197362120,15,5 +193814549,33,5 +3358892171,64,5 +3362063909,10,5 +2349588257,10,5 +5849940,26,5 +59234665,65,5 +907433543,10,5 +78979697,74,5 +733657390,10,5 +737770776,34,5 +756272716,32,5 +758879940,65,5 +771821595,31,5 +78979697,61,5 +961017,23,5 +70634828,7,5 +1171244159,32,5 +1160497810,12,5 +805940123,72,5 +862404568,11,5 +872394725,70,5 +9032550,34,5 +71271700,27,5 +1208566436,62,5 +596368303,12,5 +668539285,17,5 +3226232,10,5 +598808584,15,5 +6333996,66,5 +640700057,9,5 +644252759,61,5 +648145286,35,5 +675729777,10,5 +1444449910,20,5 +676597455,68,5 +688155470,30,5 +157087137,73,5 +1476953321,10,5 +1452048,30,5 +1452048,11,5 +3226664625,13,5 +2349349655,9,5 +9746245,97,5 +2424229017,26,5 +2334430421,73,5 +2337952436,24,5 +2352421906,17,5 +2353389310,15,5 +2353549582,23,5 +3010580773,9,5 +300186799,11,5 +300186799,10,5 +29954548,18,5 +2989649772,71,5 +2978926070,8,5 +2448521375,25,5 +10437056,9,5 +28667694,10,5 +247297633,18,5 +286335813,72,5 +280281699,60,5 +2728939,71,5 +2728939,63,5 +25685135,11,5 +26895145,9,5 +26487185,62,5 +2349345463,35,5 +2345982379,67,5 +2333843479,70,5 +2348894245,11,5 +2326520912,10,5 +2350443114,74,5 +3118140206,68,5 +3147958370,12,5 +314846874,11,5 +2349742676,33,5 +3111603340,7,5 +2349345463,59,5 +2311838590,97,5 +3151377261,29,5 +31732840,29,5 +2310534839,64,5 +3195293647,28,5 +2316150629,10,5 +3203980088,10,5 +2314659369,20,5 +2351592628,10,5 +11807506,9,4 +664591135,9,4 +11807506,36,4 +3145389278,9,4 +2347561020,9,4 +742704658,9,4 +3196033145,9,4 +265133300,9,4 +696450846,9,4 +3220049148,9,4 +1247902451,9,4 +1253552935,9,4 +2344471631,9,4 +290636928,9,4 +1605495,9,4 +3031766093,9,4 +3011933107,9,4 +169978927,9,4 +863973253,9,4 +2326903290,9,4 +2323069589,9,4 +1698501971,9,4 +493002466,9,4 +8114841,9,4 +1651310523,9,4 +2350544061,9,4 +2348987001,9,4 +518871190,9,4 +3420061649,9,4 +5849940,36,4 +3378606529,9,4 +3222664794,9,4 +2326655246,9,4 +3135349256,9,4 +778745779,9,3 +762501019,9,3 +2349746655,10,3 +808524154,9,3 +2382390052,9,3 +2424229017,9,3 +78576577,9,3 +3222821993,9,3 +16116663,9,3 +2962064709,9,3 +189427260,9,3 +340603317,9,3 +3429928077,9,3 +395739442,9,3 +466148111,9,3 +2341774429,9,3 +13854344,9,3 +23421122,9,3 +5979030,9,3 +618469306,9,3 +29452962,9,3 +2944593082,9,3 +643954924,9,3 +28665295,9,3 +1524794108,9,3 +27042865,9,3 +308365582,9,2 +314846874,9,2 +2959520478,9,1 +1717102128,9,1 +3449575456,9,1 +2346894985,9,1 diff --git a/GA_Agent_0925/count_prod.csv b/GA_Agent_0925/count_prod.csv new file mode 100644 index 0000000..686c47f --- /dev/null +++ b/GA_Agent_0925/count_prod.csv @@ -0,0 +1,73 @@ +id_product,count +95,1787 +90,1004 +99,982 +91,727 +92,581 +93,575 +53,559 +55,551 +54,549 +52,547 +51,539 +50,533 +94,433 +9,338 +47,294 +45,275 +46,272 +49,271 +44,264 +48,255 +38,214 +43,212 +39,208 +41,197 +40,194 +42,185 +10,113 +11,45 +15,15 +12,15 +33,15 +7,15 +25,15 +69,10 +74,10 +68,10 +70,10 +71,10 +72,10 +73,10 +19,10 +79,10 +8,10 +66,10 +18,10 +17,10 +16,10 +13,10 +97,10 +67,10 +32,10 +65,10 +64,10 +34,10 +35,10 +37,10 +31,10 +30,10 +29,10 +28,10 +27,10 +26,10 +24,10 +23,10 +20,10 +59,10 +60,10 +62,10 +63,10 +61,10 +36,8 +22,5 diff --git a/GA_Agent_0925/creating.py b/GA_Agent_0925/creating.py new file mode 100644 index 0000000..e47aa65 --- /dev/null +++ b/GA_Agent_0925/creating.py @@ -0,0 +1,56 @@ +import random +from deap import creator, base, tools +from evaluate_func import fitness + +def creating(): + if "FitnessMax" not in creator.__dict__: + creator.create("FitnessMax", base.Fitness, weights=(1.0,)) + if "Individual" not in creator.__dict__: + creator.create("Individual", list, fitness=creator.FitnessMax) + + toolbox = base.Toolbox() + + # 基因注册 + toolbox.register("n_max_trial", random.randint, 1, 40) + toolbox.register("prf_size", random.uniform, 0.0, 1.0) + toolbox.register("prf_conn", random.uniform, 0.0, 1.0) + toolbox.register("cap_limit_prob_type", random.randint, 0, 1) + toolbox.register("cap_limit_level", random.randint, 5, 50) + toolbox.register("diff_new_conn", random.uniform, 0.0, 1.0) + toolbox.register("netw_prf_n", random.randint, 1, 20) + toolbox.register("s_r", random.uniform, 0.05, 0.5) + toolbox.register("S_r", random.uniform, 0.5, 1.0) + toolbox.register("x", random.uniform, 0.0, 1) + toolbox.register("k", random.uniform, 0.05, 2.0) + toolbox.register("production_increase_ratio", random.uniform, 0.5, 2.0) + + # 个体与种群注册 + toolbox.register( + "individual", + tools.initCycle, + creator.Individual, + ( + toolbox.n_max_trial, + toolbox.prf_size, + toolbox.prf_conn, + toolbox.cap_limit_prob_type, + toolbox.cap_limit_level, + toolbox.diff_new_conn, + toolbox.netw_prf_n, + toolbox.s_r, + toolbox.S_r, + toolbox.x, + toolbox.k, + toolbox.production_increase_ratio + ), + n=1 + ) + toolbox.register("population", tools.initRepeat, list, toolbox.individual) + + # 遗传算子 + toolbox.register("evaluate", fitness) + toolbox.register("mate", tools.cxTwoPoint) + toolbox.register("mutate", tools.mutShuffleIndexes, indpb=0.1) + toolbox.register("select", tools.selTournament, tournsize=3) + + return toolbox diff --git a/GA_Agent_0925/evaluate_func.py b/GA_Agent_0925/evaluate_func.py new file mode 100644 index 0000000..524ef30 --- /dev/null +++ b/GA_Agent_0925/evaluate_func.py @@ -0,0 +1,327 @@ +import os +import time +import traceback +import uuid +from datetime import datetime +from multiprocessing import Process + +import pandas as pd +from sqlalchemy import text +from sqlalchemy.orm import sessionmaker + +from my_model import MyModel +from orm import connection, engine + + +# 🎯 适应度函数(核心目标函数) +def fitness(individual, controller_db_obj): + """ + 遗传算法适应度函数:用于评估个体(模型参数)的优劣。 + + 参数: + individual : list + 个体参数列表: + [n_max_trial, prf_size, prf_conn, cap_limit_prob_type, cap_limit_level, + diff_new_conn, netw_prf_n, s_r, S_r, x, k, production_increase_ratio] + + 目标: + 使 ABM 模型生成的“脆弱产业集合”与目标产业集合尽可能相似。 + - fitness = -error + - error = 模拟结果集合与目标集合的差异度(越小越好) + """ + # 生成唯一 GA ID + ga_id = str(uuid.uuid4())[:8] # 简短随机ID + individual.ga_id = ga_id # 将 ga_id 绑定到个体上 + # ========== 1️⃣ 生成参数字典 ========== + dct_exp = { + 'n_max_trial': individual[0], + 'prf_size': individual[1], + 'prf_conn': individual[2], + 'cap_limit_prob_type': individual[3], + 'cap_limit_level': individual[4], + 'diff_new_conn': individual[5], + 'netw_prf_n': individual[6], + 's_r': individual[7], + 'S_r': individual[8], + 'x': individual[9], + 'k': individual[10], + 'production_increase_ratio': individual[11] + } + # 将 GA 染色体的值映射为实际 ABM 参数 + if dct_exp['cap_limit_prob_type'] == 0: + dct_exp['cap_limit_prob_type'] = "uniform" # 类型A(例如 uniform) + else: + dct_exp['cap_limit_prob_type'] = "normal" # 类型B(例如 normal) + + # 打印 GA ID 和参数 + print(f"\n 正在执行 GA 个体 {ga_id},参数如下:") + # for key, value in dct_exp.items(): + # print(f" {key}: {value}") + # ========== 2️⃣ 调用 ABM 模型 ========== + # 并行进程数目 + job=6 + + do_process(controller_db_obj,ga_id,dct_exp,job) + # ========== 3️⃣ 获取数据库连接并提取结果 ========== + simulated_vulnerable_industries = get_vulnerable100_code(connection,ga_id) + print(simulated_vulnerable_industries) + # ========== 4️⃣ 获取目标产业集合 ========== + target_vulnerable_industries = get_target_vulnerable_industries() + + # ========== 5️⃣ 计算误差(集合差异度) ========== + set_sim = set(simulated_vulnerable_industries) + set_target = set(target_vulnerable_industries) + error = len(set_sim.symmetric_difference(set_target)) + + simulated_set = set(simulated_vulnerable_industries) + target_set = set(target_vulnerable_industries) + + matching = simulated_set & target_set # 交集 + extra = simulated_set - target_set # 模拟多出的产业 + missing = target_set - simulated_set # 未覆盖产业 + + print(f"符合目标的产业数量: {len(matching)}") + print(matching) + print(f"模拟多出的产业数量: {len(extra)}") + print(f"未覆盖目标产业数量: {len(missing)}") + + # ========== 6️⃣ 返回适应度(越大越好) ========== + return (float(-error),) +# 目标产业集合 +def get_target_vulnerable_industries(): + """ + 获取行业列表中所有产业链编号的集合(整数形式)。 + 说明: + - 输入的 industry_list 是一个字典列表,每个字典包含: + {"product": 产品名称, "category": 产品类别, "chain_id": 产业链编号} + - 某些 chain_id 可能是复合编号,例如 "11 / 513742",需要拆分成单独整数。 + - 输出是一个 set,包含所有 chain_id(去重、整数形式)。 + + 参数: + industry_list : list of dict + 行业字典列表,每个字典必须包含 "chain_id" 键。 + + 返回: + set + 所有产业链编号的整数集合。 + """ + industry_list = [ + # ① 半导体设备类 + {"product": "离子注入机", "category": "离子注入设备", "chain_id": 34538}, + {"product": "刻蚀设备 / 湿法刻蚀设备", "category": "刻蚀机", "chain_id": 34529}, + {"product": "沉积设备", "category": "薄膜生长设备(CVD/PVD)", "chain_id": 34539}, + {"product": "CVD", "category": "薄膜生长设备", "chain_id": 34539}, + {"product": "PVD", "category": "薄膜生长设备", "chain_id": 34539}, + {"product": "CMP", "category": "化学机械抛光设备", "chain_id": 34530}, + {"product": "光刻机", "category": "光刻机", "chain_id": 34533}, + {"product": "涂胶显影机", "category": "涂胶显影设备", "chain_id": 34535}, + {"product": "晶圆清洗设备", "category": "晶圆清洗机", "chain_id": 34531}, + {"product": "测试设备", "category": "测试机", "chain_id": 34554}, + {"product": "外延生长设备", "category": "薄膜生长设备", "chain_id": 34539}, + + # ② 半导体材料与化学品类 + {"product": "三氯乙烯", "category": "清洗溶剂 → 通用湿电子化学品", "chain_id": 32438}, + {"product": "丙酮", "category": "清洗溶剂 → 通用湿电子化学品", "chain_id": 32438}, + {"product": "异丙醇", "category": "清洗溶剂 → 通用湿电子化学品", "chain_id": 32438}, + {"product": "其他醇类", "category": "清洗溶剂 → 通用湿电子化学品", "chain_id": 32438}, + {"product": "光刻胶", "category": "光刻胶及配套试剂", "chain_id": 32445}, + {"product": "显影液", "category": "显影液", "chain_id": 46504}, + {"product": "蚀刻液", "category": "蚀刻液", "chain_id": 56341}, + {"product": "光阻去除剂", "category": "光阻去除剂", "chain_id": 32442}, + + # ③ 晶圆制造类 + {"product": "晶圆", "category": "单晶硅片 / 多晶硅片", "chain_id": 32338}, + {"product": "硅衬底", "category": "硅衬底", "chain_id": 36914}, + {"product": "外延片", "category": "硅外延片 / GaN外延片 / SiC外延片等", "chain_id": 32338}, + + # ④ 封装与测试类 + {"product": "封装", "category": "IC封装", "chain_id": 10}, + {"product": "测试", "category": "芯片测试 / 晶圆测试", "chain_id": 513742}, + {"product": "测试", "category": "芯片测试 / 晶圆测试", "chain_id": 11}, + + # ⑤ 芯片与设计EDA类 + {"product": "芯片(通用)", "category": "集成电路制造", "chain_id": 317589}, + {"product": "DRAM", "category": "存储芯片 → 集成电路制造", "chain_id": 317589}, + {"product": "GPU", "category": "图形芯片 → 集成电路制造", "chain_id": 317589}, + {"product": "处理器(CPU/SoC)", "category": "芯片设计", "chain_id": 9}, + {"product": "高频芯片", "category": "芯片设计", "chain_id": 9}, + {"product": "光子芯片(含激光)", "category": "芯片设计 / 功率半导体器件", "chain_id": 9}, + {"product": "光子芯片(含激光)", "category": "芯片设计 / 功率半导体器件", "chain_id": 2717}, + {"product": "先进节点制造设备", "category": "集成电路制造", "chain_id": 317589}, + {"product": "EDA及IP服务", "category": "设计辅助", "chain_id": 2515}, + {"product": "MPW服务", "category": "多项目晶圆流片", "chain_id": 2514}, + {"product": "芯片设计验证", "category": "设计验证", "chain_id": 513738}, + {"product": "过程工艺检测", "category": "制程检测", "chain_id": 513740} + ] + # 手工转换 + industry_list_index = vulnerable100_index = \ + ['100', '58', '61', '9', '7', '98', '57', '8', '65', '68', '66', '38', + '90', '21', '96', '71', '27', '74', '99', '95', '11', '77', '59', '56', '97'] + # # 提取所有 chain_id,并去重 + # chain_ids = set() + # for item in industry_list: + # # 如果 chain_id 是字符串包含多个编号,用逗号或斜杠拆分 + # if isinstance(item["chain_id"], str): + # for cid in item["chain_id"].replace("/", ",").split(","): + # chain_ids.add(cid.strip()) + # else: + # chain_ids.add(str(item["chain_id"])) + + return industry_list_index +# 从数据库计算脆弱产业集合 +def get_vulnerable100_code(engine, ga_id): + """ + 计算最脆弱前100产品的 Code 列表(去重),只针对指定 ga_id。 + """ + # 生成新的 session + Session = sessionmaker(bind=engine) + session = Session() + # 1️⃣ 读取 SQL 文件 + base_dir = os.path.dirname(os.path.abspath(__file__)) + sql_file = os.path.join(base_dir, "..", "GA_Agent_0925", "SQL_analysis_risk_ga.sql") + sql_file = os.path.abspath(sql_file) + with open(sql_file, "r", encoding="utf-8") as f: + str_sql = f.read() # 注意这里是 str_sql,不是 tr_sql + print(f"[信息] 正在查询 ga_id={ga_id} 的脆弱产品数据...") + + # 2️⃣ 执行 SQL 查询 + # 2️⃣ 新建 connection + # 2️⃣ 新建 session,每次查询都用新的 session/connection + Session = sessionmaker(bind=engine) + with Session() as session: + # 使用 session.connection() 来保证 SQLAlchemy 执行原生 SQL + result = pd.read_sql( + sql=text(str_sql), + con=session.connection(), + params={"ga_id": ga_id} # 绑定参数 + ) + + # =============================== + # 2️⃣ 统计每个企业-产品组合出现次数 + # =============================== + count_firm_prod = result.value_counts(subset=['id_firm', 'id_product']) + count_firm_prod.name = 'count' + count_firm_prod = count_firm_prod.to_frame().reset_index() + count_firm_prod.to_csv('count_firm_prod.csv', index=False, encoding='utf-8-sig') + + # =============================== + # 3️⃣ 统计每个企业出现的总次数 + # =============================== + count_firm = count_firm_prod.groupby('id_firm')['count'].sum().reset_index() + count_firm.sort_values('count', ascending=False, inplace=True) + count_firm.to_csv('count_firm.csv', index=False, encoding='utf-8-sig') + + # =============================== + # 4️⃣ 统计每个产品出现的总次数 + # =============================== + count_prod = count_firm_prod.groupby('id_product')['count'].sum().reset_index() + count_prod.sort_values('count', ascending=False, inplace=True) + count_prod.to_csv('count_prod.csv', index=False, encoding='utf-8-sig') + + # =============================== + # 5️⃣ 选出最脆弱的前100个产品(出现次数最多) + # =============================== + vulnerable100_product = count_prod.nlargest(100, "count")["id_product"].tolist() + print(f"[信息] ga_id={ga_id} 查询完成,共找到 {len(vulnerable100_product)} 个脆弱产品") + + # =============================== + # # 6️⃣ 过滤 result,只保留前100脆弱产品 + # # =============================== + # result_vulnerable100 = result[result['id_product'].isin(vulnerable100_product)].copy() + # print(f"[信息] 筛选后剩余记录数: {len(result_vulnerable100)}") + # # =============================== + # # 7️⃣ 构造 DCP(Disruption Causing Probability) + # # =============================== + # result_dcp_list = [] + # for sid, group in result_vulnerable100.groupby('s_id'): + # ts_start = max(group['ts']) + # while ts_start >= 1: + # ts_end = ts_start - 1 + # while ts_end >= 0: + # up = group.loc[group['ts'] == ts_end, ['id_firm', 'id_product']] + # down = group.loc[group['ts'] == ts_start, ['id_firm', 'id_product']] + # for _, up_row in up.iterrows(): + # for _, down_row in down.iterrows(): + # result_dcp_list.append([sid] + up_row.tolist() + down_row.tolist()) + # ts_end -= 1 + # ts_start -= 1 + # + # # 转换为 DataFrame + # result_dcp = pd.DataFrame(result_dcp_list, columns=[ + # 's_id', 'up_id_firm', 'up_id_product', 'down_id_firm', 'down_id_product' + # ]) + # + # # =============================== + # # 8️⃣ 统计 DCP 出现次数 + # # =============================== + # count_dcp = result_dcp.value_counts( + # subset=['up_id_firm', 'up_id_product', 'down_id_firm', 'down_id_product'] + # ).reset_index(name='count') + # + # # 保存文件 + # count_dcp.to_csv('count_dcp.csv', index=False, encoding='utf-8-sig') + + # 输出结果 + return vulnerable100_product + +def run_ABM_samples(controller_db_obj,ga_id,dct_exp, str_code="GA",): + """ + 从数据库获取一个随机样本,锁定它,然后运行模型仿真。 + 参数: + controller_db: ControllerDB 对象 + str_code: 可选标识,用于打印 + 返回: + True 如果没有可用样本 + False 如果成功运行 + """ + # 1. 从数据库获取一个随机样本 + sample_random = controller_db_obj.fetch_a_sample(s_id=None) # s_id 可根据需要传入 + if sample_random is None: + #print(ga_id+"无样本") + return True # 没有样本,返回 True 表示结束 + # 2. 锁定该样本 + controller_db_obj.lock_the_sample(sample_random) + # print(f"Pid {pid} ({str_code}) is running sample {sample_random.id} at {datetime.now()}") + # print(f"Pid {pid} ({str_code})") + # print(f"[信息] 当前正在运行的 GA 个体 ID: {ga_id}, 时间: {datetime.now()}") + # 3. 获取 experiment 的所有列及其值 + dct_exp_new = {column: getattr(sample_random.experiment, column) + for column in sample_random.experiment.__table__.c.keys()} + # 删除不需要的主键 id + dct_exp_new.pop('id', None) + dct_exp_new = {'sample': sample_random, + 'seed': sample_random.seed, + **dct_exp_new} + try: + dct_sample_para = { + **dct_exp_new, + **dct_exp} + # 切换工作目录到项目根目录或 ABM 需要的目录 + project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) + os.chdir(project_root) + + abm_model = MyModel(dct_sample_para) + abm_model.step() + abm_model.end(ga_id) + except Exception as e: + print(f"[❌ ABM运行错误] 错误:{e} ") + traceback.print_exc() + +def do_computation(controller_db_obj,ga_id,dct_exp,): + """每个进程执行 ABM 样本运行""" + pid = os.getpid() + print(f"[启动] 进程 {pid} 已启动 (PID={pid})") + while 1: + # time.sleep(random.uniform(0, 1)) + is_all_done = run_ABM_samples(controller_db_obj,ga_id,dct_exp,) + if is_all_done: + break + +def do_process(controller_db,ga_id,dct_exp,job): + process_list = [] + for i in range(job): + p = Process(target=do_computation, args=(controller_db,ga_id,dct_exp,)) + p.start() + process_list.append(p) + for i in process_list: + i.join() diff --git a/GA_Agent_0925/g_bom.pkl b/GA_Agent_0925/g_bom.pkl new file mode 100644 index 0000000..330d847 Binary files /dev/null and b/GA_Agent_0925/g_bom.pkl differ diff --git a/GA_Agent_0925/ga.py b/GA_Agent_0925/ga.py deleted file mode 100644 index 24e961e..0000000 --- a/GA_Agent_0925/ga.py +++ /dev/null @@ -1,116 +0,0 @@ -import numpy as np # 引入NumPy库,用于高效的数值计算 -from pySOT.utils import round_vars # 引入用于四舍五入的函数 -from typing import TYPE_CHECKING # 引入类型检查工具 -if TYPE_CHECKING: - from policy import Policy - -class GeneticAlgorithm: # 定义一个遗传算法类 - def __init__(self, the_policy: 'Policy'): # 初始化方法,接收一个 Policy 对象 - self.n_variables = the_policy.dim # 从 policy 中获取问题的维度 - self.lower_boundary = the_policy.lb # 获取决策变量的下界 - self.upper_boundary = the_policy.ub # 获取决策变量的上界 - self.integer_variables = the_policy.int_var # 获取整数变量的索引 - - self.sigma = 0.2 # 设置变异操作的标准差 - self.p_mutation = 1.0 / the_policy.dim # 设置变异概率 - self.tournament_size = 5 # 设置锦标赛选择的大小 - self.p_cross = 0.9 # 设置交叉概率 - - pop_size = the_policy.arr_init_doe_points.shape[0] # 获取种群大小 - self.lst_value = the_policy.lst_y_init_doe_points # 初始化每个个体的适应度值 - - # 如果种群大小是奇数,生成一个随机个体来确保种群大小是偶数 - if pop_size % 2 == 1: - arr_random = np.random.rand(1, self.n_variables) # 生成一个随机的个体 - arr_one_random = self.lower_boundary + arr_random * (self.upper_boundary - self.lower_boundary) # 将随机个体约束在边界内 - self.lst_value.append(the_policy.eval(arr_one_random[0, :], is_init_points=True)) # 评估该个体的适应度 - self.population = np.vstack((the_policy.arr_init_doe_points, arr_one_random)) # 将该个体加入到种群中 - else: - self.population = np.copy(the_policy.arr_init_doe_points) # 直接使用初始种群 - - self.n_individuals = self.population.shape[0] # 获取种群中个体的数量 - assert self.n_individuals == pop_size or self.n_individuals == pop_size + 1, 'Wrong pop size' # 确保种群大小正确 - - # 如果有整数变量,需要进行位置四舍五入 - if len(self.integer_variables) > 0: - self.population[:, self.integer_variables] = np.round(self.population[:, self.integer_variables]) # 对整数变量四舍五入 - for i in self.integer_variables: - ind = np.where(self.population[:, i] < self.lower_boundary[i]) # 如果超出了下界,修正为下界 - self.population[ind, i] += 1 - ind = np.where(self.population[:, i] > self.upper_boundary[i]) # 如果超出了上界,修正为上界 - self.population[ind, i] -= 1 - - self.ind, self.best_individual, self.best_value = None, None, None # 初始化最优个体和最优值 - self.pop_next, self.lst_pop_next_is_evaluated = None, None # 初始化下一代种群和评估标志 - self.update_info() # 更新最优解信息 - - def update_info(self): - # 更新最优个体和适应度值 - self.ind = np.argmin(self.lst_value) # 获取适应度最小的个体(假设目标是最小化) - self.best_individual = np.copy(self.population[self.ind, :]) # 复制最优个体 - self.best_value = self.lst_value[self.ind] # 记录最优值 - - self.pop_next, self.lst_pop_next_is_evaluated = self._generate_next_population() # 生成下一代种群 - self.lst_value = [] # 清空当前种群的适应度值 - - def _generate_next_population(self): - # 生成下一代种群 - competitors = np.random.randint(0, self.n_individuals, (self.n_individuals, self.tournament_size)) # 随机选择竞赛个体 - ind = np.argmin(np.array(self.lst_value)[competitors], axis=1) # 选择每轮锦标赛中的最优个体 - winner_indices = np.zeros(self.n_individuals, dtype=int) # 用于存储胜利个体的索引 - for i in range(self.tournament_size): # 进行锦标赛选择 - winner_indices[np.where(ind == i)] = competitors[np.where(ind == i), i] - - # 按照锦标赛结果将种群分为父母 - parent1 = self.population[winner_indices[0: self.n_individuals // 2], :] - parent2 = self.population[winner_indices[self.n_individuals // 2: self.n_individuals], :] - - # 交叉操作:对父母个体进行交叉 - cross = np.where(np.random.rand(self.n_individuals // 2) < self.p_cross)[0] # 按照概率决定哪些个体进行交叉 - nn = len(cross) # 计算交叉个体的数量 - alpha = np.random.rand(nn, 1) # 生成交叉系数 - - # 创建新的染色体 - parent1_new = np.multiply(alpha, parent1[cross, :]) + np.multiply(1 - alpha, parent2[cross, :]) - parent2_new = np.multiply(alpha, parent2[cross, :]) + np.multiply(1 - alpha, parent1[cross, :]) - parent1[cross, :] = parent1_new - parent2[cross, :] = parent2_new - arr_new_population = np.concatenate((parent1, parent2)) # 合并两个父代得到新的种群 - - # 变异操作 - scale_factors = self.sigma * (self.upper_boundary - self.lower_boundary) # 计算变异的尺度 - perturbation = np.random.randn(self.n_individuals, self.n_variables) # 生成扰动 - perturbation = np.multiply(perturbation, scale_factors) # 根据尺度调整扰动 - perturbation = np.multiply( - perturbation, (np.random.rand(self.n_individuals, self.n_variables) < self.p_mutation) - ) # 根据变异概率决定哪些位置进行扰动 - - arr_new_population += perturbation # 将扰动添加到新种群 - arr_new_population = np.maximum(np.reshape(self.lower_boundary, (1, self.n_variables)), arr_new_population) # 确保不超过下界 - arr_new_population = np.minimum(np.reshape(self.upper_boundary, (1, self.n_variables)), arr_new_population) # 确保不超过上界 - - # 如果有整数变量,进行四舍五入 - if len(self.integer_variables) > 0: - arr_new_population = round_vars(arr_new_population, self.integer_variables, self.lower_boundary, - self.upper_boundary) - - assert arr_new_population.shape[0] == self.n_individuals, 'Wrong arr_new_population shape' # 确保新种群的大小正确 - return arr_new_population, [False] * self.n_individuals # 返回新种群和评估标志(都设为未评估) - - def select_next_point(self): - # 选择下一个要评估的个体 - for idx_ind, is_evaluated in enumerate(self.lst_pop_next_is_evaluated): - if not is_evaluated: # 如果该个体没有被评估 - return self.pop_next[idx_ind, :] # 返回该个体 - - def receive_sim_value(self, the_value): - # 接收评估结果,并更新适应度信息 - self.lst_value.append(the_value) # 将评估值添加到适应度列表 - idx_ind = 0 - for idx_ind, is_evaluated in enumerate(self.lst_pop_next_is_evaluated): - if not is_evaluated: # 找到未评估的个体 - self.lst_pop_next_is_evaluated[idx_ind] = True # 标记该个体为已评估 - break - if idx_ind == len(self.lst_pop_next_is_evaluated) - 1: - assert idx_ind == self.n_individuals - 1, 'Wrong index' # 确保所有个体都已评估 - self.update_info() # 更新最优解信息 diff --git a/GA_Agent_0925/main.py b/GA_Agent_0925/main.py new file mode 100644 index 0000000..70d6d3a --- /dev/null +++ b/GA_Agent_0925/main.py @@ -0,0 +1,109 @@ +import json +import random +from deap import tools +from sqlalchemy.orm import close_all_sessions +from tqdm import tqdm +import matplotlib.pyplot as plt + +from GA_Agent_0925.creating import creating +from GA_Agent_0925.orm import connection +from controller_db import ControllerDB +from evaluate_func import fitness, get_vulnerable100_code, get_target_vulnerable_industries + + +# ============================== +# 遗传算法主函数(单进程) +# ============================== +def main(): + # 1️⃣ 加载配置 + with open("config.json", "r", encoding="utf-8") as f: + cfg = json.load(f) + + random.seed(cfg["seed"]) + + print("\n📘 参数配置:") + for k, v in cfg.items(): + print(f" {k}: {v}") + print("-" * 40) + + # 2️⃣ 初始化 ControllerDB(数据库连接) + controller_db_obj = ControllerDB("without_exp", reset_flag=0) + controller_db_obj.reset_db(force_drop=True) + # 准备样本表 + controller_db_obj.prepare_list_sample() + # 2️⃣ 初始化工具箱 + toolbox = creating() + pop = toolbox.population(n=cfg["pop_size"]) + hof = tools.HallOfFame(1) + stats = tools.Statistics(lambda ind: ind.fitness.values) + stats.register("avg", lambda fits: sum(f[0] for f in fits) / len(fits)) + stats.register("max", lambda fits: max(f[0] for f in fits)) + + best_list = [] + avg_list = [] + + # ============================== + # 主进化循环 + # ============================== + for gen in tqdm(range(cfg["n_gen"]), desc="进化中", ncols=90): + # 计算未评估个体适应度 + invalid_ind = [ind for ind in pop if not ind.fitness.valid] + for ind in invalid_ind: + controller_db_obj.reset_sample_db() + controller_db_obj.prepare_list_sample() + ind.fitness.values = fitness(ind, controller_db_obj=controller_db_obj) + + # 选择、交叉、变异 + offspring = toolbox.select(pop, len(pop)) + offspring = list(map(toolbox.clone, offspring)) + + for child1, child2 in zip(offspring[::2], offspring[1::2]): + if random.random() < cfg["cx_prob"]: + toolbox.mate(child1, child2) + del child1.fitness.values, child2.fitness.values + + for mutant in offspring: + if random.random() < cfg["mut_prob"]: + toolbox.mutate(mutant) + del mutant.fitness.values + + # 更新适应度 + invalid_ind = [ind for ind in offspring if not ind.fitness.valid] + for ind in invalid_ind: + controller_db_obj.reset_sample_db() + controller_db_obj.prepare_list_sample() + ind.fitness.values = fitness(ind, controller_db_obj=controller_db_obj) + + pop[:] = offspring + hof.update(pop) + + record = stats.compile(pop) + best_list.append(record["max"]) + avg_list.append(record["avg"]) + + # ============================== + # 输出最优结果 + # ============================== + print("\n✅ 进化完成!") + print(f"🏆 最优个体: {hof[0]}") + print(f"🌟 最优适应度: {hof[0].fitness.values[0]:.4f}") + + # 绘制收敛曲线 + plt.figure(figsize=(8, 5)) + plt.plot(best_list, label="Best Fitness", linewidth=2) + plt.plot(avg_list, label="Average Fitness", linestyle="--") + plt.title("Genetic Algorithm Convergence") + plt.xlabel("Generation") + plt.ylabel("Fitness") + plt.legend() + plt.grid(True, alpha=0.3) + plt.tight_layout() + plt.show() + + # ============================== + # 最优个体产业匹配 + # ============================== + print("\n📊 计算最优个体产业匹配情况...") + +if __name__ == "__main__": + main() diff --git a/GA_Agent_0925/orm.py b/GA_Agent_0925/orm.py new file mode 100644 index 0000000..e197311 --- /dev/null +++ b/GA_Agent_0925/orm.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +from datetime import datetime +from sqlalchemy import create_engine, inspect, Inspector, Float +from sqlalchemy.ext.declarative import declarative_base +from sqlalchemy import (Column, Integer, DECIMAL, String, ForeignKey, + BigInteger, DateTime, PickleType, Boolean, Text) +from sqlalchemy.sql import func +from sqlalchemy.orm import relationship, Session +from sqlalchemy.pool import NullPool +import yaml + +with open('../conf_db.yaml') as file: + dct_conf_db_all = yaml.full_load(file) + is_local_db = dct_conf_db_all['is_local_db'] + if is_local_db: + dct_conf_db = dct_conf_db_all['local'] + else: + dct_conf_db = dct_conf_db_all['remote'] + +with open('../conf_db_prefix.yaml') as file: + dct_conf_db_prefix = yaml.full_load(file) + db_name_prefix = dct_conf_db_prefix['db_name_prefix'] + +str_login = 'mysql://{}:{}@{}:{}/{}'.format(dct_conf_db['user_name'], + dct_conf_db['password'], + dct_conf_db['address'], + dct_conf_db['port'], + dct_conf_db['db_name']) +# print('DB is {}:{}/{}'.format(dct_conf_db['address'], dct_conf_db['port'], dct_conf_db['db_name'])) + +# must be null pool to avoid connection lost error +engine = create_engine(str_login, poolclass=NullPool) +connection = engine.connect() +ins: Inspector = inspect(engine) + +Base = declarative_base() + +db_session = Session(bind=engine) + + +class Experiment(Base): + __tablename__ = f"{db_name_prefix}_experiment" + id = Column(Integer, primary_key=True, autoincrement=True) + + idx_scenario = Column(Integer, nullable=False) + idx_init_removal = Column(Integer, nullable=False) + + # fixed parameters + n_sample = Column(Integer, nullable=False) + n_iter = Column(Integer, nullable=False) + + # variables + dct_lst_init_disrupt_firm_prod = Column(PickleType, nullable=False) + g_bom = Column(Text(4294000000), nullable=False) + + n_max_trial = Column(Integer, nullable=False) + prf_size = Column(Boolean, nullable=False) + prf_conn = Column(Boolean, nullable=False) + cap_limit_prob_type = Column(String(16), nullable=False) + cap_limit_level = Column(DECIMAL(8, 4), nullable=False) + diff_new_conn = Column(DECIMAL(8, 4), nullable=False) + remove_t = Column(Integer, nullable=False) + netw_prf_n = Column(Integer, nullable=False) + + sample = relationship( + 'Sample', back_populates='experiment', lazy='dynamic') + + def __repr__(self): + return f'' + + +class Sample(Base): + __tablename__ = f"{db_name_prefix}_sample" + id = Column(Integer, primary_key=True, autoincrement=True) + e_id = Column(Integer, ForeignKey('{}.id'.format( + f"{db_name_prefix}_experiment")), nullable=False) + + idx_sample = Column(Integer, nullable=False) + seed = Column(BigInteger, nullable=False) + # -1, waiting; 0, running; 1, done + is_done_flag = Column(Integer, nullable=False) + computer_name = Column(String(64), nullable=True) + ts_done = Column(DateTime(timezone=True), onupdate=func.now()) + stop_t = Column(Integer, nullable=True) + + g_firm = Column(Text(4294000000), nullable=True) + + experiment = relationship( + 'Experiment', back_populates='sample', uselist=False) + result = relationship('Result', back_populates='sample', lazy='dynamic') + + def __repr__(self): + return f'' + + +class Result(Base): + __tablename__ = f"{db_name_prefix}_result" + id = Column(Integer, primary_key=True, autoincrement=True) + s_id = Column(Integer, ForeignKey('{}.id'.format( + f"{db_name_prefix}_sample")), nullable=False) + + id_firm = Column(String(20), nullable=False) + id_product = Column(String(20), nullable=False) + ts = Column(Integer, nullable=False) + status = Column(String(5), nullable=False) + + sample = relationship('Sample', back_populates='result', uselist=False) + + # 💥 新增 GA 调用 ID,用于标记属于哪一次遗传算法运行 + ga_id = Column(String(50), nullable=True) + + def __repr__(self): + return f'' + +if __name__ == '__main__': + Base.metadata.drop_all() + Base.metadata.create_all() diff --git a/GA_Agent_0925/risk_firm_count.py b/GA_Agent_0925/risk_firm_count.py deleted file mode 100644 index 5069c70..0000000 --- a/GA_Agent_0925/risk_firm_count.py +++ /dev/null @@ -1,23 +0,0 @@ -from sqlalchemy import text - -import pandas as pd - -from orm import connection - -# SQL query -with open("../SQL_analysis_risk.sql", "r", encoding="utf-8") as f: - str_sql = text(f.read()) - -result = pd.read_sql(sql=str_sql, con=connection) -# Count firm product -count_firm_prod = result.value_counts(subset=['id_firm', 'id_product']) -count_firm_prod.name = 'count' -count_firm_prod = count_firm_prod.to_frame().reset_index() - -# Count product -count_prod = count_firm_prod.groupby('id_product')['count'].sum() -count_prod = count_prod.to_frame().reset_index() -count_prod.sort_values('count', inplace=True, ascending=False) -print(count_prod) -top100 = count_prod.head(100)['id_product'].tolist() - diff --git a/GA_Agent_0925/多功能.py b/GA_Agent_0925/多功能.py new file mode 100644 index 0000000..64f6e35 --- /dev/null +++ b/GA_Agent_0925/多功能.py @@ -0,0 +1,211 @@ +import json +import os +import pickle +import networkx as nx +from sqlalchemy import text + +import pandas as pd + +from orm import connection + +# """ +# 计算最脆弱前100产品的 Code 列表(去重)。 +# """ +# bom_file = r"../input_data/input_product_data/BomNodes.csv" +# mapping_df = pd.read_csv(bom_file) +# +# with open("../SQL_analysis_risk.sql", "r", encoding="utf-8") as f: +# str_sql = text(f.read()) +# +# result = pd.read_sql(sql=str_sql, con=connection) +# +# count_firm_prod = result.value_counts(subset=['id_firm', 'id_product']) +# count_firm_prod.name = 'count' +# count_firm_prod = count_firm_prod.to_frame().reset_index() +# +# count_prod = ( +# count_firm_prod.groupby("id_product")["count"].sum().reset_index() +# ) +# +# vulnerable100_index = count_prod.nsmallest(100, "count")["id_product"].tolist() +# # 确保 index_to_code 的 key 都是 int +# index_to_code = {int(k): v for k, v in zip(mapping_df["Index"], mapping_df["Code"])} +# +# # vulnerable100_index 也转成 int +# vulnerable100_index_int = [int(i) for i in vulnerable100_index] +# +# # 获取 code +# vulnerable100_code = [index_to_code[i] for i in vulnerable100_index_int if i in index_to_code] +# +# print(vulnerable100_code) + + +# 读取 SQL +ga_id="c943f2c6" +with open("SQL_analysis_risk_ga.sql", "r", encoding="utf-8") as f: + str_sql = text(f.read()) + print(str_sql[:300]) +print(f"[信息] 正在查询 ga_id={ga_id} 的脆弱产品数据...") + +# 执行 SQL 查询,并绑定参数 ga_id +result = pd.read_sql( + sql=str_sql, + con=connection, + params={"ga_id": ga_id} # 绑定参数 +) +# =============================== +# 2️⃣ 统计每个企业-产品组合出现次数 +# =============================== +count_firm_prod = result.value_counts(subset=['id_firm', 'id_product']) +count_firm_prod.name = 'count' +count_firm_prod = count_firm_prod.to_frame().reset_index() +count_firm_prod.to_csv('count_firm_prod.csv', index=False, encoding='utf-8-sig') + +# =============================== +# 3️⃣ 统计每个企业出现的总次数 +# =============================== +count_firm = count_firm_prod.groupby('id_firm')['count'].sum().reset_index() +count_firm.sort_values('count', ascending=False, inplace=True) +count_firm.to_csv('count_firm.csv', index=False, encoding='utf-8-sig') + +# =============================== +# 4️⃣ 统计每个产品出现的总次数 +# =============================== +count_prod = count_firm_prod.groupby('id_product')['count'].sum().reset_index() +count_prod.sort_values('count', ascending=False, inplace=True) +count_prod.to_csv('count_prod.csv', index=False, encoding='utf-8-sig') + +# =============================== +# 5️⃣ 选出最脆弱的前100个产品(出现次数最多) +# =============================== +vulnerable100_product = count_prod.nlargest(100, "count")["id_product"].tolist() +print(f"[信息] ga_id={ga_id} 查询完成,共找到 {len(vulnerable100_product)} 个脆弱产品") + +# =============================== +# 6️⃣ 过滤 result,只保留前100脆弱产品 +# =============================== +result_vulnerable100 = result[result['id_product'].isin(vulnerable100_product)].copy() +print(f"[信息] 筛选后剩余记录数: {len(result_vulnerable100)}") + +# =============================== +# 7️⃣ 构造 DCP(Disruption Causing Probability) +# =============================== +result_dcp_list = [] +for sid, group in result_vulnerable100.groupby('s_id'): + ts_start = max(group['ts']) + while ts_start >= 1: + ts_end = ts_start - 1 + while ts_end >= 0: + up = group.loc[group['ts'] == ts_end, ['id_firm', 'id_product']] + down = group.loc[group['ts'] == ts_start, ['id_firm', 'id_product']] + for _, up_row in up.iterrows(): + for _, down_row in down.iterrows(): + result_dcp_list.append([sid] + up_row.tolist() + down_row.tolist()) + ts_end -= 1 + ts_start -= 1 + +# 转换为 DataFrame +result_dcp = pd.DataFrame(result_dcp_list, columns=[ + 's_id', 'up_id_firm', 'up_id_product', 'down_id_firm', 'down_id_product' +]) + +# =============================== +# 8️⃣ 统计 DCP 出现次数 +# =============================== +count_dcp = result_dcp.value_counts( + subset=['up_id_firm', 'up_id_product', 'down_id_firm', 'down_id_product'] +).reset_index(name='count') + +# 保存文件 +count_dcp.to_csv('count_dcp.csv', index=False, encoding='utf-8-sig') + +# 输出结果 +print(count_dcp) +print(type(vulnerable100_product[0])) + +# industry_list = [ +# # ① 半导体设备类 +# {"product": "离子注入机", "category": "离子注入设备", "chain_id": 34538}, +# {"product": "刻蚀设备 / 湿法刻蚀设备", "category": "刻蚀机", "chain_id": 34529}, +# {"product": "沉积设备", "category": "薄膜生长设备(CVD/PVD)", "chain_id": 34539}, +# {"product": "CVD", "category": "薄膜生长设备", "chain_id": 34539}, +# {"product": "PVD", "category": "薄膜生长设备", "chain_id": 34539}, +# {"product": "CMP", "category": "化学机械抛光设备", "chain_id": 34530}, +# {"product": "光刻机", "category": "光刻机", "chain_id": 34533}, +# {"product": "涂胶显影机", "category": "涂胶显影设备", "chain_id": 34535}, +# {"product": "晶圆清洗设备", "category": "晶圆清洗机", "chain_id": 34531}, +# {"product": "测试设备", "category": "测试机", "chain_id": 34554}, +# {"product": "外延生长设备", "category": "薄膜生长设备", "chain_id": 34539}, +# +# # ② 半导体材料与化学品类 +# {"product": "三氯乙烯", "category": "清洗溶剂 → 通用湿电子化学品", "chain_id": 32438}, +# {"product": "丙酮", "category": "清洗溶剂 → 通用湿电子化学品", "chain_id": 32438}, +# {"product": "异丙醇", "category": "清洗溶剂 → 通用湿电子化学品", "chain_id": 32438}, +# {"product": "其他醇类", "category": "清洗溶剂 → 通用湿电子化学品", "chain_id": 32438}, +# {"product": "光刻胶", "category": "光刻胶及配套试剂", "chain_id": 32445}, +# {"product": "显影液", "category": "显影液", "chain_id": 46504}, +# {"product": "蚀刻液", "category": "蚀刻液", "chain_id": 56341}, +# {"product": "光阻去除剂", "category": "光阻去除剂", "chain_id": 32442}, +# +# # ③ 晶圆制造类 +# {"product": "晶圆", "category": "单晶硅片 / 多晶硅片", "chain_id": 32338}, +# {"product": "硅衬底", "category": "硅衬底", "chain_id": 36914}, +# {"product": "外延片", "category": "硅外延片 / GaN外延片 / SiC外延片等", "chain_id": 32338}, +# +# # ④ 封装与测试类 +# {"product": "封装", "category": "IC封装", "chain_id": 10}, +# {"product": "测试", "category": "芯片测试 / 晶圆测试", "chain_id": 513742}, +# {"product": "测试", "category": "芯片测试 / 晶圆测试", "chain_id": 11}, +# +# # ⑤ 芯片与设计EDA类 +# {"product": "芯片(通用)", "category": "集成电路制造", "chain_id": 317589}, +# {"product": "DRAM", "category": "存储芯片 → 集成电路制造", "chain_id": 317589}, +# {"product": "GPU", "category": "图形芯片 → 集成电路制造", "chain_id": 317589}, +# {"product": "处理器(CPU/SoC)", "category": "芯片设计", "chain_id": 9}, +# {"product": "高频芯片", "category": "芯片设计", "chain_id": 9}, +# {"product": "光子芯片(含激光)", "category": "芯片设计 / 功率半导体器件", "chain_id": 9}, +# {"product": "光子芯片(含激光)", "category": "芯片设计 / 功率半导体器件", "chain_id": 2717}, +# {"product": "先进节点制造设备", "category": "集成电路制造", "chain_id": 317589}, +# {"product": "EDA及IP服务", "category": "设计辅助", "chain_id": 2515}, +# {"product": "MPW服务", "category": "多项目晶圆流片", "chain_id": 2514}, +# {"product": "芯片设计验证", "category": "设计验证", "chain_id": 513738}, +# {"product": "过程工艺检测", "category": "制程检测", "chain_id": 513740} +# ] +# # 提取所有 chain_id,并去重 +# chain_ids = set() +# for item in industry_list: +# # 如果 chain_id 是字符串包含多个编号,用逗号或斜杠拆分 +# if isinstance(item["chain_id"], str): +# for cid in item["chain_id"].replace("/", ",").split(","): +# chain_ids.add(cid.strip()) +# else: +# chain_ids.add(str(item["chain_id"])) +# print(list(chain_ids)) +# fill g_bom +# 结点属性值 相当于 图上点的 原始 产品名称 +# bom_nodes = pd.read_csv('../input_data/input_product_data/BomNodes.csv') +# bom_nodes['Code'] = bom_nodes['Code'].astype(str) +# bom_nodes.set_index('Index', inplace=True) +# +# bom_cate_net = pd.read_csv('../input_data/input_product_data/合成结点.csv') +# g_bom = nx.from_pandas_edgelist(bom_cate_net, source='UPID', target='ID', create_using=nx.MultiDiGraph()) +# # 填充每一个结点 的具体内容 通过 相同的 code 并且通过BomNodes.loc[code].to_dict()字典化 格式类似 格式 { code(0) : {level: 0 ,name: 工业互联网 }} +# bom_labels_dict = {} +# for index in g_bom.nodes: +# try: +# bom_labels_dict[index] = bom_nodes.loc[index].to_dict() +# # print(bom_labels_dict[index]) +# except KeyError: +# print(f"节点 {index} 不存在于 bom_nodes 中") +# # 分配属性 给每一个结点 获得类似 格式:{1: {'label': 'A', 'value': 10}, +# nx.set_node_attributes(g_bom, bom_labels_dict) +# # 改为json 格式 +# g_product_js = json.dumps(nx.adjacency_data(g_bom)) +# # 假设 g_bom 是你的 NetworkX 图 +# g_product_data = nx.adjacency_data(g_bom) +# +# # 保存为 pkl 文件 +# with open("g_bom.pkl", "wb") as f: +# pickle.dump(g_product_data, f) +# +# print("✅ 图数据已保存为 g_bom.pkl") diff --git a/GA_Agent_0925/GA_random.py b/GA_Agent_0925/废案/GA_random.py similarity index 86% rename from GA_Agent_0925/GA_random.py rename to GA_Agent_0925/废案/GA_random.py index 8c4a1bc..5c75385 100644 --- a/GA_Agent_0925/GA_random.py +++ b/GA_Agent_0925/废案/GA_random.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # 文件的编码格式设置为 UTF-8 from __future__ import division # 为了兼容 Python 2 和 3,保证除法始终返回浮点数 +import multiprocessing import random # 导入 random 库,用于生成随机数 from deap import base # 从 DEAP 库导入 base 模块,提供一些遗传算法相关的功能 @@ -11,6 +12,77 @@ from my_model import MyModel from sqlalchemy import text import pandas as pd from orm import connection + +def main(): + random.seed(42) # 可复现结果 + print("Start of evolution") + + ga = creating() + pop = ga.population(n=50) + CXPB, MUTPB, NGEN = 0.5, 0.2, 200 + + # # 并行计算 + # pool = multiprocessing.Pool() + # ga.register("map", pool.map) + + # 改为: + ga.register("map", map) # 单进程 + + # 评估初始种群 + fitnesses = list(ga.map(ga.evaluate, pop)) + for ind, fit in zip(pop, fitnesses): + ind.fitness.values = fit + print(f"Evaluated {len(pop)} individuals") + + best_log = [] + + for g in range(NGEN): + print(f"-- Generation {g} --") + + # 选择并克隆 + offspring = list(map(ga.clone, ga.select(pop, len(pop)))) + + # 交叉与变异 + for child1, child2 in zip(offspring[::2], offspring[1::2]): + if random.random() < CXPB: + ga.mate(child1, child2) + del child1.fitness.values + del child2.fitness.values + + for mutant in offspring: + if random.random() < MUTPB: + ga.mutate(mutant) + del mutant.fitness.values + + # 重新计算失效适应度 + invalid_ind = [ind for ind in offspring if not ind.fitness.valid] + fitnesses = list(ga.map(ga.evaluate, invalid_ind)) + for ind, fit in zip(invalid_ind, fitnesses): + ind.fitness.values = fit + + pop[:] = offspring + + # 最优个体 + best_ind = tools.selBest(pop, 1)[0] + best_log.append((g, best_ind.fitness.values[0])) + + print(f"Best individual {g}: {best_ind}, Fitness: {best_ind.fitness.values[0]:.3f}") + + # 写入数据库 + result_sql = text(f""" + INSERT INTO ga (generation, stu_beta, stu_nmb, gtu_mgf, gtu_discount, fitness, remark) + VALUES ({g}, {best_ind[0]}, {best_ind[1]}, {best_ind[2]}, {best_ind[3]}, {best_ind.fitness.values[0]}, 'Random2') + """) + with connection.connect() as conn: + conn.execute(result_sql) + conn.commit() + + # pool.close() + # pool.join() + + pd.DataFrame(best_log, columns=["generation", "fitness"]).to_csv("ga_log.csv", index=False) + print("-- End of (successful) evolution --") + # 目标函数(适应度函数),用于评估个体的适应度 def fitness(individual): """ @@ -77,6 +149,10 @@ def creating(): 创建遗传算法工具箱,用于优化 ABM 模型参数,使生成的脆弱产业集合 与目标产业集合误差最小化(fitness 最大化)。 """ + if "FitnessMax" not in creator.__dict__: + creator.create("FitnessMax", base.Fitness, weights=(1.0,)) + if "Individual" not in creator.__dict__: + creator.create("Individual", list, fitness=creator.FitnessMax) # 定义最大化适应度 creator.create("FitnessMax", base.Fitness, weights=(1.0,)) # 定义个体类 @@ -124,7 +200,7 @@ def creating(): toolbox.register("population", tools.initRepeat, list, toolbox.individual) # 注册 fitness 函数(需要在调用时传入目标产业集合) - # toolbox.register("evaluate", fitness) # 可以在 main 中使用 lambda 包装 target_chain_set + toolbox.register("evaluate", fitness) # 可以在 main 中使用 lambda 包装 target_chain_set # 交叉、变异和选择操作 toolbox.register("mate", tools.cxTwoPoint) @@ -133,76 +209,6 @@ def creating(): return toolbox -def main(): - # 创建遗传算法的工具箱 - ga = creating() - - # 初始化种群大小为 50 - pop = ga.population(n=50) - - # 交叉概率、变异概率和代数 - CXPB, MUTPB, NGEN = 0.5, 0.2, 500 - - print("Start of evolution") - - # 评估整个种群的适应度 - fitnesses = list(map(ga.evaluate, pop)) - for ind, fit in zip(pop, fitnesses): - ind.fitness.values = fit - - print(" Evaluated %i individuals" % len(pop)) - # my_sql = Sql() # 创建 Sql 类的实例,用于与数据库交互 - - # 开始演化 - for g in range(NGEN): - print("-- Generation %i --" % g) - - # 选择下一代的个体 - offspring = ga.select(pop, len(pop)) - # 克隆选择的个体 - offspring = list(map(ga.clone, offspring)) - - # 对后代进行交叉和变异 - for child1, child2 in zip(offspring[::2], offspring[1::2]): - # 以 CXPB 的概率交叉两个个体 - if random.random() < CXPB: - ga.mate(child1, child2) - - # 交叉后的适应度值需要重新计算 - del child1.fitness.values - del child2.fitness.values - - for mutant in offspring: - # 以 MUTPB 的概率变异个体 - if random.random() < MUTPB: - ga.mutate(mutant) - del mutant.fitness.values - - # 评估适应度无效的个体 - invalid_ind = [ind for ind in offspring if not ind.fitness.valid] - fitnesses = map(ga.evaluate, invalid_ind) - for ind, fit in zip(invalid_ind, fitnesses): - ind.fitness.values = fit - - print(" Evaluated %i individuals" % len(invalid_ind)) - - # 将种群完全替换为后代 - pop[:] = offspring - - # 收集所有个体的适应度并打印统计信息 - fits = [ind.fitness.values[0] for ind in pop] - - # 获取当前最好的个体并打印 - best_ind = tools.selBest(pop, 1)[0] - print("Best individual is %s, %s" % (best_ind, best_ind.fitness.values)) - - # 将最优个体的信息插入数据库 - result_string = '''INSERT INTO ga (generation, stu_beta, stu_nmb, gtu_mgf, gtu_discount, fitness, remark) - VALUES ({}, {}, {}, {}, {}, {}, 'Random2')'''.format(g, best_ind[0], best_ind[1], best_ind[2], best_ind[3], best_ind.fitness.values[0]) - # my_sql.insert_one_row_and_return_new_id(result_string) - - print("-- End of (successful) evolution --") - def get_target_vulnerable_industries(): """ 获取行业列表中所有产业链编号的集合(整数形式)。 @@ -280,11 +286,6 @@ def get_target_vulnerable_industries(): return chain_ids - -import pandas as pd -from sqlalchemy import text # 用于 SQL 查询 - - def get_vulnerable100_code(connection): """ 计算最脆弱前100产品的 Code 列表(去重)。 @@ -294,11 +295,11 @@ def get_vulnerable100_code(connection): List[int]: 最脆弱前100产品对应的 Code 列表 """ # 读取映射表 - bom_file = r"../input_data/input_product_data/BomNodes.csv" # 直接给出路径 + bom_file = r"../../input_data/input_product_data/BomNodes.csv" # 直接给出路径 mapping_df = pd.read_csv(bom_file) # 执行 SQL 获取结果 - with open("../SQL_analysis_risk.sql", "r", encoding="utf-8") as f: + with open("../../SQL_analysis_risk.sql", "r", encoding="utf-8") as f: str_sql = text(f.read()) result = pd.read_sql(sql=str_sql, con=connection) diff --git a/GA_Agent_0925/进度.py b/GA_Agent_0925/进度.py new file mode 100644 index 0000000..7c31837 --- /dev/null +++ b/GA_Agent_0925/进度.py @@ -0,0 +1,43 @@ +from matplotlib import rcParams, pyplot as plt +from sqlalchemy import func +from orm import db_session, Sample + +# 🔹 全局创建绘图对象 +plt.ion() # 启用交互模式 +fig, ax = plt.subplots(figsize=(8, 5)) +rcParams['font.family'] = 'Microsoft YaHei' +rcParams['font.size'] = 12 + +# 初始化柱状图 +labels = ['未完成 (-1)', '计算中(0)', '完成 (1)'] +initial_values = [0, 0, 0] +bars = ax.bar(labels, initial_values, color=['red', 'orange', 'green']) +value_texts = [ax.text(bar.get_x() + bar.get_width()/2, 0, '0', + ha='center', va='bottom', fontsize=12) + for bar in bars] + +ax.set_title('任务进度分布', fontsize=16) +ax.set_xlabel('任务状态', fontsize=14) +ax.set_ylabel('数量', fontsize=14) +ax.tick_params(axis='both', labelsize=12) + +def visualize_progress(): + """ + 实时更新 Sample 表中 is_done_flag 的分布。 + """ + # 查询数据库 + result = db_session.query(Sample.is_done_flag, func.count(Sample.id))\ + .group_by(Sample.is_done_flag).all() + data = {flag: count for flag, count in result} + for flag in [-1, 0, 1]: + data.setdefault(flag, 0) + values = [data[-1], data[0], data[1]] + + # 更新柱子高度和文本 + for bar, new_val, txt in zip(bars, values, value_texts): + bar.set_height(new_val) + txt.set_y(new_val + 0.5) + txt.set_text(str(new_val)) + + plt.draw() + plt.pause(0.1) # 刷新图表 diff --git a/__pycache__/controller_db.cpython-38.pyc b/__pycache__/controller_db.cpython-38.pyc index 0e37266..64f6a70 100644 Binary files a/__pycache__/controller_db.cpython-38.pyc and b/__pycache__/controller_db.cpython-38.pyc differ diff --git a/__pycache__/firm.cpython-38.pyc b/__pycache__/firm.cpython-38.pyc index df649d9..f4a6beb 100644 Binary files a/__pycache__/firm.cpython-38.pyc and b/__pycache__/firm.cpython-38.pyc differ diff --git a/__pycache__/my_model.cpython-38.pyc b/__pycache__/my_model.cpython-38.pyc index b6ab2ac..3b91b3d 100644 Binary files a/__pycache__/my_model.cpython-38.pyc and b/__pycache__/my_model.cpython-38.pyc differ diff --git a/__pycache__/orm.cpython-38.pyc b/__pycache__/orm.cpython-38.pyc index 861af70..0babf1e 100644 Binary files a/__pycache__/orm.cpython-38.pyc and b/__pycache__/orm.cpython-38.pyc differ diff --git a/best_result_with_industry.json b/best_result_with_industry.json new file mode 100644 index 0000000..303fc73 --- /dev/null +++ b/best_result_with_industry.json @@ -0,0 +1,192 @@ +{ + "best_individual": [ + 274, + 0.12435365817470823, + 0.6886779912120937, + 1, + 0.640080800113344, + 0.5004721771179256, + 8, + 0.27510354542863924, + 0.7990183310205519, + 0.08894228892924537, + 0.7610805309570537, + 1.405570461418866 + ], + "best_fitness": -9.0, + "best_per_gen": [ + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0 + ], + "avg_per_gen": [ + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0, + -9.0 + ], + "industry_matching": { + "matching": [], + "extra": [ + 56320, + 56321, + 56322, + 56323, + 8, + 317586, + 317589, + 2714, + 2715, + 2716, + 2717, + 2718, + 46505, + 32432, + 32433, + 32434, + 32435, + 32436, + 32437, + 32438, + 32439, + 32440, + 32441, + 513720, + 32443, + 32445, + 32446, + 32447, + 32448, + 32449, + 32450, + 32451, + 513738, + 513742, + 32338, + 513751, + 34524, + 34525, + 34526, + 34527, + 34528, + 34529, + 34530, + 34531, + 34532, + 34533, + 34534, + 34535, + 34537, + 34538, + 34539, + 34543, + 36914, + 34557, + 56319 + ], + "missing": [ + "34530", + "34539", + "2515", + "10", + "513742", + "9", + "34529", + "34533", + "513740" + ] + } +} \ No newline at end of file diff --git a/cache/firm_network_1009.pkl b/cache/firm_network_1009.pkl new file mode 100644 index 0000000..18f2da4 Binary files /dev/null and b/cache/firm_network_1009.pkl differ diff --git a/conf_experiment.yaml b/conf_experiment.yaml index 77309ea..ab75a91 100644 --- a/conf_experiment.yaml +++ b/conf_experiment.yaml @@ -8,5 +8,5 @@ test: # only for test scenarios n_iter: 100 not_test: # normal scenarios - n_sample: 50 - n_iter: 100 + n_sample: 10 + n_iter: 50 diff --git a/controller_db.py b/controller_db.py index 54e03a8..1e0b4ae 100644 --- a/controller_db.py +++ b/controller_db.py @@ -32,7 +32,7 @@ class ControllerDB: dct_para_in_test = dct_conf_experiment['test'] if self.is_test else dct_conf_experiment['not_test'] self.dct_parameter = {'meta_seed': dct_conf_experiment['meta_seed'], **dct_para_in_test} - print(self.dct_parameter) + # print(self.dct_parameter) # 0, not reset; 1, reset self; 2, reset all self.reset_flag = reset_flag self.is_exist = False @@ -328,7 +328,7 @@ class ControllerDB: )).scalar() # 控制 n_sample数量 作为后面的参数 n_sample = 0 if res is None else res - print(f'There are a total of {n_sample} samples.') + # print(f'There are a total of {n_sample} samples.') # 查找 is_done_flag = -1 也就是没有运行的 样本 运行后会改为0 res = db_session.execute( text(f"SELECT id FROM {self.db_name_prefix}_sample " @@ -340,15 +340,18 @@ class ControllerDB: @staticmethod def select_random_sample(lst_s_id): - while 1: - if len(lst_s_id) == 0: - return None - s_id = random.choice(lst_s_id) - lst_s_id.remove(s_id) - res = db_session.query(Sample).filter(Sample.id == int(s_id), - Sample.is_done_flag == -1) + temp_lst = lst_s_id[:] # 复制列表 + while temp_lst: + s_id = random.choice(temp_lst) + temp_lst.remove(s_id) # 从临时列表删除 + res = db_session.query(Sample).filter( + Sample.id == int(s_id), + Sample.is_done_flag == -1 + ) if res.count() == 1: return res[0] + # 尝试完所有样本都没找到 + return None def fetch_a_sample(self, s_id=None): # 由Computation 调用 返回 sample对象 同时给出 2中 指定访问模式 抓取特定的 样本 通过s_id diff --git a/count_firm.csv b/count_firm.csv new file mode 100644 index 0000000..6935f80 --- /dev/null +++ b/count_firm.csv @@ -0,0 +1 @@ +id_firm,count diff --git a/count_firm_prod.csv b/count_firm_prod.csv new file mode 100644 index 0000000..3029ef0 --- /dev/null +++ b/count_firm_prod.csv @@ -0,0 +1 @@ +id_firm,id_product,count diff --git a/count_prod.csv b/count_prod.csv new file mode 100644 index 0000000..8d6005e --- /dev/null +++ b/count_prod.csv @@ -0,0 +1 @@ +id_product,count diff --git a/firm.py b/firm.py index 772f59d..4a9b225 100644 --- a/firm.py +++ b/firm.py @@ -1,3 +1,5 @@ +from collections import defaultdict + from mesa import Agent @@ -20,7 +22,7 @@ class FirmAgent(Agent): # 各资源库存信息,库存资源,库存量 self.R = R # 包括库存时间的值 方便后面统计 - self.R1 = {0: R} + self.R1 = R # 设备资产信息,持有设备,设备数量, 增加 设备残值 [[1,2,3],[] ] self.C = C # 包括设备时间步的值 @@ -45,7 +47,7 @@ class FirmAgent(Agent): self.c_consumption = demand_quantity # 设备c购买价格(初始值) # self.c_price = c_price - # 资源r补货库存阈值 很重要设置 + # 资源r补货库存阈值 self.s_r = s_r self.S_r = S_r # 设备补货阙值 可选 @@ -344,7 +346,7 @@ class FirmAgent(Agent): list_C[1] -= machi_list[1] def refresh_R(self): - self.R1[self.model.t] = self.R + self.R1 = self.R def refresh_C(self): self.C1[self.model.t] = self.C diff --git a/firm_network.pkl b/firm_network.pkl index 18f2da4..8732e64 100644 Binary files a/firm_network.pkl and b/firm_network.pkl differ diff --git a/input_data/firm_industry_relation.csv b/input_data/firm_industry_relation.csv index fa0e686..586d350 100644 --- a/input_data/firm_industry_relation.csv +++ b/input_data/firm_industry_relation.csv @@ -1,364 +1,364 @@ Firm_Code,Product_Code 1,7 -5,7 -29954548,7 -29954548,7 -453289520,8 -453289520,8 -3472022914,2514 -79412414,2514 -490476776,2514 -720737055,2515 -850972471,2515 -350343208,2714 -37873062,2714 -1266556718,2714 -331545755,2715 -3193516458,2715 -41454763,2715 -584019624,2716 -185356903,2716 -22751149,2716 -27169556,2717 -3346538900,2717 -2541265952,2717 -777299215,2718 -18107611,2718 -4067555184,32338 -2313177432,32338 -12098344,32338 -104671744,32432 -4208851809,32432 +1,7 +6,7 +6,7 +8,8 +8,8 +626924399,2514 +42106161,2514 +8971203,2514 +25685135,2515 +25685135,2515 +2336923756,2714 +3191869223,2714 +591350440,2714 +16210433,2715 +517675473,2715 +16116663,2715 +2349179532,2716 +728969035,2716 +471121089,2716 +331545755,2717 +2326722141,2717 +2337727838,2717 +2327605629,2718 +2349705416,2718 +214851100,32338 +3111603340,32338 +70634828,32338 +420984285,32432 +420984285,32432 203314437,32433 -2309668026,32434 -333499553,32434 -4315536490,32434 -1270747834,32435 -39894253,32435 -287006714,32435 -3352578733,32436 -366828854,32436 +1160497810,32434 +3147958370,32434 +596368303,32434 +562681526,32435 +178452970,32435 +2448521375,32435 +3151377261,32436 +31732840,32436 5849940,32437 -5849940,32437 -29954548,32438 -3227189464,32438 -2961715231,32439 -888478182,32439 -631103677,32440 -2319266522,32440 -1194436218,32440 -2327979389,32441 -216898035,32441 -3274238529,32443 -61066955,32443 -2348894245,32445 -169978927,32445 -142823313,32446 -367669349,32446 -2340606811,32447 -3269940677,32447 +2424229017,32437 +71271700,32438 +410030851,32438 +367669349,32439 +771821595,32439 +197362120,32440 +598808584,32440 +2353389310,32440 +3462551351,32441 +3226664625,32441 +2353549582,32443 +961017,32443 +2978926070,32445 +543470507,32445 +2314659369,32446 +1444449910,32446 +3195293647,32447 +3226664625,32447 1452048,32448 -1452048,32448 -892652617,32449 -1555364428,32449 -2475874929,32450 -2353020496,32450 -4076786740,32451 -331450699,32451 -632264618,34491 -29930956,34491 -632264618,34491 -1092796483,34492 -2353851293,34492 -972774,34492 -24459300,34493 -3344266702,34493 -2345050363,34494 -33171435,34494 -2961210947,34495 -41454763,34495 -3135349256,34495 +688155470,32448 +495782506,32449 +495782506,32449 +2337952436,32450 +385766513,32450 +668539285,32451 +2352421906,32451 +9620005,34491 +340603317,34491 +1099584865,34491 +1694716470,34492 +3378606529,34492 +2962064709,34492 +2346894985,34493 +13047525,34493 +2317722475,34494 +664591135,34494 +3011933107,34495 +308365582,34495 +2323069589,34495 +1717102128,34496 2350883312,34496 -2350883312,34496 -3006753238,34498 -2350111843,34498 -2343704209,34499 -15482118,34499 -930767828,34501 -930767828,34501 -1010816593,34502 -2321243819,34502 -2353542014,34502 -79889978,34503 -37378925,34503 -186257378,34503 -1379191812,34505 -24653920,34505 -864536616,34509 -25685135,34509 -2349046160,34513 -2313628561,34513 -2346465051,34513 -1253552935,34517 -1253552935,34517 -5971532,34518 -3157495460,34518 -2354584345,34519 -29452962,34519 -2311639124,34524 -762165453,34524 -2989649772,34525 -25147774,34525 -413876805,34526 -11807506,34526 -3384021594,34527 -413876805,34527 +2311838590,34498 +643954924,34498 +3135349256,34499 +290636928,34499 +301209792,34501 +2311838590,34501 +3221581379,34502 +2347561020,34502 +2348887010,34502 +24653920,34503 +4576816,34503 +2325924904,34503 +37873062,34505 +3305073093,34505 +2348999904,34509 +2357906989,34509 +35404067,34513 +1698501971,34513 +618469306,34513 +3409973515,34517 +515770253,34517 +1052742800,34518 +1452048,34518 +352084034,34519 +742704658,34519 +805940123,34524 +286335813,34524 +2310534839,34525 +3358892171,34525 +280281699,34526 +2310406050,34526 +3268669333,34527 +2345982379,34527 80158773,34528 -2343704209,34528 -3312358902,34529 -80169705,34529 -27075840,34530 -3077450214,34530 -2311352797,34531 -22324879,34531 -4379631621,34532 -2349616974,34532 -423388486,34533 -1679596339,34533 -3164072929,34534 -22324879,34534 -1033972427,34535 +80158773,34528 +78979697,34529 +644252759,34529 +59234665,34530 +758879940,34530 +2989649772,34531 +2728939,34531 +157087137,34532 +2334430421,34532 +6333996,34533 +169978927,34533 +2728939,34534 +205960791,34534 +2349345463,34535 3312358902,34535 -354328758,34537 -1044103384,34537 +1208566436,34537 +26487185,34537 +2350443114,34538 78979697,34538 -2316430101,34538 -2349076526,34539 -2347561020,34539 -11169556957,34543 +3118140206,34539 +676597455,34539 2333843479,34543 -22324879,34544 -59234665,34544 -4995239819,34545 -2339136692,34545 -3327312155,34546 -1389529309,34546 -18729484,34547 -3287925122,34547 -888662519,34548 +872394725,34543 +301209792,34544 +3386978614,34544 +3146262808,34545 +815013249,34545 +3088175489,34546 +2322986586,34546 +3154580688,34547 +3408810051,34547 +3043532438,34548 443872531,34549 -24673506,34549 -3065971313,34550 -830662620,34550 -2347561020,34551 -613464015,34551 -2453696971,34552 -43566171,34552 -2311838590,34553 -409663925,34553 -3414534661,34554 -3393219477,34554 -11175750477,34555 -2311838590,34555 -2321857672,34556 -146491012,34557 -2311907103,34557 -3464943902,34558 -259923931,34558 -3054059190,34566 -186745206,34566 -507827038,34566 -2349737110,34567 -505990558,34567 -613464015,34568 -221048382,34568 -2348910693,34569 -2342515031,34569 -2360390148,34570 -2317568755,34570 -2349511062,34571 -2349511062,34571 -500189853,34572 -18065940,34572 -3006753238,34573 -2333993502,34573 -433384648,34574 -344181818,34574 -1104420298,36914 -37873062,36914 +2313262775,34549 +188458872,34550 +533879767,34550 +314284469,34551 +3380230725,34551 +1452190980,34552 +2351960502,34552 +830662620,34553 +3398677646,34553 +613464015,34554 +2314892072,34554 +170176299,34555 +3070844997,34555 +3119505684,34556 +441623911,34557 +3312358902,34557 +11197684487,34558 +2345116311,34558 +864375173,34566 +311225958,34566 +311225958,34566 +3032041158,34567 +364288921,34567 +235473780,34568 +3274956187,34568 +410419900,34569 +658759701,34569 +1428342684,34570 +2339188563,34570 +3030943638,34571 +886706371,34571 +2349168009,34572 +3123887630,34572 +24673506,34573 +11164728143,34573 +3137149148,34574 +2338014857,34574 +25980377,36914 +3330358736,36914 +2348894245,46504 1452048,46504 -2349349655,46504 -420984285,46505 -2329836516,46505 +29954548,46505 +247297633,46505 +13854344,49686 27599908,49686 -2350719552,49686 -3216066502,49687 -39698451,49687 -2351643794,49688 -2351192662,49688 -865049663,49689 -891649,49689 -3424978618,49690 -3145156061,49690 -281599332,49691 -24653920,49691 -79938367,49692 -864169770,49692 -2310296367,49693 -774611690,49693 -2311838590,49694 -2350442566,49694 -654461595,49695 -383463860,49695 -463659395,49696 -2347105663,49696 +2328691869,49687 +891649,49687 +23421122,49688 +2959520478,49688 +29452962,49689 +33822284,49689 +3392803162,49690 +5971532,49690 +1524794108,49691 +10437056,49691 +5979030,49692 +26895145,49692 +1253552935,49693 +518871190,49693 +515770253,49694 +515770253,49694 +451074876,49695 +3420061649,49695 +3030705543,49696 +472355525,49696 504638253,49697 -519195163,49698 -3221578464,49698 -2316256865,49699 -3269840248,49699 -1675147952,49700 -1675147952,49700 -29223617,49701 -2553848709,49701 -168035745,49702 -510149116,49702 -2316430101,49704 -5591349,49704 -274839085,49705 -4209347174,49705 -413142822,49707 -951988821,49707 -1587526,49708 -1587526,49708 -3402194899,49709 -730857,49709 -27085933,49710 -27085933,49710 -3424978618,49711 -24495941,49711 +2333118643,49698 +3073223227,49698 +2329891409,49699 +762501019,49699 +23167049,49700 +9746245,49700 +5971532,49701 +23167049,49701 +2311838590,49702 +2347105663,49702 +2351656365,49704 +3276276473,49704 +2944593082,49705 +3031766093,49705 +691978900,49707 +2719128520,49707 +3358087747,49708 +3220049148,49708 +1408183015,49709 +2310406921,49709 +16116663,49710 +1651310523,49710 +2350544061,49711 +1605495,49711 +686380489,49712 2424229017,49712 -3118428071,49712 -3297178263,49713 -441623911,49713 -2316150629,49714 -2327057709,49714 -2624175,49715 -3483100980,49715 -781386116,49715 -3222821993,49716 -10398718,49716 -3042364033,49717 -2333993502,49717 +872030659,49713 +3222821993,49713 +2343364952,49714 +343932526,49714 +3196033145,49715 +265133300,49715 +4607820,49715 +9746245,49716 +1477049981,49716 +2487067571,49717 +1452048,49717 +24653920,49718 79938367,49718 -2342518227,49718 -3068358389,49719 -20751117,49719 -3449575456,49720 -3449575456,49720 -3440374619,49721 -3168979780,49721 -2962064709,49722 -3151203276,49722 +1570236326,49719 +186924210,49719 +24653920,49720 +2326655246,49720 +2341774429,49721 +186924210,49721 +169978927,49722 +696450846,49722 +37873062,49723 3449575456,49723 -777299215,49723 -24459300,49724 -1675147952,49724 -2334772533,49725 -38567125,49725 -2338894532,49726 -270141231,49726 -220783142,49727 -3407754893,49727 -9278530,49728 -9278530,49728 -2323580212,49729 -2331160070,49729 -2349345463,49730 -2350687852,49730 +1008519520,49724 +640700057,49724 +8114841,49725 +889661204,49725 +78576577,49726 +2948003547,49726 +314846874,49727 +314846874,49727 +2948003547,49728 +3222664794,49728 +778745779,49729 +2349463087,49729 +359006365,49730 +189427260,49730 +466148111,49731 2357754148,49731 -2357754148,49731 -3173999388,49733 -501323741,49733 -20751117,49734 -20751117,49734 -2311337085,56247 -2950325617,56247 -2350701298,56248 -2322658897,56248 +3444782013,49733 +2348987001,49733 +658871510,49734 +2326903290,49734 +3125087791,56247 +27042865,56247 +1247902451,56248 +2312870289,56248 +24284343,56249 2347015781,56249 -24610687,56249 -181655991,56250 -15482118,56250 -2326956863,56319 -2326956863,56319 -3270918801,56320 -7299120,56320 -557266995,56321 -557266995,56321 -2357759100,56322 -695879282,56322 -2314301730,56322 -3118917053,56323 +395739442,56250 +148376643,56250 +737770776,56319 +9032550,56319 +756272716,56320 +1171244159,56320 +5849940,56321 +11807506,56321 +2349742676,56322 +193814549,56322 +551856519,56322 648145286,56323 -4091219112,56341 -60716715,56341 -2982872611,317586 -3051771738,317586 -1237811030,317586 -814834276,317589 -3339921892,317589 -22324879,317589 -2358215091,317620 -6823511,317620 -2318300058,431078 -30918572,431078 -173280333,431079 -1217010297,431079 -79412414,431079 -227353488,431080 -4728160558,431080 -20751117,431081 -2313858141,431081 -2311676659,431082 -1048928993,431082 -966536464,431083 -3464313484,431083 -2347015781,431085 -2357754148,431085 -338952484,431086 -27042865,431086 -3104545193,431087 -9620005,431087 -864166372,431088 -33822284,431088 -3312199997,513687 -3344266702,513687 -591975267,513689 -3357541349,513691 -3357541349,513691 -24673506,513693 -708388905,513693 +2349345463,56323 +2349349655,56341 +3145389278,56341 +3392803162,317586 +2344471631,317586 +11807506,317586 +395736790,317589 +340093034,317589 +29223617,317589 +950849442,317620 +33822284,317620 +28665295,431078 +1261908916,431078 +1283378608,431079 +863973253,431079 +29749980,431079 +382080545,431080 +79938367,431080 +1452048,431081 +14913649,431081 +3151519907,431082 +14913649,431082 +2382390052,431083 +3216845719,431083 +3429928077,431085 +308365582,431085 +808524154,431086 +493002466,431086 +2327644110,431087 +3422843097,431087 +519195163,431088 +3010580773,431088 +38852110,513687 +733657390,513687 +675729777,513689 +507827038,513691 +578803019,513691 +907433543,513693 +300186799,513693 16116663,513695 -784491064,513695 -2329395956,513697 -2348912438,513697 -520408144,513697 +1476953321,513695 +2326520912,513697 +16715045,513697 +2316150629,513697 +28667694,513699 2351592628,513699 -300186799,513699 -578803019,513701 -2342515031,513701 -3339921892,513701 -343932526,513720 -2349375343,513720 +2349588257,513701 +3203980088,513701 +2349746655,513701 +3362063909,513720 +3226232,513720 +9746245,513738 2311838590,513738 -2311838590,513738 -2325170042,513742 -10437056,513742 -2350111843,513744 -2311838590,513744 -2350111843,513746 -3306665331,513746 -23131812,513749 -3120341363,513749 +303926772,513742 +532328014,513742 +25685135,513744 +300186799,513744 +16116663,513746 +16116663,513746 +225958786,513749 +862404568,513749 314846874,513751 diff --git a/input_data/input_firm_data/firm_amended.csv b/input_data/input_firm_data/firm_amended.csv index b2f670b..99007b7 100644 --- a/input_data/input_firm_data/firm_amended.csv +++ b/input_data/input_firm_data/firm_amended.csv @@ -1,306 +1,315 @@ Code,固定资产原值(万元人民币),固定资产净值(万元人民币),资产总和(万元人民币),存货(万元人民币),企业名称,Type_Region,Revenue_Log 1,24895.67,19028.645,59296.0375,3736.5025,金三江(肇庆)硅材料股份有限公司,广东省,4.77 -5,28523.3982120397,16482.5120486869,40960.480086326,2588.93324,福建省三明正元化工有限公司,福建省,4.61 -29954548,757171.52339162,494430.604177194,1465408.31294514,133292.643730143,多氟多新材料股份有限公司,河南省,6.17 -453289520,130115.029749624,82224.7896921481,479782.660674286,193520.088971571,拓荆科技股份有限公司,辽宁省,5.68 -3472022914,737.674091690682,426.271863328108,1059.32276085326,66.95517,哈尔滨市丰赛农业技术开发有限公司,黑龙江省,3.03 -79412414,21634.7036353221,11761.1518318531,91981.0940971428,12269.0431131106,无锡力芯微电子股份有限公司,江苏省,4.96 -490476776,55936.0889760484,32323.191425171,80325.95,18149.98,成都旭光科技股份有限公司,四川省,4.9 -720737055,4537.85989427612,2622.24472086527,6516.50685,315.444274666667,上海明波通信技术股份有限公司,上海市,3.81 -850972471,10860.463202359,7923.85146086661,132707.358609333,8836.59633516667,杭州广立微电子股份有限公司,浙江省,5.12 -350343208,29640.4180971984,17127.9924216384,42564.5551135,3903.95977783333,四川九洲光电科技股份有限公司,四川省,4.63 -37873062,859499.995818288,498140.77960258,1507073.36388473,184703.551339833,杭州士兰微电子股份有限公司,浙江省,6.18 -1266556718,37572.0587346531,22449.072071654,168567.630391833,10632.3104404292,科大国盾量子技术股份有限公司,安徽省,5.23 -331545755,14213.7203367523,8213.53104442853,20411.3410498333,6911.28954133333,西安西驰电气股份有限公司,陕西省,4.31 -3193516458,113416.479647353,79144.1733852397,412242.506193571,41347.21758,苏州华兴源创科技股份有限公司,江苏省,5.62 -41454763,29933.175208967,18326.5778449736,160000.820546286,3281.00494028571,上海概伦电子股份有限公司,上海市,5.2 -584019624,219826.879323823,127029.015271776,315678.182734271,19952.64066,安徽电力股份有限公司淮南田家庵发电分公司,安徽省,5.5 -185356903,327.855151862525,189.454161479159,470.810115934781,29.7578533333333,淮南市西迈机械制造有限公司,安徽省,2.67 -22751149,743338.086508,447941.053405333,1288765.41920833,263513.812713,新洋丰农业科技股份有限公司,湖北省,6.11 -27169556,663046.74805,380037.692216667,4032516.77646667,455436.179933333,株洲中车时代电气股份有限公司,湖南省,6.61 -3346538900,3093538.01873858,1787629.83596418,4442416.06385275,335021.89871525,广东小鹏汽车科技有限公司,广东省,6.65 -2541265952,7294.77712894119,4215.35509291129,10475.5250795489,662.112236666667,深圳市福斯特半导体有限公司,广东省,4.02 -777299215,6639.06682521613,3836.44676995298,9533.90484767932,602.59653,福州世强电子有限公司,福建省,3.98 -18107611,34371080.0120577,19861649.5907558,49357931.615075,4949308.389283,浙江吉利控股集团有限公司,浙江省,7.69 -4067555184,3565.42477650496,2060.31400608586,5120.06001079074,323.616655,大庆菲曼希精密设备制造有限公司,黑龙江省,3.71 -2313177432,983.565455587575,568.362484437478,1412.43034780434,89.27356,常州卡思特摩光伏材料有限公司,江苏省,3.15 -12098344,134382.308019667,35393.1831141667,190516.121775667,36019.3828761667,宁夏东方钽业股份有限公司,宁夏回族自治区,5.28 -104671744,5409.61000573167,3125.99366440613,7768.36691292389,491.00458,青海利亚达化工有限公司,青海省,3.89 -4208851809,71851.6551423333,52930.2237671667,445347.011300833,49697.6881215,西陇科学股份有限公司,广东省,5.65 -203314437,3196.58773065962,1847.1780744218,4590.39863036412,290.13907,洛阳市洁晶清洗材料有限公司,河南省,3.66 -2309668026,1229.45681948447,710.453105546847,1765.53793475543,111.59195,山西蓝光工程材料有限公司,山西省,3.25 -333499553,371418.905166259,214627.883185702,533369.010089615,33711.928095,山西三维华邦集团有限公司,山西省,5.73 -4315536490,737.674091690682,426.271863328108,1059.32276085326,66.95517,山西鑫远建材有限公司,山西省,3.03 -1270747834,38359.0527679154,22166.1368930616,55084.7835643694,3481.66884,广东奥克化学有限公司,广东省,4.74 -39894253,4989507.81666667,1332605.0,4381081.81666667,662222.116666667,中国石化上海石油化工股份有限公司,上海市,6.64 -287006714,913508.252742451,527879.275480115,1311826.0425,111970.2725,宝武碳业科技股份有限公司,上海市,6.12 -3352578733,491.782727793788,284.181242218739,706.215173902173,44.63678,吉林省泓昇新能源科技有限公司,吉林省,2.85 -366828854,81536.6715771667,60716.0971225,275511.445341833,37270.9437623333,广东聚石化学股份有限公司,广东省,5.44 -5849940,18652802.5217652,10302896.7482042,20855221.2857143,2169804.72857143,中国铝业股份有限公司,北京市,7.32 -3227189464,32949.4427621838,19040.1432286555,47316.4166514455,2990.66426,安徽瑞柏新材料有限公司,安徽省,4.68 -2961715231,9712.7088739273,5612.57953382009,13947.7496845679,881.576405,绍兴金冶环保科技有限公司,浙江省,4.14 -888478182,491.782727793788,284.181242218739,706.215173902172,44.63678,东莞市道滘博尔日涂料助剂厂,广东省,2.85 -631103677,5245.68242980039,3031.26658366655,7532.9618549565,476.125653333333,贵州忠辉重工有限公司,贵州省,3.88 -2319266522,688.495818911303,397.853739106234,988.701243463042,62.491492,台州市路桥岩方涂料有限公司,浙江省,3.0 -1194436218,245.891363896894,142.090621109369,353.107586951086,22.31839,平湖市金鹏工贸有限公司油漆分公司,浙江省,2.55 -2327979389,9507.79940401323,5494.17068289562,13653.4933621087,862.977746666667,江苏赢新润滑科技有限公司,江苏省,4.14 -216898035,39506.5457994343,22829.2264582387,56732.6189701411,3585.82132666667,河南长兴实业有限公司,河南省,4.75 -3274238529,737.674091690682,426.271863328108,1059.32276085326,66.95517,杭州东宇活性炭有限公司,浙江省,3.03 -61066955,140510.748267291,76204.8620044891,338602.933514714,28179.6880875714,浙江康盛股份有限公司,浙江省,5.53 -2348894245,140155.923780404,84124.7869805446,297024.681265143,11981.7573048571,晶瑞电子材料股份有限公司,江苏省,5.47 -169978927,1674991.23124933,1348118.9408745,2598689.7056225,65028.9291661667,合肥晶合集成电路股份有限公司,安徽省,6.41 -142823313,110604.194319667,62639.2297726667,635987.119100167,97437.8679368333,重庆川仪自动化股份有限公司,重庆市,5.8 -367669349,5105668.05830967,3059216.88747333,6702847.66086067,537603.399401,蓝思科技股份有限公司,湖南省,6.83 -2340606811,4180.1531862472,2415.54055885928,6002.82897816846,379.41263,佛山市特能宝化学原料有限公司,广东省,3.78 -3269940677,30244.6377593179,17477.1463964524,43432.2331949836,2745.16197,吉和昌新材料(荆门)有限公司,湖北省,4.64 -1452048,28236967.2134157,17452589.831388,37654713.2389085,1884370.44367833,京东方科技集团股份有限公司,北京市,7.58 -892652617,64751.3924928487,37417.196892134,92984.9978971192,5877.17603333333,兰州金川科技园有限公司,甘肃省,4.97 -1555364428,70201.9843925632,40566.872326725,100812.216074535,6371.900345,稀美资源(广东)有限公司,广东省,5.0 -2475874929,245.891363896894,142.090621109369,353.107586951086,22.31839,南亚贸易(惠州)有限公司,广东省,2.55 -2353020496,26261.923728183,15429.0215205381,60979.99377175,4997.96087575,同宇新材料(广东)股份有限公司,广东省,4.79 -4076786740,983.565455587575,568.362484437478,1412.43034780434,89.27356,内蒙古鑫钰祥商贸有限公司,内蒙古自治区,3.15 -331450699,5409.61000573167,3125.99366440613,7768.36691292389,491.00458,绵阳诚勤电子科技有限责任公司,四川省,3.89 -632264618,24466.2960693333,11125.104671,41893.9137386667,9131.4346385,精伦电子股份有限公司,湖北省,4.62 -29930956,1113.70019512213,643.562059059886,1599.30784983333,492.828037833333,北京鼎实创新科技股份有限公司,北京市,3.2 -1092796483,24644.7665540916,13962.6723778493,99636.0612445714,21795.4415151429,亚世光电(集团)股份有限公司,辽宁省,5.0 -2353851293,1475.34818338136,852.543726656217,2118.64552170652,133.91034,深圳市弘佳光电科技有限公司,广东省,3.33 -972774,34438.570245,21878.4732774,269601.932676,94545.1294942,北京神舟航天软件技术股份有限公司,北京市,5.43 -24459300,11563.6630606667,6970.961253,604937.636983333,87424.1267993333,北京集创北方科技股份有限公司,北京市,5.78 -3344266702,22275.8966165753,12988.7428133535,91231.4598907143,12065.8805295714,佛山市联动科技股份有限公司,广东省,4.96 -2345050363,29345.4983293333,19251.4658936667,69568.8449763333,1262.94723833333,胜科纳米(苏州)股份有限公司,江苏省,4.84 -33171435,608534.898068333,328118.5379995,1084751.64497883,61275.9548563333,广东风华高新科技股份有限公司,广东省,6.04 -2961210947,1721.23954727826,994.634347765586,2471.7531086576,156.22873,深圳市泽晶伟创科技有限公司,广东省,3.39 -3135349256,23988.7417005,21562.453113,213376.093520167,11441.7133435,北京华峰测控技术股份有限公司,北京市,5.33 -2350883312,8360.30637249438,4831.08111771856,12005.6579563369,758.82526,无锡市辉煌电子材料有限公司,江苏省,4.08 -3006753238,2041970.43921619,1162815.70513596,2626399.81194,236376.363264714,通富微电子股份有限公司,江苏省,6.42 -2350111843,92789.448255777,62286.1122935528,131188.586355714,1480.14299457143,广东利扬芯片测试股份有限公司,广东省,5.12 -2343704209,71514.6399746746,41325.4026142836,102697.23,7848.60666666667,麦斯克电子材料股份有限公司,河南省,5.01 -15482118,136268.003408653,72622.7235243867,386138.298983975,75554.4652471667,上海复旦微电子集团股份有限公司,上海市,5.59 -930767828,92087.5475024413,53213.6493681296,132240.5601055,24848.5958543333,中国科学院沈阳科学仪器股份有限公司,辽宁省,5.12 -1010816593,190161.172017552,125995.43098285,489297.169029714,111575.164158429,青岛鼎信通讯股份有限公司,山东省,5.69 -2321243819,8150.63908576382,5683.42656648055,78242.99176,8590.6279275,浙江铖昌科技股份有限公司,浙江省,4.89 -2353542014,5346.21434766376,3089.35989131322,7677.3287915,3063.477861,深圳市力生美半导体股份有限公司,广东省,3.89 -79889978,70662.4194063333,47709.2542268333,743263.198951833,57637.2210431667,杭州海兴电力科技股份有限公司,浙江省,5.87 -37378925,35834.7159848466,22934.3345194324,85466.377199,12474.301626,欣灵电气股份有限公司,浙江省,4.93 -186257378,9884.83282865514,5712.04296859665,14194.9249954336,897.199278,长春长光奥立红外技术有限公司,吉林省,4.15 -1379191812,7376.74091690682,4262.71863328108,10593.2276085326,669.5517,宁波力创电子科技发展有限公司,浙江省,4.03 -24653920,63925.6287144089,38626.1648407043,301902.830405857,49184.7394994286,圣邦微电子(北京)股份有限公司,北京市,5.48 -864536616,449077.123100443,297167.27771169,1565844.03465357,259887.593897857,上海联影医疗科技股份有限公司,上海市,6.19 +6,314411.7225,343955.324695592,854758.9825,163769.3525,湖北祥云(集团)化工股份有限公司,湖北省,5.93 +8,118028.345,64901.2925,169712.1125,26230.0375,江苏力星通用钢球股份有限公司,江苏省,5.23 +626924399,321178.641773109,163955.950315494,1170111.10187914,133591.969312571,上海润达医疗科技股份有限公司,上海市,6.07 +42106161,145520.483410812,99288.9807472208,599214.222300286,30444.3936875714,浙江东方基因生物制品股份有限公司,浙江省,5.78 +8971203,46157.7780925,32834.899699,458530.1236325,28793.4303391667,北京数码视讯科技股份有限公司,北京市,5.66 25685135,27225.0066035415,15732.2243314978,39095.9496671667,494.656998333333,北京确安科技股份有限公司,北京市,4.59 -2349046160,7145.51529816667,4421.05037816667,275606.846605167,16789.3887331667,思瑞浦微电子科技(苏州)股份有限公司,江苏省,5.44 -2313628561,14933.4672534613,8629.44352226417,21444.9198341667,3977.1318875,重庆阿泰可科技股份有限公司,重庆市,4.33 -2346465051,2114.66572951329,1221.97934154058,3036.72524777934,191.938154,海南中藤科技股份有限公司,海南省,3.48 -1253552935,4169.08448783333,2457.4742155,82802.5928295,7680.27564083333,深圳市力合微电子股份有限公司,广东省,4.92 -5971532,1008031.2322245,724134.278732333,9825144.85496167,1410912.94534083,杭州海康威视数字技术股份有限公司,浙江省,6.99 -3157495460,29634.8258561912,17809.9080543064,74174.9565917143,12596.5014271429,广东绿岛风空气系统股份有限公司,广东省,4.87 -2354584345,1844.1852292267,1065.67965832027,2648.30690213314,167.387925,山西集目看看信息技术股份有限公司,山西省,3.42 -29452962,456144.931192807,269318.787489444,1898148.98546986,206077.306495286,广电运通集团股份有限公司,广东省,6.28 -2311639124,737.674091690682,426.271863328108,1059.32276085326,66.95517,府谷县鈺益来环保设备安装有限公司,陕西省,3.03 -762165453,614.728409742234,355.226552773424,882.768967377713,55.795975,贵州大龙铁合金集团海鸿硅业有限公司,贵州省,2.95 -2989649772,353266.3068118,314586.6119876,816569.9774388,71733.723177,江苏美科太阳能科技股份有限公司,江苏省,5.91 -25147774,122743.43558,87339.0741283333,470955.22499,92968.234407,有研新材料股份有限公司,北京市,5.67 -413876805,245.891363896894,142.090621109369,353.107586951086,22.31839,益阳同行机电设备有限公司,湖南省,2.55 -11807506,19609298.1959302,12104435.9853224,39142373.2,5444482.05714286,比亚迪股份有限公司,广东省,7.59 -3384021594,24097.3536618956,13924.8808687182,34604.5435212064,2187.20222,中电化合物半导体有限公司,浙江省,4.54 -80158773,12635.7451105,6465.9750325,23799.6983851667,1474.810014,江苏华盛天龙光电设备股份有限公司,江苏省,4.38 -3312358902,66438.2226519953,41878.7735649207,237082.540978857,87569.4877398571,沈阳芯源微电子设备股份有限公司,辽宁省,5.37 -80169705,49057.3516709158,36516.8322531191,374401.3523425,149290.899493,深圳市联赢激光股份有限公司,广东省,5.57 -27075840,240383.397345603,138907.79119652,345197.977003382,21818.458064,上海生物制品研究所有限责任公司,上海市,5.54 -3077450214,25753.3271505,16846.9978213333,150584.844272833,21242.4322786667,安集微电子科技(上海)股份有限公司,上海市,5.18 -2311352797,55205.024134511,31900.7387787705,79276.1183263333,6754.43288,阳光中科(福建)能源股份有限公司,福建省,4.9 -22324879,32642.0785573127,18862.5299522688,46875.0321677567,2962.7662725,北京中电科电子装备有限公司,北京市,4.67 -4379631621,245.891363896894,142.090621109369,353.107586951086,22.31839,深圳市铁盒科技有限公司,广东省,2.55 -2349616974,31228.2032149055,18045.5088808899,44844.6635427879,2834.43553,无锡派斯克科技有限公司,江苏省,4.65 -423388486,163646.093171967,112755.430119389,622443.151983429,242227.496705143,海目星激光科技集团股份有限公司,广东省,5.79 -1679596339,7602.68963569803,4393.28521066349,10917.6969416667,4958.50469716667,上海广奕电子科技股份有限公司,上海市,4.04 -3164072929,798499.18961975,624873.87844475,1327789.8413485,124088.77507875,芯联集成电路制造股份有限公司,浙江省,6.12 -1033972427,36282.327026942,26200.1602546739,467572.046681333,150030.431427836,盛美半导体设备(上海)股份有限公司,上海市,5.67 -354328758,4917.82727793788,2841.81242218739,7062.15173902172,446.3678,安徽索克菲尼仪表有限公司,安徽省,3.85 -1044103384,424162.602722142,245106.321413662,609110.587490623,38499.22275,通威太阳能(安徽)有限公司,安徽省,5.78 -78979697,3444820.24820822,2409945.69767362,8167350.12541314,1224407.85554914,晶科能源股份有限公司,江西省,6.91 -2316430101,190407.310913344,133151.348506564,648884.637041571,104480.892502143,江苏卓胜微电子股份有限公司,江苏省,5.81 -2349076526,438376.609971396,268726.318611834,2259548.69151771,771941.581803429,无锡先导智能装备股份有限公司,江苏省,6.35 -2347561020,23605.5709341018,13640.6996264995,33898.3283473042,2142.56544,安徽北方微电子研究院集团有限公司,安徽省,4.53 -11169556957,983.565455587577,568.362484437478,1412.43034780434,89.27356,安徽华鑫微纳集成电路有限公司,安徽省,3.15 -2333843479,25746.1035943333,12125.48027,54175.2774613333,8385.40003966667,山东华光光电子股份有限公司,山东省,4.73 -59234665,251695.047657333,199428.352979167,1787952.23306117,656252.890643167,浙江晶盛机电股份有限公司,浙江省,6.25 -4995239819,491.782727793788,284.181242218739,706.215173902172,44.63678,江苏明纳供应链管理有限公司,江苏省,2.85 -2339136692,640144.399809059,473982.97970632,1481467.957578,133298.837068571,弘元绿色能源股份有限公司,江苏省,6.17 -3327312155,4794.88159598943,2770.76711163271,6885.59794554618,435.208605,合肥钛柯精密机械有限公司,安徽省,3.84 -1389529309,32860.1214204911,18988.5280571493,47188.14844825,8239.6429645,深圳市哈德胜精密科技股份有限公司,广东省,4.67 -18729484,505503.465899235,292109.898876642,725918.577254043,45882.146162,淮海工业集团有限公司,山西省,5.86 -3287925122,8729.14341833971,5044.21704938262,12535.3193367636,792.302845,贵州通创科光电有限公司,贵州省,4.1 -888662519,22130.2227507204,12788.1558998433,31779.6828255977,2008.6551,东莞市森富同纸品有限公司,广东省,4.5 -443872531,217273.703527667,142463.186399833,490405.746949167,14931.5790275,惠州光弘科技股份有限公司,广东省,5.69 -24673506,3731195.01695067,1819174.82755833,3657055.221448,291506.649439667,江苏长电科技股份有限公司,江苏省,6.56 -3065971313,134201.385594667,87171.1758126667,197624.891468667,29697.253081,华羿微电子股份有限公司,陕西省,5.3 -830662620,262637.565598167,177898.6218025,676303.217476167,73842.0312075,扬州扬杰电子科技股份有限公司,江苏省,5.83 -613464015,17409.1331735,10325.6691753333,220548.5172555,35552.7344381667,贵州振华风光半导体股份有限公司,贵州省,5.34 -2453696971,48907.0477203197,33449.653193481,182178.79532558,34675.6299895,罗博特科智能科技股份有限公司,江苏省,5.26 -43566171,19425.4177478546,11225.1590676402,27895.4993691358,1763.15281,长白朝鲜族自治县天宝硅藻土功能制品有限公司,吉林省,4.45 -2311838590,53398.0289114503,26546.600225041,80495.2837445714,310.151853,上海华岭集成电路技术股份有限公司,上海市,4.91 -409663925,63931.7546131924,36943.5614884361,91807.9726072824,5802.7814,三河建华高科有限责任公司,河北省,4.96 -3414534661,227798.54904047,146248.694269867,454874.703635286,46215.3088984286,厦门弘信电子科技集团股份有限公司,福建省,5.66 -3393219477,245.891363896894,142.090621109369,353.107586951086,22.31839,吉林新环诚汽车科技有限公司,吉林省,2.55 -11175750477,39342.618223503,22734.4993774991,56497.2139121738,3570.9424,强一半导体(合肥)有限公司,安徽省,4.75 -2321857672,172615.737455619,99747.6160187774,247881.526039662,15667.50978,福建福顺半导体制造有限公司,福建省,5.39 -146491012,172984.813296877,111150.023329549,555820.536672,166754.219868852,博众精工科技股份有限公司,江苏省,5.74 -2311907103,61082.6578818333,46952.3648285,333112.031847833,76726.8203528333,苏州赛腾精密电子股份有限公司,江苏省,5.52 -3464943902,368.837045845341,213.135931664054,529.661380426629,33.477585,南京波彩汽车服务有限公司,江苏省,2.72 -259923931,1426.16991060198,824.125602434345,2048.0240043163,129.446662,甘肃明辰环保科技有限公司,甘肃省,3.31 -3054059190,16474.7213810919,9520.07161432775,23658.2083257228,1495.33213,四川宏润达幕墙装饰工程有限公司,四川省,4.37 -186745206,322457.554289333,214280.913465333,594869.173440333,31534.1938276667,四川东材科技集团股份有限公司,四川省,5.77 -507827038,690052.603181786,422522.420147987,1589615.70303614,134419.051238286,潮州三环(集团)股份有限公司,广东省,6.2 -2349737110,18351.1885185589,10604.4056748188,26352.8730443333,6196.09279783333,无锡红光微电子股份有限公司,江苏省,4.42 -505990558,2704.80500286583,1562.99683220306,3884.18345646195,245.50229,铜陵佳友科技有限公司,安徽省,3.59 -221048382,157338.070008167,103120.752683167,993163.7559685,352447.843621667,云南省贵金属新材料控股集团股份有限公司,云南省,6.0 -2348910693,26926.1598385298,15632.4205943617,40928.6516936667,4641.11761583333,北京康美特科技股份有限公司,北京市,4.61 -2342515031,55858.3214985777,32278.2527620118,80214.2735023883,5069.99426166667,苏州住友电木有限公司,江苏省,4.9 -2360390148,6393.17546131924,3694.35614884361,9180.79726072824,580.27814,广东施奈仕实业有限公司,广东省,3.96 -2317568755,11034.5563371667,7291.74244,86496.1049655,7858.70136516667,深圳科创新源新材料股份有限公司,广东省,4.94 -2349511062,8646.87845536109,4996.67947221875,12417.1843111667,1190.53784783333,江苏明昊新材料科技股份有限公司,江苏省,4.09 -500189853,22867.8968424112,13214.4277631714,32839.005586451,2075.61027,东莞升洋焊锡材料有限公司,广东省,4.52 -18065940,191013.048499246,96582.5538206939,867380.822769857,143283.010690286,北京君正集成电路股份有限公司,北京市,5.94 -2333993502,206465.644948888,142992.065005962,241630.438272143,17415.7935534286,合肥新汇成微电子股份有限公司,安徽省,5.38 -433384648,13130.5988320941,7587.63916724033,18855.945143188,1191.802026,牡丹江市北亚硬质合金有限责任公司,黑龙江省,4.28 -344181818,162948.972334805,104126.347671517,466055.759069286,79181.2545228571,青岛高测科技股份有限公司,山东省,5.67 -1104420298,86588.4830698333,50706.5640115,1206682.12055083,213731.195733667,中微半导体设备(上海)股份有限公司,上海市,6.08 -2349349655,8916.26246416139,5152.34553759312,12804.0280612,1116.3192482,苏州博洋化学股份有限公司,江苏省,4.11 -420984285,223613.011910333,158257.78831,1015669.78454783,62168.8641543333,深圳新宙邦科技股份有限公司,广东省,6.01 -2329836516,78826.6177775,56812.0715446667,203111.819117167,4786.47693733333,江阴江化微电子材料股份有限公司,江苏省,5.31 -27599908,65243.1752206425,37701.3781343527,93691.2130710213,5921.81281333333,北京航天晨信科技有限责任公司,北京市,4.97 -2350719552,1767.01581175,997.23466825,55246.80543625,11314.5121375,深圳好博窗控技术股份有限公司,广东省,4.74 -3216066502,47519.3914293237,25919.6030558896,183625.261502,20677.0661462857,楚天龙股份有限公司,广东省,5.26 -39698451,107938.314838978,39590.1075543603,412101.092700429,69378.6032017143,东方通信股份有限公司,浙江省,5.62 -2351643794,24220.299343844,13995.9261792729,34781.097314682,2198.361415,亚洲信用卡厂(深圳)有限公司,广东省,4.54 -2351192662,8851.83008107238,5548.49697731345,27867.47160725,3416.11452834962,河北晶禾电子技术股份有限公司,河北省,4.45 -865049663,87774.8053041193,59882.7303796437,298504.191277714,43328.108973,国民技术股份有限公司,广东省,5.47 -891649,85550.3230285109,36367.0451934161,230945.34964,25810.7164891429,恒宝股份有限公司,江苏省,5.36 -3424978618,31885.9688027932,21504.6483379033,177114.294382333,56086.1265501667,深圳市智微智能科技股份有限公司,广东省,5.25 -3145156061,245.891363896894,142.090621109369,353.107586951086,22.31839,北京中星微人工智能芯片技术有限公司,北京市,2.55 -281599332,64820.07552,40154.6568665,558302.417650333,40598.0444641667,金卡智能集团股份有限公司,浙江省,5.75 -79938367,364886.103943167,192426.6793045,3404308.61500033,438207.673933167,海信视像科技股份有限公司,山东省,6.53 -864169770,170444.206583047,110508.776061746,469960.309361,24457.7740034286,深圳市聚飞光电股份有限公司,广东省,5.67 -2310296367,37034.8887722,31909.4172092,800509.2176356,31554.9076322,澜起科技股份有限公司,上海市,5.9 -774611690,87455.3617593286,50536.8975745657,125588.598425603,7937.90737666667,成都大唐线缆有限公司,四川省,5.1 -2350442566,24785.8494808069,14322.7346078244,35593.2447646695,2249.693712,无锡友达电子有限公司,江苏省,4.55 -654461595,14660.1619921667,11316.6484308333,119189.010378333,8316.87563333333,上海灿瑞科技股份有限公司,上海市,5.08 -383463860,498520.151164562,288074.525237136,715890.321784631,45248.303886,广东虹勤通讯技术有限公司,广东省,5.85 -463659395,164973.071000475,103647.445394252,518579.052314833,39793.0929578333,深圳市奋达科技股份有限公司,广东省,5.71 -2347105663,7670.18126121354,4432.28587679994,11014.61699875,4603.6098265,深圳市百泰实业股份有限公司,广东省,4.04 -504638253,84443.6902996838,49855.5442456137,204519.3508715,51230.2114925,珠海市杰理科技股份有限公司,广东省,5.31 -519195163,1924.04639447068,1111.82817851309,2762.99,269.27,深圳市迪浦电子有限公司,广东省,3.44 -3221578464,6393.17546131924,3694.35614884361,9180.79726072824,580.27814,北京电星互动文化传媒有限公司,北京市,3.96 -2316256865,31675.2583182562,18154.1646929991,146872.233407667,30518.2317446667,广州慧智微电子股份有限公司,广东省,5.17 -3269840248,368.837045845341,213.135931664054,529.661380426629,33.477585,安徽创矽电子科技有限公司,安徽省,2.72 -1675147952,16925.06773,12545.4403666,86939.851294,9412.2279396,广州安凯微电子股份有限公司,广东省,4.94 -29223617,49351.6354965,38030.0537195,336478.787652167,25356.7104388333,青岛东软载波科技股份有限公司,山东省,5.53 -2553848709,15982.9386532981,9235.89037210901,22951.9931518205,1450.69535,深圳智微电子科技股份有限公司,广东省,4.36 -168035745,4475.22282292347,2586.04930419052,6426.55808250976,406.194698,成都艾希联科技有限公司,四川省,3.81 -510149116,4130.97491346782,2387.12243463741,5932.20746077824,374.948952,深圳市宝视达科技有限公司,广东省,3.77 -5591349,214284.563403751,124927.075093795,1154545.83667914,44936.3798348571,北京四维图新科技股份有限公司,北京市,6.06 -274839085,5072.9571540186,2931.45566990296,7284.9230285,1251.8898265,上海长合信息技术股份有限公司,上海市,3.86 -4209347174,10573.3286475664,6109.89670770289,15183.6262388967,959.69077,四川锦路通科技有限公司,四川省,4.18 -413142822,33691.2724915977,19012.8064225955,295228.181493667,9677.11797866667,北京弘高创意建筑设计股份有限公司,北京市,5.47 -951988821,25605.8899302788,18756.1741981746,351800.143148667,88668.7767376667,武汉帝尔激光科技股份有限公司,湖北省,5.55 -1587526,37281.2763304483,20821.6870507603,264083.505326,37562.7044782857,北京北信源软件股份有限公司,北京市,5.42 -3402194899,614.728409742234,355.226552773424,882.768967377713,55.795975,吉林省依岚机器人科技有限公司,吉林省,2.95 -730857,170484.678968513,98516.1639691628,244821.260286086,15474.0837333333,北京机械工业自动化研究所有限公司,北京市,5.39 -27085933,39068.3169418316,24985.5123183443,81807.0237951429,3512.25453285714,观典防务技术股份有限公司,北京市,4.91 -24495941,68018.9182948103,41411.5321373808,343277.487442714,80497.7686304286,瑞斯康达科技发展股份有限公司,北京市,5.54 -2424229017,114276.893374667,77926.1367106667,500826.828284333,41132.540103,湖北鼎龙控股股份有限公司,湖北省,5.7 -3118428071,245.891363896894,142.090621109369,353.107586951086,22.31839,浙江出彩智能科技有限公司,浙江省,2.55 -3297178263,6721.03061318177,3883.81031032277,9651.60737666299,610.035993333333,安徽徽昂光电科技有限公司,安徽省,3.98 -441623911,79201.8446421667,54549.9474813333,240891.492164333,46601.7746505,东莞铭普光磁股份有限公司,广东省,5.38 -2316150629,3193.75060666667,2061.597836,93411.1801021667,20442.4057828333,深圳英集芯科技股份有限公司,广东省,4.97 -2327057709,23544.9442314765,13440.4003796565,68644.06669975,18862.75571075,苏州华之杰电讯股份有限公司,江苏省,4.84 -2624175,112528.502696921,68592.2842455949,676577.778208429,45047.728384,北京旋极信息技术股份有限公司,北京市,5.83 -3483100980,491.782727793788,284.181242218739,706.215173902172,44.63678,公主岭市王岩口腔诊所有限公司,吉林省,2.85 -781386116,141735.041227833,75482.3393631667,509573.936014,65785.0702958333,国光电器股份有限公司,广东省,5.71 -3222821993,7991.46932664906,4617.94518605451,11475.9965759103,725.347675,象山金钇光电科技有限公司,浙江省,4.06 -10398718,769033.670522573,491078.248113787,2870403.42429771,537996.506329429,中国长城科技集团股份有限公司,广东省,6.46 -3042364033,245.891363896894,142.090621109369,353.107586951086,22.31839,上海津领信息科技有限公司,上海市,2.55 -2342518227,9173.79330924141,5301.16214161011,13173.8503023333,3045.84492716667,江苏欧密格光电科技股份有限公司,江苏省,4.12 -3068358389,1811.95903660257,1047.05745193863,2602.029095,298.473805182015,无锡汉咏科技股份有限公司,江苏省,3.42 -20751117,15716.6102843333,8183.32674633333,416800.384882667,41335.5048401667,上海贝岭股份有限公司,上海市,5.62 -3449575456,705.462014166667,404.564843666667,98147.2591208333,8331.321303,峰岹科技(深圳)股份有限公司,广东省,4.99 -3440374619,5071.89578685606,2930.84234897554,7283.3988725,2753.40906483333,浙江信测通信股份有限公司,浙江省,3.86 -3168979780,312036.140785158,180312.99818779,448093.527840928,28322.03691,华域视觉科技(上海)有限公司,上海市,5.65 -2962064709,10650.3258155645,6154.39024033911,15294.1965483333,3870.76790783333,上海中基国威电子股份有限公司,上海市,4.18 -3151203276,341884.6623548,201430.568992,477385.6924028,28574.494008,合肥颀中科技股份有限公司,安徽省,5.68 -2334772533,28252.9257821369,16326.2170290132,40572.07333,8232.49431216667,南京泰通科技股份有限公司,江苏省,4.61 -38567125,55215.5674613333,32280.1155033333,195121.699532833,23741.5776591667,杭州星帅尔电器股份有限公司,浙江省,5.29 -2338894532,7130.84955300992,4120.62801217171,10240.1200215815,647.23331,宁波锦澄电子科技股份有限公司,浙江省,4.01 -270141231,72968.2622364032,42165.3918142054,104784.676427735,6622.9822325,贵州雅光电子科技股份有限公司,贵州省,5.02 -220783142,7868.5236447006,4546.89987549982,11299.4427824348,714.18848,麦歌恩电子(上海)有限公司,上海市,4.05 -3407754893,232859.633511805,168326.909166578,411069.08997625,40891.55866,比亚迪半导体股份有限公司,广东省,5.61 -9278530,70406.8938624773,40685.2811776494,101106.472396994,6390.49900333333,北京银联金卡科技有限公司,北京市,5.0 -2323580212,16597.6670630403,9591.11692488244,23834.7621191983,1506.491325,深圳市美莱雅科技有限公司,广东省,4.38 -2331160070,3255.79612835197,1881.39220000014,4675.42371666667,794.0237395,南通光合生物技术股份有限公司,江苏省,3.67 -2349345463,74136.2462149135,42840.3222644749,106461.937465753,6728.994585,成都海威华芯科技有限公司,四川省,5.03 -2350687852,11074.7830890728,6399.66684001862,15903.7302921667,4029.26472366667,江苏钜芯集成电路技术股份有限公司,江苏省,4.2 -2357754148,8015.82834302686,4632.02127116739,11510.9768751667,3729.40010633333,广芯电子技术(上海)股份有限公司,上海市,4.06 -3173999388,16720.6127449888,9662.16223543712,24011.3159126738,1517.65052,东方微电科技(武汉)有限公司,湖北省,4.38 -501323741,66833.3625173174,43673.4697465961,220671.160353143,45867.2232541429,浙江大立科技股份有限公司,浙江省,5.34 -2311337085,19127.0147477191,11036.5029958297,112145.035851286,36647.5253237143,上海安路信息科技股份有限公司,上海市,5.05 -2950325617,19318.22026519,11163.2140011207,27741.5604758333,5855.69548783333,深圳市汇春科技股份有限公司,广东省,4.44 -2350701298,2458.91363896894,1420.90621109369,3531.07586951086,223.1839,深圳市玛琪电子科技有限公司,广东省,3.55 -2322658897,1721.23954727826,994.634347765586,2471.7531086576,156.22873,深圳市好通家实业有限公司,广东省,3.39 -2347015781,41626.2975832227,25542.5692075516,141575.867817429,28732.6177297143,苏州盛科通信股份有限公司,江苏省,5.15 -24610687,6738738.84243147,3834842.07575342,24477540.6526928,2602016.44544083,潍柴动力股份有限公司,山东省,7.39 -181655991,273187.085037167,140652.672426167,1074612.49761317,1582.68336616667,网宿科技股份有限公司,上海市,6.03 -2326956863,124019.549713435,73785.5926887248,540313.3684405,76558.826568734,南京国博电子股份有限公司,江苏省,5.73 -3270918801,15859.9929713496,9164.84506155432,22775.4393583451,1439.536155,浙江康鹏半导体有限公司,浙江省,4.36 -7299120,86887.22406325,46503.9275985,158305.75064575,29562.480612,北京通美晶体技术股份有限公司,北京市,5.2 -557266995,12727.7263021028,7354.83551319098,18277.4077571667,1541.1883505,上海宇昂水性新材料科技股份有限公司,上海市,4.26 -2357759100,9393.05010086134,5427.86172637791,13488.7098215315,852.562498,兰州华亚碳化硅有限公司,甘肃省,4.13 -695879282,245.891363896894,142.090621109369,353.107586951086,22.31839,长兴县煤山石墨炉料厂,浙江省,2.55 -2314301730,245.891363896894,142.090621109369,353.107586951086,22.31839,哈尔滨滨大阀门销售有限公司,黑龙江省,2.55 -3118917053,3745.07570646035,2235.78648897479,34776.380083,7562.35984084442,钰泰半导体股份有限公司,江苏省,4.54 -648145286,5614.51947564574,3244.4025153306,8062.62323538314,509.603238333333,东莞高辉光电科技有限公司,广东省,3.91 -4091219112,614.728409742235,355.226552773424,882.768967377716,55.795975,深圳市盈享电子有限公司,广东省,2.95 -60716715,592169.358539127,384961.940366283,1120885.29632114,52097.0039868571,东江环保股份有限公司,广东省,6.05 -2982872611,8421.77921346862,4866.60377299591,12093.9348530747,764.4048575,长春精测光电技术有限公司,吉林省,4.08 -3051771738,42617.058969,38615.9713255,335052.885705,119431.036400333,思特威(上海)电子科技股份有限公司,上海市,5.53 -1237811030,14876.4275157621,8596.48257711685,21363.0090105407,1350.262595,上海华元创信软件有限公司,上海市,4.33 -814834276,491.782727793788,284.181242218739,706.215173902172,44.63678,合肥迅驰电子科技有限责任公司,安徽省,2.85 -3339921892,3196.58773065962,1847.1780744218,4590.39863036412,290.13907,安徽新芯威半导体有限公司,安徽省,3.66 -2358215091,13289.0210914582,7679.18494938513,19083.4443966667,2443.928088,湖南康通电子股份有限公司,湖南省,4.28 -6823511,78869.4760125386,47996.3703655252,256662.443677,49246.3736734781,龙芯中科技术股份有限公司,北京市,5.41 -2318300058,9211.4190974,8204.0656666,166804.0972472,22511.6174346,上海南芯半导体科技股份有限公司,上海市,5.22 -30918572,15257.2196295671,8816.52685645477,21909.8382375,6399.88976466667,先控捷联电气股份有限公司,河北省,4.34 -173280333,248425.451059374,142652.70938459,878978.625317428,71268.6104547143,欧普照明股份有限公司,上海市,5.94 -1217010297,90629.2798441586,52928.8445056824,472859.626137,86929.247462,湖南国科微电子股份有限公司,湖南省,5.67 -227353488,175499.644065506,111018.373589625,674848.280106857,141511.018406,深圳麦格米特电气股份有限公司,广东省,5.83 -4728160558,6146862.45588483,3440255.60792112,21708037.884611,3437661.391239,海尔智家股份有限公司,山东省,7.34 -2313858141,16878.5286234786,10924.6070951714,54919.3020473333,8636.660643,苏州锴威特半导体股份有限公司,江苏省,4.74 -2311676659,91225.6960057476,52715.6204315761,131002.914758853,8280.12269,西安航天远征流体控制股份有限公司,陕西省,5.12 -1048928993,32609.7984571027,18843.8765948852,46828.6769476667,13303.533159,上海南麟电子股份有限公司,上海市,4.67 -966536464,4523.96805911779,2614.21719417741,6496.557746,957.122635333333,安徽中瑞通信科技股份有限公司,安徽省,3.81 -3464313484,16473.8484456667,14922.002517,126101.603055167,6330.15329883333,江苏帝奥微电子股份有限公司,江苏省,5.1 -338952484,14110.7472545758,8154.02708718447,20263.468526,6999.23901883333,山东德佑电气股份有限公司,山东省,4.31 -27042865,1497706.54820932,865463.716586106,2150752.82359567,291043.484399,许继集团有限公司,河南省,6.33 -3104545193,105021.775873296,73402.8541622617,268651.229376429,36083.9444402857,深圳欧陆通电子股份有限公司,广东省,5.43 -9620005,295597.151853333,194730.920618333,2678794.80455533,681912.489464,上海韦尔半导体股份有限公司,上海市,6.43 -864166372,88655.6666795,53753.15834,298897.386987333,27638.9844123333,江苏云意电气股份有限公司,江苏省,5.48 -33822284,7821705.81265451,4340541.90024414,31773080.975276,3117341.894336,珠海格力电器股份有限公司,广东省,7.5 -3312199997,138830.090012117,91789.4512288681,333225.515573857,39124.2209532857,河北中瓷电子科技股份有限公司,河北省,5.52 -591975267,4917.82727793788,2841.81242218739,7062.15173902172,446.3678,沧州凯润电子科技有限公司,河北省,3.85 -3357541349,90822.4366201021,66907.2350655535,148235.929229143,6191.05493557143,杭州美迪凯光电科技股份有限公司,浙江省,5.17 -708388905,3442.47909455651,1989.26869553117,4943.5062173152,312.45746,南通锦程塑料制品厂,江苏省,3.69 +2336923756,33520.0074243659,19369.8493474378,48135.7651144,9506.8596914,浙江浩腾电子科技股份有限公司,浙江省,4.68 +3191869223,737.674091690682,426.271863328108,1059.32276085326,66.95517,长治县尚动体育商贸有限公司,山西省,3.03 +591350440,6098.10582464297,3523.84740351236,8757.06815638693,553.496072,汉川市稳达电子有限公司,湖北省,3.94 +16210433,133784.735189773,87440.0590440867,577898.448669,118544.841715143,北京经纬恒润科技股份有限公司,北京市,5.76 +517675473,8852.08910028818,5115.2623599373,12711.8731302391,803.46204,广州华工科技开发有限公司,广东省,4.1 16116663,93258.3100837016,52399.5479796363,350692.109563571,26734.2883584286,珠海航宇微科技股份有限公司,广东省,5.54 -784491064,36676.1406432416,26183.5340754385,78563.0454985714,4984.05170328571,腾景科技股份有限公司,福建省,4.9 -2329395956,983.565455587575,568.362484437478,1412.43034780434,89.27356,辽阳县力通机械制造有限公司,辽宁省,3.15 -2348912438,15033.7874138907,8687.41446389993,21588.9826805,6642.99890894431,广东圣帕新材料股份有限公司,广东省,4.33 -520408144,223023.467054483,128876.193346198,320268.581364635,20242.77973,国巨电子(东莞)有限公司,广东省,5.51 -2351592628,41820.4531887686,22960.7164579339,141041.529103571,26807.1478321429,无锡市德科立光电子技术股份有限公司,江苏省,5.15 -300186799,1913582.75295502,1234953.81045746,2517803.40044929,175073.587292714,天水华天科技股份有限公司,甘肃省,6.4 -578803019,16290.3028581692,9413.50364849573,23393.3776355094,1478.5933375,深圳市光脉电子有限公司,广东省,4.37 -343932526,63566.4602922289,45042.3466785544,273327.568779,48343.29187,上海艾为电子技术股份有限公司,上海市,5.44 -2349375343,4807.3848604464,2777.99223977234,6903.55301916667,1503.62640083333,苏州康尼格电子科技股份有限公司,江苏省,3.84 -2325170042,10068.2861576175,5818.05318808436,14458.3696373333,1149.84855133333,深圳电通纬创微电子股份有限公司,广东省,4.16 +2349179532,86395.8851802894,53460.7259542931,370985.083067429,79336.7949427143,上能电气股份有限公司,江苏省,5.57 +728969035,14556.7687426961,8411.76476967468,20903.9691475043,1321.248688,鞍钢国贸攀枝花有限公司,四川省,4.32 +471121089,110315.223507165,67545.9035352219,379259.016534,54052.4011497143,小熊电器股份有限公司,广东省,5.58 +331545755,14213.7203367523,8213.53104442853,20411.3410498333,6911.28954133333,西安西驰电气股份有限公司,陕西省,4.31 +2326722141,44506.3368653378,25718.4024207959,63912.4732381466,4039.62859,常州志得电子有限公司,江苏省,4.81 +2337727838,16720.6127449888,9662.16223543712,24011.3159126738,1517.65052,宁波市光科电子有限公司,浙江省,4.38 +2327605629,23484.3474805809,13570.6495217263,33724.247727,5742.52886966667,常州星海电子股份有限公司,江苏省,4.53 +2349705416,89934.766345289,51969.6446707519,129149.09992736,8162.9511425,敦南科技(无锡)有限公司,江苏省,5.11 +214851100,189239.824923211,102275.575523589,654637.114385,73629.7303001429,江西联创光电科技股份有限公司,江西省,5.82 +3111603340,689725.275730787,398564.192211781,990466.781397796,62603.08395,内蒙古中环晶体材料有限公司,内蒙古自治区,6.0 +70634828,4412979.01454591,2550081.13819878,6337174.05278817,380474.996249,红狮控股集团有限公司,浙江省,6.8 +420984285,223613.011910333,158257.78831,1015669.78454783,62168.8641543333,深圳新宙邦科技股份有限公司,广东省,6.01 +203314437,3196.58773065962,1847.1780744218,4590.39863036412,290.13907,洛阳市洁晶清洗材料有限公司,河南省,3.66 +1160497810,14271.5451700122,8246.94566437788,20494.379294913,1146.51037725,安徽鑫固环保股份有限公司,安徽省,4.31 +3147958370,245.891363896894,142.090621109369,353.107586951086,22.31839,云南科帅建材有限公司,云南省,2.55 +596368303,2090.0765931236,1207.77027942964,3001.41448908423,189.706315,洛阳黄腾实业有限公司,河南省,3.48 +562681526,983.565455587575,568.362484437478,1412.43034780434,89.27356,宜昌市特种化工材料厂,湖北省,3.15 +178452970,37666.5331665897,23191.4820526959,66586.1753208333,3139.22786,山西锦波生物医药股份有限公司,山西省,4.82 +2448521375,28277.5068481428,16340.4214275775,40607.3724993749,2566.61485,湖州振民丝带有限公司,浙江省,4.61 +3151377261,3934.2618223503,2273.44993774991,5649.72139121738,357.09424,汕尾市三华科技工程有限公司,广东省,3.75 +31732840,7720.98882636246,4461.6455028342,11087.5782302641,700.797446,浙江圆融科技有限公司,浙江省,4.04 +5849940,18652802.5217652,10302896.7482042,20855221.2857143,2169804.72857143,中国铝业股份有限公司,北京市,7.32 +2424229017,114276.893374667,77926.1367106667,500826.828284333,41132.540103,湖北鼎龙控股股份有限公司,湖北省,5.7 +71271700,38578.465022,21210.6641386667,119513.037170333,5234.29972133333,杭州格林达电子材料股份有限公司,浙江省,5.08 +410030851,303233.770019603,161013.291658491,499167.649625857,37424.9069162857,石大胜华新材料集团股份有限公司,山东省,5.7 +367669349,5105668.05830967,3059216.88747333,6702847.66086067,537603.399401,蓝思科技股份有限公司,湖南省,6.83 +771821595,1743718.4726489,1239245.99251298,2657759.780232,89907.0452243206,上海和辉光电股份有限公司,上海市,6.42 +197362120,3688.37045845341,2131.35931664054,5296.61380426629,334.77585,孟州市渤洋商贸有限公司,河南省,3.72 +598808584,1917.95263839577,1108.30684465308,2754.23917821847,174.083442,贵州万通公路工程建设管理有限公司,贵州省,3.44 +2353389310,491.782727793788,284.181242218739,706.215173902172,44.63678,莆田市荔城区黄石供销社化工日什门市部,福建省,2.85 +3462551351,5901.39273352545,3410.17490662487,8474.58208682606,535.64136,无锡博加电子新材料有限公司,江苏省,3.93 +3226664625,8790.61625931396,5079.73970465996,12623.5962335013,797.8824425,珠海市优邦新材料有限公司,广东省,4.1 +2353549582,1229.45681948447,710.453105546847,1765.53793475543,111.59195,嘉峪关市恒信商贸有限责任公司,甘肃省,3.25 +961017,15307449.7727169,8845552.81379405,21981970.2732037,1982597.58563667,江苏沙钢集团有限公司,江苏省,7.34 +2978926070,20113.9135667659,11623.0128067464,28884.2006125988,1825.644302,长春长光圆辰微电子技术有限公司,吉林省,4.46 +543470507,100815.459197727,58257.1546548415,144774.110649946,9150.5399,上海仪电显示材料有限公司,上海市,5.16 +2314659369,15010.1739791614,8673.76922010587,21555.0730595,2023.7900685,三达奥克化学股份有限公司,辽宁省,4.33 +1444449910,2458.91363896894,1420.90621109369,3531.07586951086,223.1839,深圳市景荣工贸有限公司,广东省,3.55 +3195293647,123696.710615374,80944.4849282741,311480.209157857,33384.4062447143,常州强力电子新材料股份有限公司,江苏省,5.49 +1452048,28236967.2134157,17452589.831388,37654713.2389085,1884370.44367833,京东方科技集团股份有限公司,北京市,7.58 +688155470,5265525.41034568,3035619.83969163,7423857.02146943,375169.885145429,天马微电子股份有限公司,广东省,6.87 +495782506,153610.211526643,107409.509199715,340374.087803394,23731.1904788333,江苏南大光电材料股份有限公司,江苏省,5.53 +2337952436,101095.280241295,58418.8518582322,145175.942304,8845.106302,杭摩新材料集团股份有限公司,浙江省,5.16 +385766513,2458.91363896894,1420.90621109369,3531.07586951086,223.1839,沧州纹诚化工产品有限公司,河北省,3.55 +668539285,245.891363896894,142.090621109369,353.107586951086,22.31839,吉林省锦盛环保科技有限公司,吉林省,2.55 +2352421906,1844.1852292267,1065.67965832027,2648.30690213314,167.387925,甘谷县佳和源装饰工程有限公司,甘肃省,3.42 +9620005,295597.151853333,194730.920618333,2678794.80455533,681912.489464,上海韦尔半导体股份有限公司,上海市,6.43 +340603317,82514.5006295,61489.2451348333,374768.100063667,61999.93404,深圳市英威腾电气股份有限公司,广东省,5.57 +1099584865,17467.583741762,9901.78190096683,134282.276144857,26108.7323181429,上海润欣科技股份有限公司,上海市,5.13 +1694716470,368.837045845341,213.135931664054,529.661380426629,33.477585,桂林市鼎点视线资讯有限公司,广西壮族自治区,2.72 +3378606529,16234.4951829775,9381.25466217513,23313.2360916667,2904.19502883333,广东伟邦科技股份有限公司,广东省,4.37 +2962064709,10650.3258155645,6154.39024033911,15294.1965483333,3870.76790783333,上海中基国威电子股份有限公司,上海市,4.18 +2346894985,11560.7358163333,9288.7818575,98716.5901571667,12367.5736068333,芯海科技(深圳)股份有限公司,广东省,4.99 +13047525,25729.8668547908,14862.698818056,101396.621861,8499.25721783333,美芯晟科技(北京)股份有限公司,北京市,5.01 +2317722475,113914.63602124,67863.6853823933,411584.599214143,74064.8728134286,株洲宏达电子股份有限公司,湖南省,5.61 +664591135,108951.980443973,62958.9194473358,156458.406258811,12223.0382566667,中国振华集团云科电子有限公司,贵州省,5.19 +3011933107,822894.016490433,511792.122903663,3172989.48485757,952050.331326571,北方华创科技集团股份有限公司,北京市,6.5 +308365582,66114.1563245331,40052.181389197,254426.881415714,58653.2979681429,唯捷创芯(天津)电子技术股份有限公司,天津市,5.41 +2323069589,14261.6991060198,8241.25602434343,20480.240043163,1294.46662,成都嘉晨科技有限公司,四川省,4.31 +1717102128,21392.5486590298,12361.8840365151,30720.3600647445,1941.69993,上海芯海集成电路设计有限公司,上海市,4.49 +2350883312,8360.30637249438,4831.08111771856,12005.6579563369,758.82526,无锡市辉煌电子材料有限公司,江苏省,4.08 +2311838590,53398.0289114503,26546.600225041,80495.2837445714,310.151853,上海华岭集成电路技术股份有限公司,上海市,4.91 +643954924,48262.2453475,34033.3587131667,287207.000554333,147799.326854167,深圳佰维存储科技股份有限公司,广东省,5.46 +3135349256,23988.7417005,21562.453113,213376.093520167,11441.7133435,北京华峰测控技术股份有限公司,北京市,5.33 +290636928,226620.022107927,135613.502981039,651101.825109143,212453.632558571,大连连城数控机器股份有限公司,辽宁省,5.81 +301209792,51111.2877957612,39283.408485579,372200.412021167,111866.716299773,华海清科股份有限公司,天津市,5.57 +3221581379,983.565455587575,568.362484437479,1412.43034780435,89.27356,吉林省瑞恩嘉华科技开发有限公司,吉林省,3.15 +2347561020,23605.5709341018,13640.6996264995,33898.3283473042,2142.56544,安徽北方微电子研究院集团有限公司,安徽省,4.53 +2348887010,2458.91363896894,1420.90621109369,3531.07586951086,223.1839,徐州精工密封科技有限公司,江苏省,3.55 +24653920,63925.6287144089,38626.1648407043,301902.830405857,49184.7394994286,圣邦微电子(北京)股份有限公司,北京市,5.48 +4576816,1967.13091117515,1136.72496887496,2824.86069560869,178.54712,北京北方华虹微系统有限公司,北京市,3.45 +2325924904,737.674091690682,426.271863328108,1059.32276085326,66.95517,徐州坤元电子科技有限公司,江苏省,3.03 +37873062,859499.995818288,498140.77960258,1507073.36388473,184703.551339833,杭州士兰微电子股份有限公司,浙江省,6.18 +3305073093,31182.2025747926,17745.7252610084,193402.871516286,23609.5935602857,苏州国芯科技股份有限公司,江苏省,5.29 +2348999904,56606.184156163,38886.475670527,182773.084320143,14473.9632724286,苏州长光华芯光电技术股份有限公司,江苏省,5.26 +2357906989,329904.78255419,229508.135046523,522663.435541429,57230.8354225714,生益电子股份有限公司,广东省,5.72 +35404067,75497.4054305075,43975.6890011485,158010.732795714,54977.5046671429,利尔达科技集团股份有限公司,浙江省,5.2 +1698501971,817747.748125193,484741.776653627,4238541.615985,178848.8659345,国网信息通信产业集团有限公司,北京市,6.63 +618469306,50772.0031132101,29339.0761797877,72910.1633333333,15237.2533333333,东集技术股份有限公司,江苏省,4.86 +3409973515,20979.9426281667,14316.5164353333,220003.584145833,72557.5603221667,成都雷电微力科技股份有限公司,四川省,5.34 +515770253,2054.1292125,554.6901695,25905.298497,3549.5813945,无锡硅动力微电子股份有限公司,江苏省,4.41 +1052742800,6884.95818911303,3978.53739106234,9887.01243463041,624.91492,上海瑞业自动化有限公司,上海市,4.0 +352084034,45854.1045175303,26497.222545977,65847.9091798333,19752.3217678333,广东天波信息技术股份有限公司,广东省,4.82 +742704658,19118.0535429835,11047.5457912535,27454.1148854469,1735.2548225,长春市公路规划勘测设计院有限公司,吉林省,4.44 +805940123,64607.9558639089,37334.3106964868,92779.018471398,5864.1569725,阿坝州禧龙工业硅有限责任公司,四川省,4.97 +286335813,14753.4818338136,8525.43726656217,21186.4552170652,1339.1034,临沧市临翔区通临冶炼硅厂,云南省,4.33 +2310534839,110282.276707757,63727.6435675522,158368.752747562,10009.797915,宁夏协鑫晶体科技发展有限公司,宁夏回族自治区,5.2 +3358892171,96134.749442,88469.6104663333,304662.269615667,39066.599245,华耀光电科技股份有限公司,内蒙古自治区,5.48 +280281699,1475.34818338136,852.543726656217,2118.64552170652,133.91034,卫辉市恒礼饲料机械厂,河南省,3.33 +2310406050,11244.4463366792,6497.70833220346,16147.3719516667,3444.305514,山东常青树胶业股份有限公司,山东省,4.21 +3268669333,2028.60375214937,1172.2476241523,2913.13759234646,184.1267175,苏州诺天美新材料技术有限公司,江苏省,3.46 +2345982379,4794.88159598943,2770.76711163271,6885.59794554617,435.208605,深圳市昆业激光设备科技有限公司,广东省,3.84 +80158773,12635.7451105,6465.9750325,23799.6983851667,1474.810014,江苏华盛天龙光电设备股份有限公司,江苏省,4.38 +78979697,3444820.24820822,2409945.69767362,8167350.12541314,1224407.85554914,晶科能源股份有限公司,江西省,6.91 +644252759,1048581.46678551,276848.883725489,666390.349651286,97533.245574,昆山龙腾光电股份有限公司,江苏省,5.82 +59234665,251695.047657333,199428.352979167,1787952.23306117,656252.890643167,浙江晶盛机电股份有限公司,浙江省,6.25 +758879940,50189.7546808333,31824.9240195,456240.867713667,20053.2928708333,上海新阳半导体材料股份有限公司,上海市,5.66 +2989649772,353266.3068118,314586.6119876,816569.9774388,71733.723177,江苏美科太阳能科技股份有限公司,江苏省,5.91 +2728939,359757.813985901,257844.195027811,1159738.28177866,59890.9064983333,北京燕东微电子股份有限公司,北京市,6.06 +157087137,4917.82727793788,2841.81242218739,7062.15173902172,446.3678,安美特(中国)化学有限公司重庆分公司,重庆市,3.85 +2334430421,58809.0178653405,33983.3402153242,84451.5645458014,5337.81494166667,广州明毅电子机械有限公司,广东省,4.93 +6333996,46655513.9670089,26811974.5509457,114285323.540033,18677786.4881532,中国航空工业集团有限公司,北京市,8.06 +169978927,1674991.23124933,1348118.9408745,2598689.7056225,65028.9291661667,合肥晶合集成电路股份有限公司,安徽省,6.41 +205960791,1610605.73638088,1122850.70171641,4979832.25947843,629669.839666143,欣旺达电子股份有限公司,广东省,6.7 +2349345463,74136.2462149135,42840.3222644749,106461.937465753,6728.994585,成都海威华芯科技有限公司,四川省,5.03 +3312358902,66438.2226519953,41878.7735649207,237082.540978857,87569.4877398571,沈阳芯源微电子设备股份有限公司,辽宁省,5.37 +1208566436,46908.019639,39072.7568476667,1524098.93056733,693891.525553167,深圳市捷佳伟创新能源装备股份有限公司,广东省,6.18 +26487185,40598488.8632438,14942068.8416382,36718835.9415943,4375803.95224186,宝山钢铁股份有限公司,上海市,7.56 +2350443114,3196.58773065962,1847.1780744218,4590.39863036412,290.13907,无锡凯世通科技有限公司,江苏省,3.66 +3118140206,3934.2618223503,2273.44993774991,5649.72139121738,357.09424,费勉仪器科技(南京)有限公司,江苏省,3.75 +676597455,40504.6693875284,23406.0014955096,58165.9552455,5785.2713515,云南北方奥雷德光电科技股份有限公司,云南省,4.76 +2333843479,25746.1035943333,12125.48027,54175.2774613333,8385.40003966667,山东华光光电子股份有限公司,山东省,4.73 +872394725,25724.5710310483,15462.1731125487,55978.4459711429,7283.82543785714,北京凯德石英股份有限公司,北京市,4.75 +3386978614,380298.49535,318997.212765333,706035.714515333,26685.6864223333,杭州中欣晶圆半导体股份有限公司,浙江省,5.85 +3146262808,491.782727793788,284.181242218739,706.215173902172,44.63678,吉林博纳通智能装备有限公司,吉林省,2.85 +815013249,245.891363896894,142.090621109369,353.107586951086,22.31839,四川瑞能硅材料有限公司,四川省,2.55 +3088175489,5037.29651092296,2910.84883424059,7233.7132445,1552.15710083333,福建迈纬通信科技股份有限公司,福建省,3.86 +2322986586,50682.8774590216,33300.496887861,187213.696394286,50000.3910323838,深圳新益昌科技股份有限公司,广东省,5.27 +3154580688,245.891363896894,142.090621109369,353.107586951086,22.31839,深圳市骐电科技有限公司,广东省,2.55 +3408810051,245.891363896894,142.090621109369,353.107586951086,22.31839,吉林省古能煤炭有限公司,吉林省,2.55 +3043532438,26064.4845730707,15061.6058375932,37429.4042168151,2365.74934,江苏和睿半导体科技有限公司,江苏省,4.57 +443872531,217273.703527667,142463.186399833,490405.746949167,14931.5790275,惠州光弘科技股份有限公司,广东省,5.69 +2313262775,573.746515759419,331.544782588529,823.917702885868,52.0762433333333,智造科技(天津)有限公司,天津市,2.92 +188458872,428752.574848217,247758.67967437,615701.92911371,38915.8326966667,合肥通富微电子有限公司,安徽省,5.79 +533879767,17933.2750664661,10362.9104834598,25752.73643,3428.43879433333,上海芯哲微电子科技股份有限公司,上海市,4.41 +314284469,93478.8051045442,56792.855184085,190929.033459167,18539.5011983333,四川华丰科技股份有限公司,四川省,5.28 +3380230725,39166.3897750939,22811.9905202641,126841.409082571,27414.5396071429,东莞市凯格精机股份有限公司,广东省,5.1 +1452190980,1967.13091117515,1136.72496887496,2824.86069560869,178.54712,深圳市昌迈科技有限公司,广东省,3.45 +2351960502,1475.34818338136,852.543726656217,2118.64552170652,133.91034,宁夏泰峰环保材料有限公司,宁夏回族自治区,3.33 +830662620,262637.565598167,177898.6218025,676303.217476167,73842.0312075,扬州扬杰电子科技股份有限公司,江苏省,5.83 +3398677646,36420.8435164999,21053.0034803726,78385.10020775,33245.58495675,矽电半导体设备(深圳)股份有限公司,广东省,4.89 +613464015,17409.1331735,10325.6691753333,220548.5172555,35552.7344381667,贵州振华风光半导体股份有限公司,贵州省,5.34 +2314892072,14999.3731977105,8667.52788767154,21539.5628040162,1361.42179,宜世摩(上海)机电科技有限公司,上海市,4.33 +170176299,9774.18171490151,5648.10218909744,14036.0265813057,887.1560025,安徽超元半导体有限公司,安徽省,4.15 +3070844997,17704.1782005764,10230.5247198746,25423.7462604782,1606.92408,旺矽科技(苏州)有限公司,江苏省,4.41 +3119505684,8852.08910028818,5115.2623599373,12711.8731302391,803.46204,深圳市永源微电子科技有限公司,广东省,4.1 +441623911,79201.8446421667,54549.9474813333,240891.492164333,46601.7746505,东莞铭普光磁股份有限公司,广东省,5.38 +11197684487,245.891363896894,142.090621109369,353.107586951086,22.31839,甘肃盛世康卓科技有限责任公司,甘肃省,2.55 +2345116311,32603.9042950622,24081.5051185234,105265.4537165,14325.7940763333,深圳市利和兴股份有限公司,广东省,5.02 +864375173,1149672.19369218,700199.62448716,2090262.333218,335912.648294,广东生益科技股份有限公司,广东省,6.32 +311225958,5011150.73333333,2442786.93333333,37042978.75,3874558.95,美的集团股份有限公司,广东省,7.57 +3032041158,12510.9034773473,7229.54241890765,17966.0434895,3629.2321895,江西亚中电子科技股份有限公司,江西省,4.25 +364288921,198862.141755,114281.9596365,359680.1101835,52439.8163758333,安徽鑫科新材料股份有限公司,安徽省,5.56 +235473780,93161.779706741,53834.4044800847,133783.1907025,28440.585602,烟台招金励福贵金属股份有限公司,山东省,5.13 +3274956187,53771.6768767569,34963.9640983052,147819.502282857,18758.9312998571,深圳市一博科技股份有限公司,广东省,5.17 +410419900,251300.973902625,145216.614773776,360875.95386401,22809.39458,建滔(衡阳)实业有限公司,湖南省,5.56 +658759701,100943.178639667,66458.1199206667,348057.194237667,16288.5044676667,宏昌电子材料股份有限公司,广东省,5.54 +1428342684,32933.0381671641,22688.1531399891,130057.0266575,9719.67009846261,烟台德邦科技股份有限公司,山东省,5.11 +2339188563,44515.98655263,32625.0798330998,118787.550664333,6638.528607,江苏联瑞新材料股份有限公司,江苏省,5.07 +3030943638,9999.582131807,5778.35192511436,14359.7085360108,907.614526666667,江苏东台实力工业材料有限公司,江苏省,4.16 +886706371,910959.463896573,526406.434041327,1308165.90305975,251454.78235725,信利光电股份有限公司,广东省,6.12 +2349168009,69505.2921948554,40164.2822335818,99811.7445781735,6308.66490666667,深圳市华汉伟业科技有限公司,广东省,5.0 +3123887630,253052.60274684,198944.214644704,495703.915701667,19222.0740129801,甬矽电子(宁波)股份有限公司,浙江省,5.7 +24673506,3731195.01695067,1819174.82755833,3657055.221448,291506.649439667,江苏长电科技股份有限公司,江苏省,6.56 +11164728143,327.855151862525,189.454161479159,470.810115934781,29.7578533333333,绍兴市琟淏科技有限公司,浙江省,2.67 +3137149148,172045.356209454,107364.175612185,476488.522676,57823.5951882857,杨凌美畅新材料股份有限公司,陕西省,5.68 +2338014857,983.565455587575,568.362484437478,1412.43034780434,89.27356,苏州海特金刚石制品有限公司,江苏省,3.15 +25980377,162597.260049167,98681.2832156667,292725.796894167,17536.2207033333,有研半导体硅材料股份公司,北京市,5.47 +3330358736,2590489.42170785,1496938.50599024,3720022.754053,383336.168066833,贵阳市工业投资有限公司,贵州省,6.57 +2348894245,140155.923780404,84124.7869805446,297024.681265143,11981.7573048571,晶瑞电子材料股份有限公司,江苏省,5.47 +29954548,757171.52339162,494430.604177194,1465408.31294514,133292.643730143,多氟多新材料股份有限公司,河南省,6.17 +247297633,202052.147628826,130670.773856231,555670.171633429,57328.2659905714,上海飞凯材料科技股份有限公司,上海市,5.74 +13854344,2183.367261,1044.04575316667,156323.376104667,15212.8059461667,长春吉大正元信息技术股份有限公司,吉林省,5.19 +27599908,65243.1752206425,37701.3781343527,93691.2130710213,5921.81281333333,北京航天晨信科技有限责任公司,北京市,4.97 +2328691869,1475.34818338136,852.543726656217,2118.64552170652,133.91034,辽宁奥润之智能科技有限公司,辽宁省,3.33 +891649,85550.3230285109,36367.0451934161,230945.34964,25810.7164891429,恒宝股份有限公司,江苏省,5.36 +23421122,98684.40071062,57025.7026052269,141713.844896369,8957.11385333333,北京博纳电气股份有限公司,北京市,5.15 +2959520478,245.891363896894,142.090621109369,353.107586951086,22.31839,武汉润赛科技有限公司,湖北省,2.55 +29452962,456144.931192807,269318.787489444,1898148.98546986,206077.306495286,广电运通集团股份有限公司,广东省,6.28 +33822284,7821705.81265451,4340541.90024414,31773080.975276,3117341.894336,珠海格力电器股份有限公司,广东省,7.5 +3392803162,39052.6952507718,22381.1925190257,203314.355079143,53110.2105447143,深圳市好上好信息科技股份有限公司,广东省,5.31 +5971532,1008031.2322245,724134.278732333,9825144.85496167,1410912.94534083,杭州海康威视数字技术股份有限公司,浙江省,6.99 +1524794108,1721.23954727826,994.634347765586,2471.7531086576,156.22873,乐清市奥宾仪表有限公司,浙江省,3.39 10437056,194286.929344781,116962.315280927,419389.225194167,1602.69784816667,广电计量检测集团股份有限公司,广东省,5.62 -3306665331,28691.8448431667,19979.0470871667,309295.834049333,16592.0700063333,芯原微电子(上海)股份有限公司,上海市,5.49 -23131812,71270.701868413,40132.0804564047,330063.943783714,29776.0587888571,北京东方中科集成科技股份有限公司,北京市,5.52 -3120341363,177544.316546708,129292.795388716,626033.402033857,102806.403100857,武汉精测电子集团股份有限公司,湖北省,5.8 +5979030,852256.443082667,520249.640571416,3928510.88177957,432935.855950143,康佳集团股份有限公司,广东省,6.59 +26895145,64220.5767790084,37110.460074383,92222.7301506667,26312.8551288333,深圳市华曦达科技股份有限公司,广东省,4.96 +1253552935,4169.08448783333,2457.4742155,82802.5928295,7680.27564083333,深圳市力合微电子股份有限公司,广东省,4.92 +518871190,71495.61696028,40216.6404385647,285907.847918286,31265.4563877143,武汉天喻信息产业股份有限公司,湖北省,5.46 +451074876,2704.80500286583,1562.99683220306,3884.18345646195,245.50229,辽宁锦瑞科技有限公司,辽宁省,3.59 +3420061649,16228.830017195,9377.98099321841,23305.1007387716,1473.01374,伏达半导体(合肥)股份有限公司,安徽省,4.37 +3030705543,32198.4806431751,20649.5178896648,178667.946073857,31454.7737075714,博通集成电路(上海)股份有限公司,上海市,5.25 +472355525,52006.023464193,30052.1663646316,74682.2546401547,4720.339485,大连金华录数码科技有限公司,辽宁省,4.87 +504638253,84443.6902996838,49855.5442456137,204519.3508715,51230.2114925,珠海市杰理科技股份有限公司,广东省,5.31 +2333118643,239263.230521304,172373.681819974,503263.306651,2627.35498357143,广东奥飞数据科技股份有限公司,广东省,5.7 +3073223227,655.710303725051,378.908322958318,941.620231869564,59.5157066666667,宿州市卡莉卡网络科技有限公司,安徽省,2.97 +2329891409,20251.8961688085,11564.4305506471,92839.725569,16599.245492,深圳市豪恩汽车电子装备股份有限公司,广东省,4.97 +762501019,4349.05646817433,2513.14289777876,6245.3793035,1574.0261515,上海巨灵信息技术股份有限公司,上海市,3.8 +23167049,53727.2630114713,31046.8007123972,77154.0077488123,4876.568215,和芯星通科技(北京)有限公司,北京市,4.89 +9746245,1972219.0,1288498.51666667,16197718.45,3484537.2,中兴通讯股份有限公司,广东省,7.21 +2347105663,7670.18126121354,4432.28587679994,11014.61699875,4603.6098265,深圳市百泰实业股份有限公司,广东省,4.04 +2351656365,3442.47909455652,1989.26869553117,4943.5062173152,312.45746,深圳市文巡科技有限公司,广东省,3.69 +3276276473,34511.71456575,23584.983009,210427.87389825,38035.9112945,江苏长晶科技股份有限公司,江苏省,5.32 +2944593082,29955.1995282138,17309.8918114251,43016.5909628333,3109.7546355,浙江九州量子信息技术股份有限公司,浙江省,4.63 +3031766093,61770.0523878608,39108.5984972732,120624.4426715,15181.6445878333,江西威尔高电子股份有限公司,江西省,5.08 +691978900,41426.5929149396,27850.7401976901,123666.718605143,5192.62385585714,深圳市南极光电子科技股份有限公司,广东省,5.09 +2719128520,8704.55428195004,5030.00798727168,12500.0085780684,790.071006,浙江临安印制电路板厂,浙江省,4.1 +3358087747,245.891363896894,142.090621109369,353.107586951086,22.31839,广东链与云科技有限公司,广东省,2.55 +3220049148,491.782727793788,284.181242218739,706.215173902172,44.63678,杭州宇链科技有限公司,浙江省,2.85 +1408183015,1475.34818338136,852.543726656217,2118.64552170652,133.91034,江阴零聚科技有限公司,江苏省,3.33 +2310406921,1967.13091117515,1136.72496887496,2824.86069560869,178.54712,沈阳元邦科技有限公司,辽宁省,3.45 +1651310523,3934.2618223503,2273.44993774991,5649.72139121738,357.09424,太原龙翔科技股份有限公司,山西省,3.75 +2350544061,144065.786951576,99941.0487918116,244530.312333667,28099.7294085,广州广合科技股份有限公司,广东省,5.39 +1605495,257596.668401,85002.5732115,6487457.39330417,1500442.86042433,紫光股份有限公司,北京市,6.81 +686380489,491.782727793788,284.181242218739,706.215173902172,44.63678,广州恒镭办公设备有限公司,广东省,2.85 +872030659,9471.76125177755,5473.34570005096,13601.7414633333,758.3442415,北京博大光通物联科技股份有限公司,北京市,4.13 +3222821993,7991.46932664906,4617.94518605451,11475.9965759103,725.347675,象山金钇光电科技有限公司,浙江省,4.06 +2343364952,130002.091445328,76439.3570200879,500689.1000915,189402.304441,锐捷网络股份有限公司,福建省,5.7 +343932526,63566.4602922289,45042.3466785544,273327.568779,48343.29187,上海艾为电子技术股份有限公司,上海市,5.44 +3196033145,1847.856693,841.495523333333,43728.711998,15768.2352323333,深圳易科声光科技股份有限公司,广东省,4.64 +265133300,2295.23342083333,1766.27639816667,74929.8732621667,13281.5700693333,恒烁半导体(合肥)股份有限公司,安徽省,4.87 +4607820,400683.540924667,270229.391592167,3928349.618539,521023.8754055,浙江大华技术股份有限公司,浙江省,6.59 +1477049981,1635.74683733333,928.335197,39838.4038606667,18091.6998766667,深圳市中航比特通讯技术股份有限公司,广东省,4.6 +2487067571,245.891363896894,142.090621109369,353.107586951086,22.31839,深圳金三伟科技有限公司,广东省,2.55 +79938367,364886.103943167,192426.6793045,3404308.61500033,438207.673933167,海信视像科技股份有限公司,山东省,6.53 +1570236326,46738.4403318677,27008.2442554713,67117.8427005,14314.7781271667,深圳深爱半导体股份有限公司,广东省,4.83 +186924210,245.891363896894,142.090621109369,353.107586951086,22.31839,常熟银海集成电路有限公司,江苏省,2.55 +2326655246,47064.7938791854,28022.1341416167,215229.148821571,43797.5919677143,杰华特微电子股份有限公司,浙江省,5.33 +2341774429,4180.1531862472,2415.54055885928,6002.82897816846,379.41263,河南六星园林工程有限公司,河南省,3.78 +696450846,11636.5577922093,6724.29359887323,16710.4561026667,1557.95664833333,上海鼎晖科技股份有限公司,上海市,4.22 +3449575456,705.462014166667,404.564843666667,98147.2591208333,8331.321303,峰岹科技(深圳)股份有限公司,广东省,4.99 +1008519520,61608.0802779139,37053.155825952,294420.360930857,40902.5847475714,深圳开立生物医疗科技股份有限公司,广东省,5.47 +640700057,47733.0729795,31533.6915421667,882712.853780333,81210.7388408333,深圳市汇顶科技股份有限公司,广东省,5.95 +8114841,119610.646942167,101364.638969333,561870.783580833,25630.6300121667,北京赛微电子股份有限公司,北京市,5.75 +889661204,5163.71864183477,2983.90304329676,7415.25932597281,468.68619,新乡市新东开发建设投资有限公司,河南省,3.87 +78576577,13915.8996241069,8041.43256415505,19983.6613155,3278.27611,浙江台谊消防股份有限公司,浙江省,4.3 +2948003547,24485.5251826667,20097.1695655,257924.994512333,29467.2679745,苏州纳芯微电子股份有限公司,江苏省,5.41 314846874,1984.631183,1641.71031766667,17644.9277333333,1747.244057,赛卓电子科技(上海)股份有限公司,上海市,4.25 +3222664794,7868.5236447006,4546.89987549982,11299.4427824348,714.18848,智驰华芯(无锡)传感科技有限公司,江苏省,4.05 +778745779,245.891363896894,142.090621109369,353.107586951086,22.31839,大庆君瑞达采油技术开发有限公司,黑龙江省,2.55 +2349463087,7253.79523495837,4191.67332272639,10416.6738150571,658.392505,苏州新诺斯新材料科技有限公司,江苏省,4.02 +359006365,7130.84955300992,4120.62801217172,10240.1200215815,647.23331,合肥安胜智能电子有限公司,安徽省,4.01 +189427260,1106.51113753602,639.407794992163,1588.98414127989,100.432755,长春市特锐防务科技有限公司,吉林省,3.2 +466148111,265480.70922068,153410.507257749,381238.491378189,24096.4217366667,陕西华燕航空仪表有限公司,陕西省,5.58 +2357754148,8015.82834302686,4632.02127116739,11510.9768751667,3729.40010633333,广芯电子技术(上海)股份有限公司,上海市,4.06 +3444782013,2704.80500286583,1562.99683220306,3884.18345646195,245.50229,江苏国科鹏兴微电子有限公司,江苏省,3.59 +2348987001,36146.0304928434,20887.3213030773,51906.8152818096,3280.80333,深圳市美思先端电子有限公司,广东省,4.72 +658871510,1229.45681948447,710.453105546847,1765.53793475543,111.59195,丹东华奥电子有限公司,辽宁省,3.25 +2326903290,12417.5138767931,7175.57636602316,17831.9331410299,1127.078695,南京新捷中旭微电子有限公司,江苏省,4.25 +3125087791,24542.7142841667,15564.0830683333,1249977.56114517,62053.129276,海光信息技术股份有限公司,天津市,6.1 +27042865,1497706.54820932,865463.716586106,2150752.82359567,291043.484399,许继集团有限公司,河南省,6.33 +1247902451,32949.4427621838,19040.1432286555,47316.4166514455,2990.66426,深圳市有为信息技术发展有限公司,广东省,4.68 +2312870289,11787.9898503333,9705.98894116667,134535.346971333,2337.98684916667,武汉光庭信息技术股份有限公司,湖北省,5.13 +24284343,149379.003567363,86320.052323942,214512.859072785,13558.421925,北京时代民芯科技有限公司,北京市,5.33 +2347015781,41626.2975832227,25542.5692075516,141575.867817429,28732.6177297143,苏州盛科通信股份有限公司,江苏省,5.15 +395739442,184949.8854125,144372.516958333,1449912.944935,188260.611706167,广州视源电子科技股份有限公司,广东省,6.16 +148376643,948.10781,416.306306,47284.9975156667,1795.11987,成都锐成芯微科技股份有限公司,四川省,4.67 +737770776,5962.86557449968,3445.69756190221,8562.85898356383,541.2209575,福建省南安市物资有限公司,福建省,3.93 +9032550,24765.9888975269,14311.2579842899,35564.7243541667,13661.5881386667,山东神戎电子股份有限公司,山东省,4.55 +756272716,452170.2881265,289303.2200005,653172.503028,45803.173987,厦门乾照光电股份有限公司,福建省,5.82 +1171244159,229059.561110167,116694.178122333,887965.529241,189313.327938667,武汉光迅科技股份有限公司,湖北省,5.95 +11807506,19609298.1959302,12104435.9853224,39142373.2,5444482.05714286,比亚迪股份有限公司,广东省,7.59 +2349742676,5901.39273352545,3410.17490662487,8474.58208682607,535.64136,仙童半导体技术(北京)有限公司,北京市,3.93 +193814549,2532926.37820684,1624285.85664262,4232520.56709771,323829.654962286,福建三钢闽光股份有限公司,福建省,6.63 +551856519,20163.0918395453,11651.4309309683,28954.8221299891,1830.10798,湖北银天钻石科技有限公司,湖北省,4.46 +648145286,5614.51947564574,3244.4025153306,8062.62323538314,509.603238333333,东莞高辉光电科技有限公司,广东省,3.91 +2349349655,8916.26246416139,5152.34553759312,12804.0280612,1116.3192482,苏州博洋化学股份有限公司,江苏省,4.11 +3145389278,84600.6897675,61879.9930853333,194183.457344,8176.74384333333,中巨芯科技股份有限公司,浙江省,5.29 +2344471631,330734.716290811,236494.735105389,585127.276640286,46707.2690862857,奥士康科技股份有限公司,湖南省,5.77 +395736790,29015.1809398335,16766.6932909056,41666.6952602281,2633.57002,厦门视诚科技有限公司,福建省,4.62 +340093034,3196.58773065962,1847.1780744218,4590.39863036412,290.13907,安徽四科信息技术有限公司,安徽省,3.66 +29223617,49351.6354965,38030.0537195,336478.787652167,25356.7104388333,青岛东软载波科技股份有限公司,山东省,5.53 +950849442,5994.35530405335,3463.89419622046,8608.079207,2252.50258133333,河北上元智能科技股份有限公司,河北省,3.93 +28665295,313995.74489,222476.732700167,2655589.812656,355626.724050333,深圳市汇川技术股份有限公司,广东省,6.42 +1261908916,69834.786012592,45718.6892184421,223259.790148,34244.3486247143,富满微电子集团股份有限公司,广东省,5.35 +1283378608,382033.215707807,220761.461663591,548611.487593004,34675.3385966667,杭州南都动力科技有限公司,浙江省,5.74 +863973253,87223.0084041222,54705.5158394499,204310.736350143,21822.4409522857,广东小崧科技股份有限公司,广东省,5.31 +29749980,18734.9610463402,10751.3319766896,103425.9146445,12851.7970803333,灿芯半导体(上海)股份有限公司,上海市,5.01 +382080545,99698.8345305,67975.3691115,374192.6519225,65581.7169108333,江苏银河电子股份有限公司,江苏省,5.57 +14913649,48320.6042573333,33640.3089888333,268143.9110715,61866.6007168333,北京新雷能科技股份有限公司,北京市,5.43 +3151519907,10261.2515788,7345.8137768,192194.8930462,55383.0408918,星宸科技股份有限公司,福建省,5.28 +2382390052,5409.61000573167,3125.99366440613,7768.36691292389,491.00458,青岛瑰宝电子科技有限公司,山东省,3.89 +3216845719,3811.31614040186,2202.40462719523,5473.16759774183,345.935045,视旗科技(深圳)有限公司,广东省,3.74 +3429928077,49547.1098252241,28631.260153538,71151.1787706438,4497.155585,中电科蓉威电子技术有限公司,四川省,4.85 +808524154,18687.743656164,10798.8872043121,26836.1766082825,1696.19764,华邦电力科技股份有限公司,浙江省,4.43 +493002466,583172.351375467,336991.589731055,837453.493718992,52931.7816166667,湖北惠洋电器制造有限公司,湖北省,5.92 +2327644110,3053.00803703019,1764.20920750766,4384.21375933333,479.548736333333,江苏国网自控科技股份有限公司,江苏省,3.64 +3422843097,11065.1113753602,6394.07794992163,15889.8414127989,1004.32755,芜湖华沅微电子有限公司,安徽省,4.2 +519195163,1924.04639447068,1111.82817851309,2762.99,269.27,深圳市迪浦电子有限公司,广东省,3.44 +3010580773,27621.4613166347,16325.5038861167,192243.781941857,21224.4987991429,上海晶丰明源半导体股份有限公司,上海市,5.28 +38852110,27293.9413925552,15772.05894314,39194.9421515705,2477.34129,宁波东盛集成电路元件有限公司,浙江省,4.59 +733657390,9425.83561604758,5446.80714252583,13535.790833125,855.538283333333,厦门石之锐材料科技有限公司,福建省,4.13 +675729777,12130.6406189134,7009.80397472889,17419.9742895869,1101.04057333333,蚌埠富源电子科技有限责任公司,安徽省,4.24 +507827038,690052.603181786,422522.420147987,1589615.70303614,134419.051238286,潮州三环(集团)股份有限公司,广东省,6.2 +578803019,16290.3028581692,9413.50364849573,23393.3776355094,1478.5933375,深圳市光脉电子有限公司,广东省,4.37 +907433543,33933.0082177714,19608.505713093,48728.8469992499,3079.93782,铜陵富仕三佳机器有限公司,安徽省,4.69 +300186799,1913582.75295502,1234953.81045746,2517803.40044929,175073.587292714,天水华天科技股份有限公司,甘肃省,6.4 +1476953321,68733.053832359,41979.990455379,221058.3974475,17772.1128096667,明冠新材料股份有限公司,江西省,5.34 +2326520912,28110.518270206,20015.5750167941,91596.5949761428,13584.5539792857,苏州敏芯微电子技术股份有限公司,江苏省,4.96 +16715045,129249.726051754,70258.0689623939,428791.019708857,17613.1475474286,深圳万润科技股份有限公司,广东省,5.63 +2316150629,3193.75060666667,2061.597836,93411.1801021667,20442.4057828333,深圳英集芯科技股份有限公司,广东省,4.97 +28667694,402957.792405856,221715.341875323,639599.640598429,92383.2062152857,佛山市国星光电股份有限公司,广东省,5.81 +2351592628,41820.4531887686,22960.7164579339,141041.529103571,26807.1478321429,无锡市德科立光电子技术股份有限公司,江苏省,5.15 +2349588257,295.069636676273,170.508745331243,423.729104341303,26.782068,东台市嘉勇益电子材料厂,江苏省,2.63 +3203980088,6557.1030372505,3789.08322958319,9416.20231869562,595.157066666667,江苏鼎茂半导体有限公司,江苏省,3.97 +2349746655,22867.8968424111,13214.4277631714,32839.005586451,2075.61027,美科精微机械(苏州)有限公司,江苏省,4.52 +3362063909,3688.37045845341,2131.35931664054,5296.61380426629,334.77585,安徽元晔光电有限责任公司,安徽省,3.72 +3226232,3576962.48064625,2066981.17617931,5136628.51,252962.023232612,中国运载火箭技术研究院,北京市,6.71 +303926772,169492.072533121,116431.299807913,501333.021660429,100913.602984571,烟台睿创微纳技术股份有限公司,山东省,5.7 +532328014,24892.0396571667,19319.3788076667,201784.162114833,48707.7229353333,深圳市杰普特光电股份有限公司,广东省,5.3 +225958786,4186.1910587495,2831.52597113953,62451.907052,18806.0135938333,天津金海通半导体设备股份有限公司,天津市,4.8 +862404568,23851.4622979987,13782.7902476088,34251.4359342554,2164.88383,余姚市龙邦电器有限公司,浙江省,4.53 diff --git a/input_data/input_firm_data/firms_devices.csv b/input_data/input_firm_data/firms_devices.csv index cc57968..ff2f4c9 100644 --- a/input_data/input_firm_data/firms_devices.csv +++ b/input_data/input_firm_data/firms_devices.csv @@ -1,61 +1,61 @@ Firm_Code,相关细分行业,设备id,种类,设备单价数值,固定资产原值(万元人民币),设备数量 -2311639124,34524,72,设备,140,737.674091690682,5.26910065493344 -762165453,34524,72,设备,140,614.728409742234,4.39091721244453 -2989649772,34525,64,设备,500,353266.3068118,706.5326136236 -25147774,34525,64,设备,500,122743.43558,245.48687116 -413876805,34526,60,设备,210,245.891363896894,1.17091125665188 -11807506,34526,60,设备,210,19609298.1959302,93377.6104568105 -3384021594,34527,67,设备,250,24097.3536618956,96.3894146475824 -413876805,34527,67,设备,250,245.891363896894,0.983565455587576 +805940123,34524,72,设备,140,64607.9558639089,461.485399027921 +286335813,34524,72,设备,140,14753.4818338136,105.382013098669 +2310534839,34525,64,设备,500,110282.276707757,220.564553415514 +3358892171,34525,64,设备,500,96134.749442,192.269498884 +280281699,34526,60,设备,210,1475.34818338136,7.02546753991124 +2310406050,34526,60,设备,210,11244.4463366792,53.5449825556152 +3268669333,34527,67,设备,250,2028.60375214937,8.11441500859748 +2345982379,34527,67,设备,250,4794.88159598943,19.1795263839577 80158773,34528,69,设备,25,12635.7451105,505.42980442 -2343704209,34528,69,设备,25,71514.6399746746,2860.58559898698 -3312358902,34529,61,设备,350,66438.2226519953,189.823493291415 -80169705,34529,61,设备,350,49057.3516709158,140.163861916902 -27075840,34530,65,设备,700,240383.397345603,343.404853350861 -3077450214,34530,65,设备,700,25753.3271505,36.7904673578571 -2311352797,34531,71,设备,140,55205.024134511,394.321600960793 -22324879,34531,71,设备,140,32642.0785573127,233.157703980805 -4379631621,34532,73,设备,210,245.891363896894,1.17091125665188 -2349616974,34532,73,设备,210,31228.2032149055,148.705729594788 -423388486,34533,66,设备,100000,163646.093171967,1.63646093171967 -1679596339,34533,66,设备,100000,7602.68963569803,0.0760268963569803 -3164072929,34534,63,设备,700,798499.18961975,1140.71312802821 -22324879,34534,63,设备,700,32642.0785573127,46.631540796161 -1033972427,34535,59,设备,700,36282.327026942,51.8318957527743 +80158773,34528,69,设备,25,12635.7451105,505.42980442 +78979697,34529,61,设备,350,3444820.24820822,9842.3435663092 +644252759,34529,61,设备,350,1048581.46678551,2995.9470479586 +59234665,34530,65,设备,700,251695.047657333,359.56435379619 +758879940,34530,65,设备,700,50189.7546808333,71.6996495440476 +2989649772,34531,71,设备,140,353266.3068118,2523.33076294143 +2728939,34531,71,设备,140,359757.813985901,2569.69867132786 +157087137,34532,73,设备,210,4917.82727793788,23.4182251330375 +2334430421,34532,73,设备,210,58809.0178653405,280.042942215907 +6333996,34533,66,设备,100000,46655513.9670089,466.555139670089 +169978927,34533,66,设备,100000,1674991.23124933,16.7499123124933 +2728939,34534,63,设备,700,359757.813985901,513.939734265573 +205960791,34534,63,设备,700,1610605.73638088,2300.86533768697 +2349345463,34535,59,设备,700,74136.2462149135,105.908923164162 3312358902,34535,59,设备,700,66438.2226519953,94.9117466457076 -354328758,34537,62,设备,140,4917.82727793788,35.1273376995563 -1044103384,34537,62,设备,140,424162.602722142,3029.73287658673 +1208566436,34537,62,设备,140,46908.019639,335.057283135714 +26487185,34537,62,设备,140,40598488.8632438,289989.206166027 +2350443114,34538,74,设备,500,3196.58773065962,6.39317546131924 78979697,34538,74,设备,500,3444820.24820822,6889.64049641644 -2316430101,34538,74,设备,500,190407.310913344,380.814621826688 -2349076526,34539,68,设备,350,438376.609971396,1252.50459991827 -2347561020,34539,68,设备,350,23605.5709341018,67.444488383148 -11169556957,34543,70,设备,35,983.565455587577,28.1018701596451 +3118140206,34539,68,设备,350,3934.2618223503,11.240748063858 +676597455,34539,68,设备,350,40504.6693875284,115.72762682151 2333843479,34543,70,设备,35,25746.1035943333,735.602959838094 -22324879,34544,83,设备,140,32642.0785573127,233.157703980805 -59234665,34544,83,设备,140,251695.047657333,1797.82176898095 -4995239819,34545,81,设备,210,491.782727793788,2.34182251330375 -2339136692,34545,81,设备,210,640144.399809059,3048.30666575742 -3327312155,34546,84,设备,70,4794.88159598943,68.4983085141347 -1389529309,34546,84,设备,70,32860.1214204911,469.430306007016 -18729484,34547,87,设备,70,505503.465899235,7221.47808427479 -3287925122,34547,87,设备,70,8729.14341833971,124.702048833424 -888662519,34548,89,设备,70,22130.2227507204,316.146039296006 +872394725,34543,70,设备,35,25724.5710310483,734.987743744237 +301209792,34544,83,设备,140,51111.2877957612,365.08062711258 +3386978614,34544,83,设备,140,380298.49535,2716.41782392857 +3146262808,34545,81,设备,210,491.782727793788,2.34182251330375 +815013249,34545,81,设备,210,245.891363896894,1.17091125665188 +3088175489,34546,84,设备,70,5037.29651092296,71.9613787274709 +2322986586,34546,84,设备,70,50682.8774590216,724.041106557451 +3154580688,34547,87,设备,70,245.891363896894,3.51273376995563 +3408810051,34547,87,设备,70,245.891363896894,3.51273376995563 +3043532438,34548,89,设备,70,26064.4845730707,372.349779615296 443872531,34549,85,设备,50,217273.703527667,4345.47407055334 -24673506,34549,85,设备,50,3731195.01695067,74623.9003390134 -3065971313,34550,75,设备,70,134201.385594667,1917.16265135239 -830662620,34550,75,设备,70,262637.565598167,3751.96522283096 -2347561020,34551,88,设备,70,23605.5709341018,337.22244191574 -613464015,34551,88,设备,70,17409.1331735,248.701902478571 -2453696971,34552,82,设备,70,48907.0477203197,698.672110290281 -43566171,34552,82,设备,70,19425.4177478546,277.505967826494 -2311838590,34553,80,设备,21,53398.0289114503,2542.76328149763 -409663925,34553,80,设备,21,63931.7546131924,3044.36926729488 -3414534661,34554,77,设备,350,227798.54904047,650.852997258486 -3393219477,34554,77,设备,350,245.891363896894,0.702546753991126 -11175750477,34555,76,设备,21,39342.618223503,1873.458010643 -2311838590,34555,76,设备,21,53398.0289114503,2542.76328149763 -2321857672,34556,78,设备,70,172615.737455619,2465.93910650884 -146491012,34557,79,设备,350,172984.813296877,494.242323705363 -2311907103,34557,79,设备,350,61082.6578818333,174.521879662381 -3464943902,34558,86,设备,70,368.837045845341,5.26910065493344 -259923931,34558,86,设备,70,1426.16991060198,20.3738558657426 +2313262775,34549,85,设备,50,573.746515759419,11.4749303151884 +188458872,34550,75,设备,70,428752.574848217,6125.03678354596 +533879767,34550,75,设备,70,17933.2750664661,256.189643806659 +314284469,34551,88,设备,70,93478.8051045442,1335.41150149349 +3380230725,34551,88,设备,70,39166.3897750939,559.519853929913 +1452190980,34552,82,设备,70,1967.13091117515,28.101870159645 +2351960502,34552,82,设备,70,1475.34818338136,21.0764026197337 +830662620,34553,80,设备,21,262637.565598167,12506.5507427699 +3398677646,34553,80,设备,21,36420.8435164999,1734.32588173809 +613464015,34554,77,设备,350,17409.1331735,49.7403804957143 +2314892072,34554,77,设备,350,14999.3731977105,42.8553519934586 +170176299,34555,76,设备,21,9774.18171490151,465.43722451912 +3070844997,34555,76,设备,21,17704.1782005764,843.056104789352 +3119505684,34556,78,设备,70,8852.08910028818,126.458415718403 +441623911,34557,79,设备,350,79201.8446421667,226.290984691905 +3312358902,34557,79,设备,350,66438.2226519953,189.823493291415 +11197684487,34558,86,设备,70,245.891363896894,3.51273376995563 +2345116311,34558,86,设备,70,32603.9042950622,465.770061358031 diff --git a/input_data/input_firm_data/firms_materials.csv b/input_data/input_firm_data/firms_materials.csv index 999234d..4e7c957 100644 --- a/input_data/input_firm_data/firms_materials.csv +++ b/input_data/input_firm_data/firms_materials.csv @@ -1,105 +1,105 @@ Firm_Code,相关细分行业,材料id,种类,材料单价数值,存货(万元人民币),材料数量 1,7,10,材料,70.0,3736.5025,40.0339553571429 -5,7,10,材料,70.0,2588.93324,27.7385704285714 -29954548,7,10,材料,70.0,133292.643730143,1428.13546853725 -29954548,7,10,材料,70.0,133292.643730143,1428.13546853725 -453289520,8,37,材料,9.7,193520.088971571,14962.8934771833 -453289520,8,37,材料,9.7,193520.088971571,14962.8934771833 -350343208,2714,91,材料,140.0,3903.95977783333,20.9140702383928 -37873062,2714,91,材料,140.0,184703.551339833,989.483310749105 -1266556718,2714,91,材料,140.0,10632.3104404292,56.9588059308707 -331545755,2715,92,材料,21.0,6911.28954133333,246.831769333333 -3193516458,2715,92,材料,21.0,41347.21758,1476.68634214286 -41454763,2715,92,材料,21.0,3281.00494028571,117.178747867347 -584019624,2716,93,材料,7.0,19952.64066,2137.78292785714 -185356903,2716,93,材料,7.0,29.7578533333333,3.18834142857143 -22751149,2716,93,材料,7.0,263513.812713,28233.6227906786 -27169556,2717,90,材料,70.0,455436.179933333,4879.67335642857 -3346538900,2717,90,材料,70.0,335021.89871525,3589.52034337768 -2541265952,2717,90,材料,70.0,662.112236666667,7.09405967857143 -777299215,2718,94,材料,21.0,602.59653,21.5213046428571 -18107611,2718,94,材料,21.0,4949308.389283,176761.013902964 -4067555184,32338,7,材料,4.0,323.616655,60.6781228125 -2313177432,32338,7,材料,4.0,89.27356,16.7387925 -12098344,32338,7,材料,4.0,36019.3828761667,6753.63428928126 -104671744,32432,16,材料,0.77,491.00458,478.251214285714 -4208851809,32432,16,材料,0.77,49697.6881215,48406.8390793831 +1,7,10,材料,70.0,3736.5025,40.0339553571429 +6,7,10,材料,70.0,163769.3525,1754.67163392857 +6,7,10,材料,70.0,163769.3525,1754.67163392857 +8,8,37,材料,9.7,26230.0375,2028.09568298969 +8,8,37,材料,9.7,26230.0375,2028.09568298969 +2336923756,2714,91,材料,140.0,9506.8596914,50.9296054896429 +3191869223,2714,91,材料,140.0,66.95517,0.358688410714286 +591350440,2714,91,材料,140.0,553.496072,2.96515752857143 +16210433,2715,92,材料,21.0,118544.841715143,4233.74434696939 +517675473,2715,92,材料,21.0,803.46204,28.6950728571429 +16116663,2715,92,材料,21.0,26734.2883584286,954.796012801021 +2349179532,2716,93,材料,7.0,79336.7949427143,8500.37088671939 +728969035,2716,93,材料,7.0,1321.248688,141.562359428571 +471121089,2716,93,材料,7.0,54052.4011497143,5791.32869461225 +331545755,2717,90,材料,70.0,6911.28954133333,74.0495308 +2326722141,2717,90,材料,70.0,4039.62859,43.2817348928571 +2337727838,2717,90,材料,70.0,1517.65052,16.2605412857143 +2327605629,2718,94,材料,21.0,5742.52886966667,205.09031677381 +2349705416,2718,94,材料,21.0,8162.9511425,291.533969375 +214851100,32338,7,材料,4.0,73629.7303001429,13805.5744312768 +3111603340,32338,7,材料,4.0,62603.08395,11738.078240625 +70634828,32338,7,材料,4.0,380474.996249,71339.0617966875 +420984285,32432,16,材料,0.77,62168.8641543333,60554.088462013 +420984285,32432,16,材料,0.77,62168.8641543333,60554.088462013 203314437,32433,22,材料,2.0,290.13907,108.80215125 -2309668026,32434,12,材料,0.79,111.59195,105.941724683544 -333499553,32434,12,材料,0.79,33711.928095,32004.9950268987 -4315536490,32434,12,材料,0.79,66.95517,63.5650348101266 -1270747834,32435,25,材料,0.5,3481.66884,5222.50326 -39894253,32435,25,材料,0.5,662222.116666667,993333.175000001 -287006714,32435,25,材料,0.5,111970.2725,167955.40875 -3352578733,32436,29,材料,1.6,44.63678,20.923490625 -366828854,32436,29,材料,1.6,37270.9437623333,17470.7548885937 +1160497810,32434,12,材料,0.79,1146.51037725,1088.45921890823 +3147958370,32434,12,材料,0.79,22.31839,21.1883449367089 +596368303,32434,12,材料,0.79,189.706315,180.100931962025 +562681526,32435,25,材料,0.5,89.27356,133.91034 +178452970,32435,25,材料,0.5,3139.22786,4708.84179 +2448521375,32435,25,材料,0.5,2566.61485,3849.922275 +3151377261,32436,29,材料,1.6,357.09424,167.387925 +31732840,32436,29,材料,1.6,700.797446,328.4988028125 5849940,32437,26,材料,20.0,2169804.72857143,81367.6773214286 -5849940,32437,26,材料,20.0,2169804.72857143,81367.6773214286 -29954548,32438,27,材料,0.25,133292.643730143,399877.931190429 -3227189464,32438,27,材料,0.25,2990.66426,8971.99278 -2961715231,32439,31,材料,0.25,881.576405,2644.729215 -888478182,32439,31,材料,0.25,44.63678,133.91034 -631103677,32440,15,材料,0.6,476.125653333333,595.157066666666 -2319266522,32440,15,材料,0.6,62.491492,78.114365 -1194436218,32440,15,材料,0.6,22.31839,27.8979875 -2327979389,32441,13,材料,2.28,862.977746666667,283.87425877193 -216898035,32441,13,材料,2.28,3585.82132666667,1179.54648903509 -3274238529,32443,23,材料,2.5,66.95517,20.086551 -61066955,32443,23,材料,2.5,28179.6880875714,8453.90642627142 -2348894245,32445,8,材料,22.78,11981.7573048571,394.482790985199 -169978927,32445,8,材料,22.78,65028.9291661667,2140.98757131804 -142823313,32446,20,材料,1.2,97437.8679368333,60898.6674605208 -367669349,32446,20,材料,1.2,537603.399401,336002.124625625 -2340606811,32447,28,材料,0.3,379.41263,948.531575 -3269940677,32447,28,材料,0.3,2745.16197,6862.904925 +2424229017,32437,26,材料,20.0,41132.540103,1542.4702538625 +71271700,32438,27,材料,0.25,5234.29972133333,15702.899164 +410030851,32438,27,材料,0.25,37424.9069162857,112274.720748857 +367669349,32439,31,材料,0.25,537603.399401,1612810.198203 +771821595,32439,31,材料,0.25,89907.0452243206,269721.135672962 +197362120,32440,15,材料,0.6,334.77585,418.4698125 +598808584,32440,15,材料,0.6,174.083442,217.6043025 +2353389310,32440,15,材料,0.6,44.63678,55.795975 +3462551351,32441,13,材料,2.28,535.64136,176.197815789474 +3226664625,32441,13,材料,2.28,797.8824425,262.461329769737 +2353549582,32443,23,材料,2.5,111.59195,33.477585 +961017,32443,23,材料,2.5,1982597.58563667,594779.275691001 +2978926070,32445,8,材料,22.78,1825.644302,60.1068141571554 +543470507,32445,8,材料,22.78,9150.5399,301.268872914838 +2314659369,32446,20,材料,1.2,2023.7900685,1264.8687928125 +1444449910,32446,20,材料,1.2,223.1839,139.4899375 +3195293647,32447,28,材料,0.3,33384.4062447143,83461.0156117858 +3226664625,32447,28,材料,0.3,797.8824425,1994.70610625 1452048,32448,30,材料,10.0,1884370.44367833,141327.783275875 -1452048,32448,30,材料,10.0,1884370.44367833,141327.783275875 -892652617,32449,19,材料,100.0,5877.17603333333,44.07882025 -1555364428,32449,19,材料,100.0,6371.900345,47.7892525875 -2475874929,32450,24,材料,1.38,22.31839,12.1295597826087 -2353020496,32450,24,材料,1.38,4997.96087575,2716.28308464674 -4076786740,32451,17,材料,1.38,89.27356,48.5182391304348 -331450699,32451,17,材料,1.38,491.00458,266.850315217391 -3054059190,34566,105,材料,21.0,1495.33213,53.4047189285714 -186745206,34566,105,材料,21.0,31534.1938276667,1126.22120813095 -507827038,34566,105,材料,21.0,134419.051238286,4800.68040136736 -2349737110,34567,103,材料,14.0,6196.09279783333,331.933542741071 -505990558,34567,103,材料,14.0,245.50229,13.1519083928571 -613464015,34568,107,材料,50.0,35552.7344381667,533.2910165725 -221048382,34568,107,材料,50.0,352447.843621667,5286.71765432501 -2348910693,34569,106,材料,8.0,4641.11761583333,435.104776484375 -2342515031,34569,106,材料,8.0,5069.99426166667,475.31196203125 -2360390148,34570,108,材料,28.0,580.27814,15.5431644642857 -2317568755,34570,108,材料,28.0,7858.70136516667,210.500929424107 -2349511062,34571,102,材料,21.0,1190.53784783333,42.5192088511904 -2349511062,34571,102,材料,21.0,1190.53784783333,42.5192088511904 -500189853,34572,104,材料,40.0,2075.61027,38.9176925625 -18065940,34572,104,材料,40.0,143283.010690286,2686.55645044286 -3006753238,34573,101,材料,21.0,236376.363264714,8442.01297373979 -2333993502,34573,101,材料,21.0,17415.7935534286,621.992626908164 -433384648,34574,109,材料,21.0,1191.802026,42.5643580714286 -344181818,34574,109,材料,21.0,79181.2545228571,2827.9019472449 -1104420298,36914,38,材料,700.0,213731.195733667,228.997709714643 -37873062,36914,38,材料,700.0,184703.551339833,197.896662149821 +688155470,32448,30,材料,10.0,375169.885145429,28137.7413859072 +495782506,32449,19,材料,100.0,23731.1904788333,177.98392859125 +495782506,32449,19,材料,100.0,23731.1904788333,177.98392859125 +2337952436,32450,24,材料,1.38,8845.106302,4807.12299021739 +385766513,32450,24,材料,1.38,223.1839,121.295597826087 +668539285,32451,17,材料,1.38,22.31839,12.1295597826087 +2352421906,32451,17,材料,1.38,167.387925,90.9716983695652 +864375173,34566,105,材料,21.0,335912.648294,11996.8802962143 +311225958,34566,105,材料,21.0,3874558.95,138377.105357143 +311225958,34566,105,材料,21.0,3874558.95,138377.105357143 +3032041158,34567,103,材料,14.0,3629.2321895,194.423153008929 +364288921,34567,103,材料,14.0,52439.8163758333,2809.27587727678 +235473780,34568,107,材料,50.0,28440.585602,426.60878403 +3274956187,34568,107,材料,50.0,18758.9312998571,281.383969497857 +410419900,34569,106,材料,8.0,22809.39458,2138.380741875 +658759701,34569,106,材料,8.0,16288.5044676667,1527.04729384375 +1428342684,34570,108,材料,28.0,9719.67009846261,260.34830620882 +2339188563,34570,108,材料,28.0,6638.528607,177.817730544643 +3030943638,34571,102,材料,21.0,907.614526666667,32.4148045238095 +886706371,34571,102,材料,21.0,251454.78235725,8980.52794133036 +2349168009,34572,104,材料,40.0,6308.66490666667,118.287467 +3123887630,34572,104,材料,40.0,19222.0740129801,360.413887743377 +24673506,34573,101,材料,21.0,291506.649439667,10410.9517657024 +11164728143,34573,101,材料,21.0,29.7578533333333,1.06278047619048 +3137149148,34574,109,材料,21.0,57823.5951882857,2065.12839958163 +2338014857,34574,109,材料,21.0,89.27356,3.18834142857143 +25980377,36914,38,材料,700.0,17536.2207033333,18.7888078964285 +3330358736,36914,38,材料,700.0,383336.168066833,410.71732292875 +2348894245,46504,11,材料,35.0,11981.7573048571,256.751942246938 1452048,46504,11,材料,35.0,1884370.44367833,40379.3666502499 -2349349655,46504,11,材料,35.0,1116.3192482,23.9211267471429 -420984285,46505,18,材料,15.5,62168.8641543333,3008.17084617742 -2329836516,46505,18,材料,15.5,4786.47693733333,231.603722774193 -2326956863,56319,34,材料,350.0,76558.826568734,164.054628361573 -2326956863,56319,34,材料,350.0,76558.826568734,164.054628361573 -3270918801,56320,32,材料,200.0,1439.536155,5.39826058125 -7299120,56320,32,材料,200.0,29562.480612,110.859302295 -557266995,56321,36,材料,2.8,1541.1883505,412.818308169643 -557266995,56321,36,材料,2.8,1541.1883505,412.818308169643 -2357759100,56322,33,材料,0.5,852.562498,1278.843747 -695879282,56322,33,材料,0.5,22.31839,33.477585 -2314301730,56322,33,材料,0.5,22.31839,33.477585 -3118917053,56323,35,材料,1400.0,7562.35984084442,4.05126420045237 +29954548,46505,18,材料,15.5,133292.643730143,6449.64405145853 +247297633,46505,18,材料,15.5,57328.2659905714,2773.94835438249 +737770776,56319,34,材料,350.0,541.2209575,1.15975919464286 +9032550,56319,34,材料,350.0,13661.5881386667,29.2748317257144 +756272716,56320,32,材料,200.0,45803.173987,171.76190245125 +1171244159,56320,32,材料,200.0,189313.327938667,709.924979770001 +5849940,56321,36,材料,2.8,2169804.72857143,581197.695153062 +11807506,56321,36,材料,2.8,5444482.05714286,1458343.40816327 +2349742676,56322,33,材料,0.5,535.64136,803.46204 +193814549,56322,33,材料,0.5,323829.654962286,485744.482443429 +551856519,56322,33,材料,0.5,1830.10798,2745.16197 648145286,56323,35,材料,1400.0,509.603238333333,0.273001734821428 -4091219112,56341,9,材料,2.0,55.795975,20.923490625 -60716715,56341,9,材料,2.0,52097.0039868571,19536.3764950714 -814834276,317589,95,材料,35.0,44.63678,0.956502428571429 -3339921892,317589,95,材料,35.0,290.13907,6.21726578571429 -22324879,317589,95,材料,35.0,2962.7662725,63.4878486964286 -3357541349,513691,52,材料,700.0,6191.05493557143,6.6332731452551 -3357541349,513691,52,材料,700.0,6191.05493557143,6.6332731452551 +2349345463,56323,35,材料,1400.0,6728.994585,3.60481852767857 +2349349655,56341,9,材料,2.0,1116.3192482,418.619718075 +3145389278,56341,9,材料,2.0,8176.74384333333,3066.27894125 +395736790,317589,95,材料,35.0,2633.57002,56.4336432857143 +340093034,317589,95,材料,35.0,290.13907,6.21726578571429 +29223617,317589,95,材料,35.0,25356.7104388333,543.358080832142 +507827038,513691,52,材料,700.0,134419.051238286,144.020412041021 +578803019,513691,52,材料,700.0,1478.5933375,1.58420714732143 diff --git a/input_data/input_firm_data/firms_products.csv b/input_data/input_firm_data/firms_products.csv index 9bcdbeb..73fac6b 100644 --- a/input_data/input_firm_data/firms_products.csv +++ b/input_data/input_firm_data/firms_products.csv @@ -1,350 +1,354 @@ Firm_Code,相关细分行业,产品id,下游,种类,产品单价数值,存货(万元人民币),产品数量 -4067555184,32338,7,44,材料,28,323.616655,2.88943441964286 -2313177432,32338,7,44,材料,28,89.27356,0.797085357142857 -12098344,32338,7,45,材料,21,36019.3828761667,428.802177097223 -2348894245,32445,8,90,材料,70,11981.7573048571,42.7919903744896 -2348894245,32445,8,93,材料,7,22.31839,0.797085357142857 -169978927,32445,8,90,材料,70,65028.9291661667,232.246175593453 -169978927,32445,8,92,材料,21,65028.9291661667,774.153918644842 -169978927,32445,8,94,材料,21,65028.9291661667,774.153918644842 -4091219112,56341,9,90,材料,70,55.795975,0.199271339285714 -60716715,56341,9,90,材料,70,52097.0039868571,186.06072852449 +70634828,32338,7,90,材料,70,380474.996249,1358.83927231786 +214851100,32338,7,44,材料,28,73629.7303001429,657.408306251276 +3111603340,32338,7,45,材料,21,62603.08395,745.274808928571 +543470507,32445,8,90,材料,70,9150.5399,32.6804996428571 +2978926070,32445,8,90,材料,70,1825.644302,6.52015822142857 +2349349655,56341,9,90,材料,70,1116.3192482,3.98685445785714 +3145389278,56341,9,90,材料,70,8176.74384333333,29.2026565833333 1,7,10,90,材料,70,3736.5025,13.3446517857143 -5,7,10,90,材料,70,2588.93324,9.24619014285714 -29954548,7,10,90,材料,70,133292.643730143,476.045156179082 -29954548,7,10,90,材料,70,133292.643730143,476.045156179082 +1,7,10,91,材料,140,3736.5025,6.67232589285714 +6,7,10,92,材料,21,163769.3525,1949.63514880952 +6,7,10,93,材料,7,163769.3525,5848.90544642857 +6,7,10,94,材料,21,163769.3525,1949.63514880952 1452048,46504,11,90,材料,70,1884370.44367833,6729.89444170832 -2349349655,46504,11,90,材料,70,1116.3192482,3.98685445785714 -2309668026,32434,12,95,材料,35,111.59195,0.797085357142857 -333499553,32434,12,95,材料,35,33711.928095,240.799486392857 -4315536490,32434,12,95,材料,35,66.95517,0.478251214285714 -2327979389,32441,13,95,材料,35,862.977746666667,6.16412676190476 -216898035,32441,13,95,材料,35,3585.82132666667,25.6130094761905 -631103677,32440,15,41,材料,1000,476.125653333333,0.119031413333333 -2319266522,32440,15,41,材料,1000,62.491492,0.015622873 -1194436218,32440,15,42,材料,1500,22.31839,0.00371973166666667 -104671744,32432,16,95,材料,35,491.00458,3.50717557142857 -4208851809,32432,16,95,材料,35,49697.6881215,354.983486582143 -4076786740,32451,17,90,材料,70,89.27356,0.318834142857143 -331450699,32451,17,90,材料,70,491.00458,1.75358778571429 -420984285,46505,18,41,材料,1000,62168.8641543333,15.5422160385833 -2329836516,46505,18,41,材料,1000,4786.47693733333,1.19661923433333 -892652617,32449,19,50,材料,140,5877.17603333333,10.4949572023809 -1555364428,32449,19,50,材料,140,6371.900345,11.3783934732143 -1555364428,32449,19,52,材料,700,6371.900345,2.27567869464286 -1555364428,32449,19,53,材料,1400,6371.900345,1.13783934732143 -892652617,32449,19,54,材料,1400,5877.17603333333,1.04949572023809 -892652617,32449,19,55,材料,2000,5877.17603333333,0.734647004166666 -142823313,32446,20,41,材料,1000,97437.8679368333,24.3594669842083 -367669349,32446,20,41,材料,1000,537603.399401,134.40084985025 +2348894245,46504,11,90,材料,70,11981.7573048571,42.7919903744896 +596368303,32434,12,95,材料,35,189.706315,1.35504510714286 +1160497810,32434,12,95,材料,35,1146.51037725,8.1893598375 +3147958370,32434,12,95,材料,35,22.31839,0.159417071428571 +3226664625,32441,13,95,材料,35,797.8824425,5.69916030357143 +3462551351,32441,13,95,材料,35,535.64136,3.82600971428571 +197362120,32440,15,41,材料,1000,334.77585,0.0836939625 +598808584,32440,15,42,材料,1500,174.083442,0.029013907 +2353389310,32440,15,41,材料,1000,44.63678,0.011159195 +420984285,32432,16,95,材料,35,62168.8641543333,444.063315388095 +420984285,32432,16,95,材料,35,62168.8641543333,444.063315388095 +668539285,32451,17,90,材料,70,22.31839,0.0797085357142857 +2352421906,32451,17,90,材料,70,167.387925,0.597814017857143 +29954548,46505,18,41,材料,1000,133292.643730143,33.3231609325357 +247297633,46505,18,41,材料,1000,57328.2659905714,14.3320664976429 +495782506,32449,19,52,材料,700,23731.1904788333,8.47542517101189 +495782506,32449,19,53,材料,1400,23731.1904788333,4.23771258550595 +495782506,32449,19,54,材料,1400,23731.1904788333,4.23771258550595 +495782506,32449,19,55,材料,2000,23731.1904788333,2.96639880985416 +1444449910,32446,20,41,材料,1000,223.1839,0.055795975 +2314659369,32446,20,41,材料,1000,2023.7900685,0.505947517125 203314437,32433,22,41,材料,1000,290.13907,0.0725347675 -3274238529,32443,23,41,材料,1000,66.95517,0.0167387925 -61066955,32443,23,41,材料,1000,28179.6880875714,7.04492202189285 -2475874929,32450,24,90,材料,70,22.31839,0.0797085357142857 -2353020496,32450,24,90,材料,70,4997.96087575,17.8498602705357 -1270747834,32435,25,41,材料,1000,3481.66884,0.87041721 -39894253,32435,25,41,材料,1000,662222.116666667,165.555529166667 -287006714,32435,25,41,材料,1000,111970.2725,27.992568125 +961017,32443,23,41,材料,1000,1982597.58563667,495.649396409167 +2353549582,32443,23,41,材料,1000,111.59195,0.0278979875 +385766513,32450,24,90,材料,70,223.1839,0.797085357142857 +2337952436,32450,24,90,材料,70,8845.106302,31.5896653642857 +178452970,32435,25,41,材料,1000,3139.22786,0.784806965 +562681526,32435,25,41,材料,1000,89.27356,0.02231839 +2448521375,32435,25,41,材料,1000,2566.61485,0.6416537125 5849940,32437,26,95,材料,35,2169804.72857143,15498.6052040816 -5849940,32437,26,95,材料,35,2169804.72857143,15498.6052040816 -29954548,32438,27,44,材料,28,133292.643730143,1190.11289044771 -3227189464,32438,27,44,材料,28,2990.66426,26.7023594642857 -2340606811,32447,28,50,材料,140,379.41263,0.677522553571429 -3269940677,32447,28,50,材料,140,2745.16197,4.90207494642857 -3352578733,32436,29,50,材料,140,44.63678,0.0797085357142857 -366828854,32436,29,50,材料,140,37270.9437623333,66.5552567184523 +2424229017,32437,26,95,材料,35,41132.540103,293.803857878571 +71271700,32438,27,44,材料,28,5234.29972133333,46.7348189404762 +410030851,32438,27,44,材料,28,37424.9069162857,334.150954609694 +3195293647,32447,28,50,材料,140,33384.4062447143,59.6150111512755 +3226664625,32447,28,50,材料,140,797.8824425,1.42479007589286 +31732840,32436,29,50,材料,140,700.797446,1.25142401071429 +3151377261,32436,29,50,材料,140,357.09424,0.637668285714286 1452048,32448,30,95,材料,35,1884370.44367833,13459.7888834166 -1452048,32448,30,95,材料,35,1884370.44367833,13459.7888834166 -2961715231,32439,31,41,材料,1000,881.576405,0.22039410125 -888478182,32439,31,41,材料,1000,44.63678,0.011159195 -3270918801,56320,32,46,材料,1400,1439.536155,0.257060027678571 -7299120,56320,32,46,材料,1400,29562.480612,5.279014395 -2357759100,56322,33,47,材料,14000,852.562498,0.0152243303214286 -695879282,56322,33,47,材料,14000,22.31839,0.000398542678571429 -2314301730,56322,33,47,材料,14000,22.31839,0.000398542678571429 -2326956863,56319,34,48,材料,350,76558.826568734,54.6848761205243 -2326956863,56319,34,48,材料,350,76558.826568734,54.6848761205243 -3118917053,56323,35,49,材料,1400,7562.35984084442,1.35042140015079 +688155470,32448,30,95,材料,35,375169.885145429,2679.78489389592 +367669349,32439,31,41,材料,1000,537603.399401,134.40084985025 +771821595,32439,31,41,材料,1000,89907.0452243206,22.4767613060801 +756272716,56320,32,46,材料,1400,45803.173987,8.17913821196429 +1171244159,56320,32,46,材料,1400,189313.327938667,33.8059514176191 +193814549,56322,33,47,材料,14000,323829.654962286,5.78267241004082 +551856519,56322,33,47,材料,14000,1830.10798,0.0326804996428571 +2349742676,56322,33,47,材料,14000,535.64136,0.00956502428571429 +9032550,56319,34,48,材料,350,13661.5881386667,9.75827724190479 +737770776,56319,34,48,材料,350,541.2209575,0.386586398214286 648145286,56323,35,49,材料,1400,509.603238333333,0.0910005782738095 -557266995,56321,36,41,材料,1000,1541.1883505,0.385297087625 -557266995,56321,36,41,材料,1000,1541.1883505,0.385297087625 -453289520,8,37,95,材料,35,193520.088971571,1382.28634979694 -453289520,8,37,95,材料,35,193520.088971571,1382.28634979694 -1104420298,36914,38,51,材料,70000,213731.195733667,0.763325699048811 -37873062,36914,38,51,材料,70000,184703.551339833,0.659655540499404 -12098344,32338,44,40,材料,35,36019.3828761667,257.281306258334 -12098344,32338,46,43,材料,1400,36019.3828761667,6.43203265645834 -12098344,32338,46,43,材料,1400,36019.3828761667,6.43203265645834 -12098344,32338,47,38,材料,700,36019.3828761667,12.8640653129167 -12098344,32338,49,39,材料,14000,36019.3828761667,0.643203265645834 -3357541349,513691,52,95,材料,35,6191.05493557143,44.2218209683674 -3357541349,513691,52,95,材料,35,6191.05493557143,44.2218209683674 -720737055,2515,56,58,设计,0,315.444274666667,9999999999999.0 -850972471,2515,56,58,设计,0,8836.59633516667,9999999999999.0 -3472022914,2514,57,58,设计,0,66.95517,9999999999999.0 -79412414,2514,57,58,设计,0,12269.0431131106,9999999999999.0 -490476776,2514,57,58,设计,0,18149.98,9999999999999.0 -632264618,34491,58,90,材料,70,9131.4346385,32.6122665660714 -29930956,34491,58,91,材料,140,492.828037833333,0.880050067559523 -632264618,34491,58,92,材料,21,9131.4346385,108.707555220238 -1092796483,34492,58,93,材料,7,21795.4415151429,778.408625540818 -2353851293,34492,58,94,材料,21,133.91034,1.59417071428571 -972774,34492,58,95,材料,35,94545.1294942,675.32235353 -24459300,34493,58,97,测试,0,87424.1267993333,9999999999999.0 -3344266702,34493,58,90,材料,70,12065.8805295714,43.092430462755 -2345050363,34494,58,91,材料,140,1262.94723833333,2.25526292559523 -33171435,34494,58,92,材料,21,61275.9548563333,729.475653051587 -2961210947,34495,58,93,材料,7,156.22873,5.5795975 -41454763,34495,58,94,材料,21,3281.00494028571,39.0595826224489 -3135349256,34495,58,95,材料,35,11441.7133435,81.7265238821429 -2350883312,34496,58,97,测试,0,758.82526,9999999999999.0 +2349345463,56323,35,49,材料,1400,6728.994585,1.20160617589286 +5849940,56321,36,41,材料,1000,2169804.72857143,542.451182142857 +11807506,56321,36,41,材料,1000,5444482.05714286,1361.12051428571 +8,8,37,95,材料,35,26230.0375,187.357410714286 +8,8,37,95,材料,35,26230.0375,187.357410714286 +25980377,36914,38,51,材料,70000,17536.2207033333,0.0626293596547618 +3330358736,36914,38,51,材料,70000,383336.168066833,1.36905774309583 +214851100,32338,44,40,材料,35,73629.7303001429,525.926645001021 +214851100,32338,46,43,材料,1400,73629.7303001429,13.1481661250255 +70634828,32338,47,38,材料,700,380474.996249,135.883927231786 +70634828,32338,49,39,材料,14000,380474.996249,6.79419636158929 +507827038,513691,52,95,材料,35,134419.051238286,960.136080273471 +578803019,513691,52,95,材料,35,1478.5933375,10.5613809821429 +25685135,2515,56,58,设计,0,494.656998333333,999999999999999.0 +25685135,2515,56,58,设计,0,494.656998333333,999999999999999.0 +626924399,2514,57,58,设计,0,133591.969312571,999999999999999.0 +42106161,2514,57,58,设计,0,30444.3936875714,999999999999999.0 +8971203,2514,57,58,设计,0,28793.4303391667,999999999999999.0 +9620005,34491,58,90,材料,70,681912.489464,2435.40174808571 +340603317,34491,58,91,材料,140,61999.93404,110.714167928571 +1099584865,34491,58,92,材料,21,26108.7323181429,310.818241882654 +1694716470,34492,58,93,材料,7,33.477585,1.19562803571429 +3378606529,34492,58,94,材料,21,2904.19502883333,34.5737503432539 +2962064709,34492,58,95,材料,35,3870.76790783333,27.6483421988095 +2346894985,34493,58,97,测试,0,12367.5736068333,999999999999999.0 +13047525,34493,58,90,材料,70,8499.25721783333,30.3544900636905 +2317722475,34494,58,91,材料,140,74064.8728134286,132.258701452551 +664591135,34494,58,92,材料,21,12223.0382566667,145.512360198413 +3011933107,34495,58,93,材料,7,952050.331326571,34001.7975473775 +308365582,34495,58,94,材料,21,58653.2979681429,698.253547239796 +2323069589,34495,58,95,材料,35,1294.46662,9.24619014285714 +1717102128,34496,58,97,测试,0,1941.69993,999999999999999.0 2350883312,34496,58,90,材料,70,758.82526,2.71009021428571 -3006753238,34498,58,91,材料,140,236376.363264714,422.100648686989 -2350111843,34498,58,92,材料,21,1480.14299457143,17.6207499353742 -2343704209,34499,58,93,材料,7,7848.60666666667,280.307380952381 -15482118,34499,58,94,材料,21,75554.4652471667,899.457919609127 -930767828,34501,58,95,材料,35,24848.5958543333,177.489970388095 -930767828,34501,58,97,测试,0,24848.5958543333,9999999999999.0 -1010816593,34502,58,90,材料,70,111575.164158429,398.482729137246 -2321243819,34502,58,91,材料,140,8590.6279275,15.3404070133929 -2353542014,34502,58,92,材料,21,3063.477861,36.4699745357143 -79889978,34503,58,93,材料,7,57637.2210431667,2058.4721801131 -37378925,34503,58,94,材料,21,12474.301626,148.503590785714 -186257378,34503,58,95,材料,35,897.199278,6.40856627142857 -1379191812,34505,58,97,测试,0,669.5517,9999999999999.0 -24653920,34505,58,90,材料,70,49184.7394994286,175.659783926531 -864536616,34509,58,91,材料,140,259887.593897857,464.084989103316 -25685135,34509,58,92,材料,21,494.656998333333,5.88877378968254 -2349046160,34513,58,93,材料,7,16789.3887331667,599.621026184525 -2313628561,34513,58,94,材料,21,3977.1318875,47.3468081845238 -2346465051,34513,58,95,材料,35,191.938154,1.37098681428571 -1253552935,34517,58,97,测试,0,7680.27564083333,9999999999999.0 -1253552935,34517,58,90,材料,70,7680.27564083333,27.429555860119 -5971532,34518,58,91,材料,140,1410912.94534083,2519.48740239434 -3157495460,34518,58,92,材料,21,12596.5014271429,149.95835032313 -2354584345,34519,58,93,材料,7,167.387925,5.97814017857143 -29452962,34519,58,94,材料,21,206077.306495286,2453.30126780102 -27599908,49686,58,95,材料,35,5921.81281333333,42.2986629523809 -2350719552,49686,58,97,测试,0,11314.5121375,9999999999999.0 -3216066502,49687,58,90,材料,70,20677.0661462857,73.8466648081632 -39698451,49687,58,91,材料,140,69378.6032017143,123.890362860204 -2351643794,49688,58,92,材料,21,2198.361415,26.1709692261905 -2351192662,49688,58,93,材料,7,3416.11452834962,122.004090298201 -865049663,49689,58,94,材料,21,43328.108973,515.810821107143 -891649,49689,58,95,材料,35,25810.7164891429,184.362260636735 -3424978618,49690,58,97,测试,0,56086.1265501667,9999999999999.0 -3145156061,49690,58,90,材料,70,22.31839,0.0797085357142857 -281599332,49691,58,91,材料,140,40598.0444641667,72.4965079717262 -24653920,49691,58,92,材料,21,49184.7394994286,585.532613088436 -79938367,49692,58,93,材料,7,438207.673933167,15650.2740690417 -864169770,49692,58,94,材料,21,24457.7740034286,291.163976231293 -2310296367,49693,58,95,材料,35,31554.9076322,225.392197372857 -774611690,49693,58,97,测试,0,7937.90737666667,9999999999999.0 -2311838590,49694,58,90,材料,70,310.151853,1.10768518928571 -2350442566,49694,58,91,材料,140,2249.693712,4.0173102 -654461595,49695,58,92,材料,21,8316.87563333333,99.0104242063492 -383463860,49695,58,93,材料,7,45248.303886,1616.01085307143 -463659395,49696,58,94,材料,21,39793.0929578333,473.727297117063 -2347105663,49696,58,95,材料,35,4603.6098265,32.8829273321429 -504638253,49697,58,97,测试,0,51230.2114925,9999999999999.0 -519195163,49698,58,90,材料,70,269.27,0.961678571428571 -3221578464,49698,58,91,材料,140,580.27814,1.03621096428571 -2316256865,49699,58,92,材料,21,30518.2317446667,363.312282674604 -3269840248,49699,58,93,材料,7,33.477585,1.19562803571429 -1675147952,49700,58,94,材料,21,9412.2279396,112.050332614286 -1675147952,49700,58,95,材料,35,9412.2279396,67.2301995685714 -29223617,49701,58,97,测试,0,25356.7104388333,9999999999999.0 -2553848709,49701,58,90,材料,70,1450.69535,5.18105482142857 -168035745,49702,58,91,材料,140,406.194698,0.725347675 -510149116,49702,58,92,材料,21,374.948952,4.463678 -2316430101,49704,58,93,材料,7,104480.892502143,3731.46044650511 -5591349,49704,58,94,材料,21,44936.3798348571,534.956902795918 -274839085,49705,58,95,材料,35,1251.8898265,8.94207018928572 -4209347174,49705,58,97,测试,0,959.69077,9999999999999.0 -413142822,49707,58,90,材料,70,9677.11797866667,34.5611356380953 -951988821,49707,58,91,材料,140,88668.7767376667,158.337101317262 -1587526,49708,58,92,材料,21,37562.7044782857,447.175053312925 -1587526,49708,58,93,材料,7,37562.7044782857,1341.52515993878 -3402194899,49709,58,94,材料,21,55.795975,0.664237797619048 -730857,49709,58,95,材料,35,15474.0837333333,110.529169523809 -27085933,49710,58,97,测试,0,3512.25453285714,9999999999999.0 -27085933,49710,58,90,材料,70,3512.25453285714,12.5437661887755 -3424978618,49711,58,91,材料,140,56086.1265501667,100.153797411012 -24495941,49711,58,92,材料,21,80497.7686304286,958.306769409864 -2424229017,49712,58,93,材料,7,41132.540103,1469.01928939286 -3118428071,49712,58,94,材料,21,22.31839,0.265695119047619 -3297178263,49713,58,95,材料,35,610.035993333333,4.35739995238095 -441623911,49713,58,97,测试,0,46601.7746505,9999999999999.0 -2316150629,49714,58,90,材料,70,20442.4057828333,73.0085920815475 -2327057709,49714,58,91,材料,140,18862.75571075,33.683492340625 -2624175,49715,58,92,材料,21,45047.728384,536.282480761905 -3483100980,49715,58,93,材料,7,44.63678,1.59417071428571 -781386116,49715,58,94,材料,21,65785.0702958333,783.15559875992 -3222821993,49716,58,95,材料,35,725.347675,5.18105482142857 -10398718,49716,58,97,测试,0,537996.506329429,9999999999999.0 -3042364033,49717,58,90,材料,70,22.31839,0.0797085357142857 -2333993502,49717,58,91,材料,140,17415.7935534286,31.0996313454082 -79938367,49718,58,92,材料,21,438207.673933167,5216.75802301389 -2342518227,49718,58,93,材料,7,3045.84492716667,108.780175970238 -3068358389,49719,58,94,材料,21,298.473805182015,3.55325958550018 -20751117,49719,58,95,材料,35,41335.5048401667,295.253606001191 -3449575456,49720,58,97,测试,0,8331.321303,9999999999999.0 -3449575456,49720,58,90,材料,70,8331.321303,29.7547189392857 -3440374619,49721,58,91,材料,140,2753.40906483333,4.91680190148809 -3168979780,49721,58,92,材料,21,28322.03691,337.167106071429 -2962064709,49722,58,93,材料,7,3870.76790783333,138.241710994048 -3151203276,49722,58,94,材料,21,28574.494008,340.172547714286 -3449575456,49723,58,95,材料,35,8331.321303,59.5094378785714 -777299215,49723,58,97,测试,0,602.59653,9999999999999.0 -24459300,49724,58,90,材料,70,87424.1267993333,312.229024283333 -1675147952,49724,58,91,材料,140,9412.2279396,16.8075498921429 -2334772533,49725,58,92,材料,21,8232.49431216667,98.0058846686508 -38567125,49725,58,93,材料,7,23741.5776591667,847.913487827382 -2338894532,49726,58,94,材料,21,647.23331,7.70515845238095 -270141231,49726,58,95,材料,35,6622.9822325,47.3070159464286 -220783142,49727,58,97,测试,0,714.18848,9999999999999.0 -3407754893,49727,58,90,材料,70,40891.55866,146.041280928571 -9278530,49728,58,91,材料,140,6390.49900333333,11.4116053630952 -9278530,49728,58,92,材料,21,6390.49900333333,76.0773690873015 -2323580212,49729,58,93,材料,7,1506.491325,53.8032616071429 -2331160070,49729,58,94,材料,21,794.0237395,9.45266356547619 -2349345463,49730,58,95,材料,35,6728.994585,48.0642470357143 -2350687852,49730,58,97,测试,0,4029.26472366667,9999999999999.0 -2357754148,49731,58,90,材料,70,3729.40010633333,13.3192860940476 +2311838590,34498,58,91,材料,140,310.151853,0.553842594642857 +643954924,34498,58,92,材料,21,147799.326854167,1759.51579588294 +3135349256,34499,58,93,材料,7,11441.7133435,408.632619410714 +290636928,34499,58,94,材料,21,212453.632558571,2529.20991141156 +301209792,34501,58,95,材料,35,111866.716299773,799.047973569807 +2311838590,34501,58,97,测试,0,310.151853,999999999999999.0 +3221581379,34502,58,90,材料,70,89.27356,0.318834142857143 +2347561020,34502,58,91,材料,140,2142.56544,3.82600971428571 +2348887010,34502,58,92,材料,21,223.1839,2.65695119047619 +24653920,34503,58,93,材料,7,49184.7394994286,1756.59783926531 +4576816,34503,58,94,材料,21,178.54712,2.12556095238095 +2325924904,34503,58,95,材料,35,66.95517,0.478251214285714 +37873062,34505,58,97,测试,0,184703.551339833,999999999999999.0 +3305073093,34505,58,90,材料,70,23609.5935602857,84.3199770010203 +2348999904,34509,58,91,材料,140,14473.9632724286,25.8463629864796 +2357906989,34509,58,92,材料,21,57230.8354225714,681.319469316326 +35404067,34513,58,93,材料,7,54977.5046671429,1963.48230954082 +1698501971,34513,58,94,材料,21,178848.8659345,2129.1531658869 +618469306,34513,58,95,材料,35,15237.2533333333,108.837523809524 +3409973515,34517,58,97,测试,0,72557.5603221667,999999999999999.0 +515770253,34517,58,90,材料,70,3549.5813945,12.6770764089286 +1052742800,34518,58,91,材料,140,624.91492,1.1159195 +1452048,34518,58,92,材料,21,1884370.44367833,22432.9814723611 +352084034,34519,58,93,材料,7,19752.3217678333,705.440063136904 +742704658,34519,58,94,材料,21,1735.2548225,20.6577955059524 +13854344,49686,58,95,材料,35,15212.8059461667,108.662899615476 +27599908,49686,58,97,测试,0,5921.81281333333,999999999999999.0 +2328691869,49687,58,90,材料,70,133.91034,0.478251214285714 +891649,49687,58,91,材料,140,25810.7164891429,46.0905651591837 +23421122,49688,58,92,材料,21,8957.11385333333,106.632307777778 +2959520478,49688,58,93,材料,7,22.31839,0.797085357142857 +29452962,49689,58,94,材料,21,206077.306495286,2453.30126780102 +33822284,49689,58,95,材料,35,3117341.894336,22266.7278166857 +3392803162,49690,58,97,测试,0,53110.2105447143,999999999999999.0 +5971532,49690,58,90,材料,70,1410912.94534083,5038.97480478868 +1524794108,49691,58,91,材料,140,156.22873,0.278979875 +10437056,49691,58,92,材料,21,1602.69784816667,19.0797362876985 +5979030,49692,58,93,材料,7,432935.855950143,15461.9948553623 +26895145,49692,58,94,材料,21,26312.8551288333,313.248275343254 +1253552935,49693,58,95,材料,35,7680.27564083333,54.8591117202381 +518871190,49693,58,97,测试,0,31265.4563877143,999999999999999.0 +515770253,49694,58,90,材料,70,3549.5813945,12.6770764089286 +515770253,49694,58,91,材料,140,3549.5813945,6.33853820446429 +451074876,49695,58,92,材料,21,245.50229,2.92264630952381 +3420061649,49695,58,93,材料,7,1473.01374,52.6076335714286 +3030705543,49696,58,94,材料,21,31454.7737075714,374.461591756802 +472355525,49696,58,95,材料,35,4720.339485,33.7167106071429 +504638253,49697,58,97,测试,0,51230.2114925,999999999999999.0 +2333118643,49698,58,90,材料,70,2627.35498357143,9.38341065561225 +3073223227,49698,58,91,材料,140,59.5157066666667,0.106278047619048 +2329891409,49699,58,92,材料,21,16599.245492,197.610065380952 +762501019,49699,58,93,材料,7,1574.0261515,56.2152196964286 +23167049,49700,58,94,材料,21,4876.568215,58.0543835119048 +9746245,49700,58,95,材料,35,3484537.2,24889.5514285714 +5971532,49701,58,97,测试,0,1410912.94534083,999999999999999.0 +23167049,49701,58,90,材料,70,4876.568215,17.4163150535714 +2311838590,49702,58,91,材料,140,310.151853,0.553842594642857 +2347105663,49702,58,92,材料,21,4603.6098265,54.8048788869048 +2351656365,49704,58,93,材料,7,312.45746,11.159195 +3276276473,49704,58,94,材料,21,38035.9112945,452.808467791667 +2944593082,49705,58,95,材料,35,3109.7546355,22.2125331107143 +3031766093,49705,58,97,测试,0,15181.6445878333,999999999999999.0 +691978900,49707,58,90,材料,70,5192.62385585714,18.5450851994898 +2719128520,49707,58,91,材料,140,790.071006,1.41084108214286 +3358087747,49708,58,92,材料,21,22.31839,0.265695119047619 +3220049148,49708,58,93,材料,7,44.63678,1.59417071428571 +1408183015,49709,58,94,材料,21,133.91034,1.59417071428571 +2310406921,49709,58,95,材料,35,178.54712,1.27533657142857 +16116663,49710,58,97,测试,0,26734.2883584286,999999999999999.0 +1651310523,49710,58,90,材料,70,357.09424,1.27533657142857 +2350544061,49711,58,91,材料,140,28099.7294085,50.1780882294643 +1605495,49711,58,92,材料,21,1500442.86042433,17862.4150050515 +686380489,49712,58,93,材料,7,44.63678,1.59417071428571 +2424229017,49712,58,94,材料,21,41132.540103,489.673096464286 +872030659,49713,58,95,材料,35,758.3442415,5.41674458214286 +3222821993,49713,58,97,测试,0,725.347675,999999999999999.0 +2343364952,49714,58,90,材料,70,189402.304441,676.436801575 +343932526,49714,58,91,材料,140,48343.29187,86.3273069107143 +3196033145,49715,58,92,材料,21,15768.2352323333,187.717086099206 +265133300,49715,58,93,材料,7,13281.5700693333,474.341788190475 +4607820,49715,58,94,材料,21,521023.8754055,6202.66518339881 +9746245,49716,58,95,材料,35,3484537.2,24889.5514285714 +1477049981,49716,58,97,测试,0,18091.6998766667,999999999999999.0 +2487067571,49717,58,90,材料,70,22.31839,0.0797085357142857 +1452048,49717,58,91,材料,140,1884370.44367833,3364.94722085416 +24653920,49718,58,92,材料,21,49184.7394994286,585.532613088436 +79938367,49718,58,93,材料,7,438207.673933167,15650.2740690417 +1570236326,49719,58,94,材料,21,14314.7781271667,170.414025323413 +186924210,49719,58,95,材料,35,22.31839,0.159417071428571 +24653920,49720,58,97,测试,0,49184.7394994286,999999999999999.0 +2326655246,49720,58,90,材料,70,43797.5919677143,156.419971313265 +2341774429,49721,58,91,材料,140,379.41263,0.677522553571429 +186924210,49721,58,92,材料,21,22.31839,0.265695119047619 +169978927,49722,58,93,材料,7,65028.9291661667,2322.46175593453 +696450846,49722,58,94,材料,21,1557.95664833333,18.5471029563492 +37873062,49723,58,95,材料,35,184703.551339833,1319.31108099881 +3449575456,49723,58,97,测试,0,8331.321303,999999999999999.0 +1008519520,49724,58,90,材料,70,40902.5847475714,146.080659812755 +640700057,49724,58,91,材料,140,81210.7388408333,145.019176501488 +8114841,49725,58,92,材料,21,25630.6300121667,305.126547763889 +889661204,49725,58,93,材料,7,468.68619,16.7387925 +78576577,49726,58,94,材料,21,3278.27611,39.027096547619 +2948003547,49726,58,95,材料,35,29467.2679745,210.480485532143 +314846874,49727,58,97,测试,0,1747.244057,999999999999999.0 +314846874,49727,58,90,材料,70,1747.244057,6.24015734642857 +2948003547,49728,58,91,材料,140,29467.2679745,52.6201213830357 +3222664794,49728,58,92,材料,21,714.18848,8.50224380952381 +778745779,49729,58,93,材料,7,22.31839,0.797085357142857 +2349463087,49729,58,94,材料,21,658.392505,7.83800601190476 +359006365,49730,58,95,材料,35,647.23331,4.62309507142857 +189427260,49730,58,97,测试,0,100.432755,999999999999999.0 +466148111,49731,58,90,材料,70,24096.4217366667,86.0586490595239 2357754148,49731,58,91,材料,140,3729.40010633333,6.6596430470238 -3173999388,49733,58,92,材料,21,1517.65052,18.0672680952381 -501323741,49733,58,93,材料,7,45867.2232541429,1638.11511621939 -20751117,49734,58,94,材料,21,41335.5048401667,492.089343335318 -20751117,49734,58,95,材料,35,41335.5048401667,295.253606001191 -2311337085,56247,58,97,测试,0,36647.5253237143,9999999999999.0 -2950325617,56247,58,90,材料,70,5855.69548783333,20.9131981708333 -2350701298,56248,58,91,材料,140,223.1839,0.398542678571429 -2322658897,56248,58,92,材料,21,156.22873,1.85986583333333 -2347015781,56249,58,93,材料,7,28732.6177297143,1026.16491891837 -24610687,56249,58,94,材料,21,2602016.44544083,30976.386255248 -181655991,56250,58,95,材料,35,1582.68336616667,11.3048811869048 -15482118,56250,58,97,测试,0,75554.4652471667,9999999999999.0 -2982872611,317586,58,90,材料,70,764.4048575,2.73001734821429 -3051771738,317586,58,91,材料,140,119431.036400333,213.269707857738 -1237811030,317586,58,92,材料,21,1350.262595,16.074554702381 -2358215091,317620,58,93,材料,7,2443.928088,87.283146 -6823511,317620,58,94,材料,21,49246.3736734781,586.266353255692 -2318300058,431078,58,95,材料,35,22511.6174346,160.79726739 -30918572,431078,58,97,测试,0,6399.88976466667,9999999999999.0 -173280333,431079,58,90,材料,70,71268.6104547143,254.53075162398 -1217010297,431079,58,91,材料,140,86929.247462,155.230799039286 -79412414,431079,58,92,材料,21,12269.0431131106,146.06003706084 -227353488,431080,58,93,材料,7,141511.018406,5053.96494307143 -4728160558,431080,58,94,材料,21,3437661.391239,40924.5403718929 -20751117,431081,58,95,材料,35,41335.5048401667,295.253606001191 -2313858141,431081,58,97,测试,0,8636.660643,9999999999999.0 -2311676659,431082,58,90,材料,70,8280.12269,29.57186675 -1048928993,431082,58,91,材料,140,13303.533159,23.7563092125 -966536464,431083,58,92,材料,21,957.122635333333,11.3943170873016 -3464313484,431083,58,93,材料,7,6330.15329883333,226.076903529762 -2347015781,431085,58,94,材料,21,28732.6177297143,342.054972972789 -2357754148,431085,58,95,材料,35,3729.40010633333,26.6385721880952 -338952484,431086,58,97,测试,0,6999.23901883333,9999999999999.0 -27042865,431086,58,90,材料,70,291043.484399,1039.44101571071 -3104545193,431087,58,91,材料,140,36083.9444402857,64.4356150719387 -9620005,431087,58,92,材料,21,681912.489464,8118.00582695238 -864166372,431088,58,93,材料,7,27638.9844123333,987.106586154761 -33822284,431088,58,94,材料,21,3117341.894336,37111.2130278095 -1033972427,34535,59,90,材料,70,150030.431427836,535.822969385129 -3312358902,34535,59,91,材料,140,87569.4877398571,156.374085249745 -413876805,34526,60,41,材料,1000,22.31839,0.0055795975 -11807506,34526,60,41,材料,1000,5444482.05714286,1361.12051428571 -3312358902,34529,61,90,材料,70,87569.4877398571,312.74817049949 -80169705,34529,61,90,材料,70,149290.899493,533.181783903572 -354328758,34537,62,50,材料,140,446.3678,0.797085357142857 -1044103384,34537,62,50,材料,140,38499.22275,68.7486120535714 -3164072929,34534,63,50,材料,140,124088.77507875,221.587098354911 -22324879,34534,63,50,材料,140,2962.7662725,5.29065405803571 -2989649772,34525,64,41,材料,1000,71733.723177,17.93343079425 -25147774,34525,64,41,材料,1000,92968.234407,23.24205860175 -27075840,34530,65,41,材料,1000,21818.458064,5.454614516 -3077450214,34530,65,41,材料,1000,21242.4322786667,5.31060806966668 -423388486,34533,66,90,材料,70,242227.496705143,865.098202518368 -1679596339,34533,66,90,材料,70,4958.50469716667,17.7089453470238 -3384021594,34527,67,41,材料,1000,2187.20222,0.546800555 -413876805,34527,67,41,材料,1000,22.31839,0.0055795975 -2349076526,34539,68,50,材料,140,771941.581803429,1378.46711036327 -2347561020,34539,68,50,材料,140,2142.56544,3.82600971428571 +3444782013,49733,58,92,材料,21,245.50229,2.92264630952381 +2348987001,49733,58,93,材料,7,3280.80333,117.1715475 +658871510,49734,58,94,材料,21,111.59195,1.3284755952381 +2326903290,49734,58,95,材料,35,1127.078695,8.05056210714286 +3125087791,56247,58,97,测试,0,62053.129276,999999999999999.0 +27042865,56247,58,90,材料,70,291043.484399,1039.44101571071 +1247902451,56248,58,91,材料,140,2990.66426,5.34047189285714 +2312870289,56248,58,92,材料,21,2337.98684916667,27.8331767757937 +24284343,56249,58,93,材料,7,13558.421925,484.229354464286 +2347015781,56249,58,94,材料,21,28732.6177297143,342.054972972789 +395739442,56250,58,95,材料,35,188260.611706167,1344.71865504405 +148376643,56250,58,97,测试,0,1795.11987,999999999999999.0 +3392803162,317586,58,90,材料,70,53110.2105447143,189.67932337398 +2344471631,317586,58,91,材料,140,46707.2690862857,83.4058376540816 +11807506,317586,58,92,材料,21,5444482.05714286,64815.262585034 +950849442,317620,58,93,材料,7,2252.50258133333,80.4465207619046 +33822284,317620,58,94,材料,21,3117341.894336,37111.2130278095 +28665295,431078,58,95,材料,35,355626.724050333,2540.19088607381 +1261908916,431078,58,97,测试,0,34244.3486247143,999999999999999.0 +1283378608,431079,58,90,材料,70,34675.3385966667,123.840494988095 +863973253,431079,58,91,材料,140,21822.4409522857,38.968644557653 +29749980,431079,58,92,材料,21,12851.7970803333,152.997584289682 +382080545,431080,58,93,材料,7,65581.7169108333,2342.2041753869 +79938367,431080,58,94,材料,21,438207.673933167,5216.75802301389 +1452048,431081,58,95,材料,35,1884370.44367833,13459.7888834166 +14913649,431081,58,97,测试,0,61866.6007168333,999999999999999.0 +3151519907,431082,58,90,材料,70,55383.0408918,197.796574613571 +14913649,431082,58,91,材料,140,61866.6007168333,110.476072708631 +2382390052,431083,58,92,材料,21,491.00458,5.84529261904762 +3216845719,431083,58,93,材料,7,345.935045,12.3548230357143 +3429928077,431085,58,94,材料,21,4497.155585,53.5375664880952 +308365582,431085,58,95,材料,35,58653.2979681429,418.952128343878 +808524154,431086,58,97,测试,0,1696.19764,999999999999999.0 +493002466,431086,58,90,材料,70,52931.7816166667,189.042077202381 +2327644110,431087,58,91,材料,140,479.548736333333,0.856337029166666 +3422843097,431087,58,92,材料,21,1004.32755,11.9562803571429 +519195163,431088,58,93,材料,7,269.27,9.61678571428571 +3010580773,431088,58,90,材料,70,21224.4987991429,75.8017814255104 +2349345463,34535,59,90,材料,70,6728.994585,24.0321235178571 +3312358902,34535,59,90,材料,70,87569.4877398571,312.74817049949 +280281699,34526,60,41,材料,1000,133.91034,0.033477585 +2310406050,34526,60,41,材料,1000,3444.305514,0.8610763785 +78979697,34529,61,90,材料,70,1224407.85554914,4372.88519838979 +644252759,34529,61,90,材料,70,97533.245574,348.333019907143 +26487185,34537,62,50,材料,140,4375803.95224186,7813.93562900332 +1208566436,34537,62,50,材料,140,693891.525553167,1239.09200991637 +2728939,34534,63,50,材料,140,59890.9064983333,106.948047318452 +205960791,34534,63,50,材料,140,629669.839666143,1124.41042797526 +2310534839,34525,64,41,材料,1000,10009.797915,2.50244947875 +3358892171,34525,64,41,材料,1000,39066.599245,9.76664981125 +59234665,34530,65,41,材料,1000,656252.890643167,164.063222660792 +758879940,34530,65,41,材料,1000,20053.2928708333,5.01332321770832 +6333996,34533,66,90,材料,70,18677786.4881532,66706.3803148329 +169978927,34533,66,90,材料,70,65028.9291661667,232.246175593453 +2345982379,34527,67,41,材料,1000,435.208605,0.10880215125 +3268669333,34527,67,41,材料,1000,184.1267175,0.046031679375 +676597455,34539,68,50,材料,140,5785.2713515,10.3308416991071 +3118140206,34539,68,50,材料,140,357.09424,0.637668285714286 80158773,34528,69,50,材料,140,1474.810014,2.63358931071429 -2343704209,34528,69,50,材料,140,7848.60666666667,14.0153690476191 -11169556957,34543,70,91,材料,140,89.27356,0.159417071428571 +80158773,34528,69,50,材料,140,1474.810014,2.63358931071429 +872394725,34543,70,91,材料,140,7283.82543785714,13.0068311390306 2333843479,34543,70,91,材料,140,8385.40003966667,14.9739286422619 -2311352797,34531,71,41,材料,1000,6754.43288,1.68860822 -22324879,34531,71,41,材料,1000,2962.7662725,0.740691568125 -2311639124,34524,72,50,材料,140,66.95517,0.119562803571429 -762165453,34524,72,50,材料,140,55.795975,0.0996356696428571 -4379631621,34532,73,95,材料,35,22.31839,0.159417071428571 -2349616974,34532,73,95,材料,35,2834.43553,20.2459680714286 +2728939,34531,71,41,材料,1000,59890.9064983333,14.9727266245833 +2989649772,34531,71,41,材料,1000,71733.723177,17.93343079425 +286335813,34524,72,50,材料,140,1339.1034,2.39125607142857 +805940123,34524,72,50,材料,140,5864.1569725,10.4717088794643 +157087137,34532,73,95,材料,35,446.3678,3.18834142857143 +2334430421,34532,73,95,材料,35,5337.81494166667,38.1272495833334 78979697,34538,74,95,材料,35,1224407.85554914,8745.77039677957 -2316430101,34538,74,95,材料,35,104480.892502143,746.292089301021 -3065971313,34550,75,96,封装,0,29697.253081,9999999999999.0 -830662620,34550,75,96,封装,0,73842.0312075,9999999999999.0 -11175750477,34555,76,96,封装,0,3570.9424,9999999999999.0 -2311838590,34555,76,96,封装,0,310.151853,9999999999999.0 -3414534661,34554,77,100,测试,0,46215.3088984286,9999999999999.0 -3393219477,34554,77,100,测试,0,22.31839,9999999999999.0 -2321857672,34556,78,98,测试,0,15667.50978,9999999999999.0 -146491012,34557,79,99,测试,0,166754.219868852,9999999999999.0 -2311907103,34557,79,99,测试,0,76726.8203528333,9999999999999.0 -2311838590,34553,80,96,封装,0,310.151853,9999999999999.0 -409663925,34553,80,96,封装,0,5802.7814,9999999999999.0 -4995239819,34545,81,96,封装,0,44.63678,9999999999999.0 -2339136692,34545,81,96,封装,0,133298.837068571,9999999999999.0 -2453696971,34552,82,96,封装,0,34675.6299895,9999999999999.0 -43566171,34552,82,96,封装,0,1763.15281,9999999999999.0 -22324879,34544,83,96,封装,0,2962.7662725,9999999999999.0 -59234665,34544,83,96,封装,0,656252.890643167,9999999999999.0 -3327312155,34546,84,96,封装,0,435.208605,9999999999999.0 -1389529309,34546,84,96,封装,0,8239.6429645,9999999999999.0 -443872531,34549,85,96,封装,0,14931.5790275,9999999999999.0 -24673506,34549,85,96,封装,0,291506.649439667,9999999999999.0 -3464943902,34558,86,96,封装,0,33.477585,9999999999999.0 -259923931,34558,86,96,封装,0,129.446662,9999999999999.0 -18729484,34547,87,96,封装,0,45882.146162,9999999999999.0 -3287925122,34547,87,96,封装,0,792.302845,9999999999999.0 -2347561020,34551,88,96,封装,0,2142.56544,9999999999999.0 -613464015,34551,88,96,封装,0,35552.7344381667,9999999999999.0 -888662519,34548,89,96,封装,0,2008.6551,9999999999999.0 -27169556,2717,90,95,材料,35,455436.179933333,3253.11557095238 -3346538900,2717,90,95,材料,35,335021.89871525,2393.01356225179 -2541265952,2717,90,95,材料,35,662.112236666667,4.72937311904762 -350343208,2714,91,95,材料,35,3903.95977783333,27.8854269845238 -37873062,2714,91,95,材料,35,184703.551339833,1319.31108099881 -1266556718,2714,91,95,材料,35,10632.3104404292,75.9450745744943 -331545755,2715,92,95,材料,35,6911.28954133333,49.3663538666666 -3193516458,2715,92,95,材料,35,41347.21758,295.337268428571 -41454763,2715,92,95,材料,35,3281.00494028571,23.4357495734694 -584019624,2716,93,95,材料,35,19952.64066,142.518861857143 -185356903,2716,93,95,材料,35,29.7578533333333,0.212556095238095 -22751149,2716,93,95,材料,35,263513.812713,1882.24151937857 -777299215,2718,94,95,材料,35,602.59653,4.30426092857143 -18107611,2718,94,95,材料,35,4949308.389283,35352.2027805929 -814834276,317589,95,96,封装,0,44.63678,9999999999999.0 -3339921892,317589,95,96,封装,0,290.13907,9999999999999.0 -22324879,317589,95,96,封装,0,2962.7662725,9999999999999.0 -2311838590,513738,97,95,材料,35,310.151853,2.21537037857143 -2311838590,513738,97,95,材料,35,310.151853,2.21537037857143 -3006753238,34573,101,96,封装,0,236376.363264714,9999999999999.0 -2333993502,34573,101,96,封装,0,17415.7935534286,9999999999999.0 -2349511062,34571,102,96,封装,0,1190.53784783333,9999999999999.0 -2349511062,34571,102,96,封装,0,1190.53784783333,9999999999999.0 -2349737110,34567,103,96,封装,0,6196.09279783333,9999999999999.0 -505990558,34567,103,96,封装,0,245.50229,9999999999999.0 -500189853,34572,104,96,封装,0,2075.61027,9999999999999.0 -18065940,34572,104,96,封装,0,143283.010690286,9999999999999.0 -3054059190,34566,105,96,封装,0,1495.33213,9999999999999.0 -186745206,34566,105,96,封装,0,31534.1938276667,9999999999999.0 -507827038,34566,105,96,封装,0,134419.051238286,9999999999999.0 -2348910693,34569,106,96,封装,0,4641.11761583333,9999999999999.0 -2342515031,34569,106,96,封装,0,5069.99426166667,9999999999999.0 -613464015,34568,107,96,封装,0,35552.7344381667,9999999999999.0 -221048382,34568,107,96,封装,0,352447.843621667,9999999999999.0 -2360390148,34570,108,96,封装,0,580.27814,9999999999999.0 -2317568755,34570,108,96,封装,0,7858.70136516667,9999999999999.0 -433384648,34574,109,96,封装,0,1191.802026,9999999999999.0 -344181818,34574,109,96,封装,0,79181.2545228571,9999999999999.0 +2350443114,34538,74,95,材料,35,290.13907,2.07242192857143 +188458872,34550,75,96,封装,0,38915.8326966667,999999999999999.0 +533879767,34550,75,96,封装,0,3428.43879433333,999999999999999.0 +170176299,34555,76,96,封装,0,887.1560025,999999999999999.0 +3070844997,34555,76,96,封装,0,1606.92408,999999999999999.0 +613464015,34554,77,100,测试,0,35552.7344381667,999999999999999.0 +2314892072,34554,77,100,测试,0,1361.42179,999999999999999.0 +3119505684,34556,78,98,测试,0,803.46204,999999999999999.0 +441623911,34557,79,99,测试,0,46601.7746505,999999999999999.0 +3312358902,34557,79,99,测试,0,87569.4877398571,999999999999999.0 +830662620,34553,80,96,封装,0,73842.0312075,999999999999999.0 +3398677646,34553,80,96,封装,0,33245.58495675,999999999999999.0 +815013249,34545,81,96,封装,0,22.31839,999999999999999.0 +3146262808,34545,81,96,封装,0,44.63678,999999999999999.0 +1452190980,34552,82,96,封装,0,178.54712,999999999999999.0 +2351960502,34552,82,96,封装,0,133.91034,999999999999999.0 +301209792,34544,83,96,封装,0,111866.716299773,999999999999999.0 +3386978614,34544,83,96,封装,0,26685.6864223333,999999999999999.0 +2322986586,34546,84,96,封装,0,50000.3910323838,999999999999999.0 +3088175489,34546,84,96,封装,0,1552.15710083333,999999999999999.0 +443872531,34549,85,96,封装,0,14931.5790275,999999999999999.0 +2313262775,34549,85,96,封装,0,52.0762433333333,999999999999999.0 +2345116311,34558,86,96,封装,0,14325.7940763333,999999999999999.0 +11197684487,34558,86,96,封装,0,22.31839,999999999999999.0 +3154580688,34547,87,96,封装,0,22.31839,999999999999999.0 +3408810051,34547,87,96,封装,0,22.31839,999999999999999.0 +314284469,34551,88,96,封装,0,18539.5011983333,999999999999999.0 +3380230725,34551,88,96,封装,0,27414.5396071429,999999999999999.0 +3043532438,34548,89,96,封装,0,2365.74934,999999999999999.0 +331545755,2717,90,95,材料,35,6911.28954133333,49.3663538666666 +2326722141,2717,90,95,材料,35,4039.62859,28.8544899285714 +2337727838,2717,90,95,材料,35,1517.65052,10.8403608571429 +591350440,2714,91,95,材料,35,553.496072,3.95354337142857 +2336923756,2714,91,95,材料,35,9506.8596914,67.9061406528571 +3191869223,2714,91,95,材料,35,66.95517,0.478251214285714 +16116663,2715,92,95,材料,35,26734.2883584286,190.959202560204 +16210433,2715,92,95,材料,35,118544.841715143,846.748869393879 +517675473,2715,92,95,材料,35,803.46204,5.73901457142857 +471121089,2716,93,95,材料,35,54052.4011497143,386.088579640816 +728969035,2716,93,95,材料,35,1321.248688,9.43749062857143 +2349179532,2716,93,95,材料,35,79336.7949427143,566.691392447959 +2327605629,2718,94,95,材料,35,5742.52886966667,41.0180633547619 +2349705416,2718,94,95,材料,35,8162.9511425,58.306793875 +29223617,317589,95,96,封装,0,25356.7104388333,999999999999999.0 +340093034,317589,95,96,封装,0,290.13907,999999999999999.0 +395736790,317589,95,96,封装,0,2633.57002,999999999999999.0 +9746245,513738,97,95,材料,35,3484537.2,24889.5514285714 +2311838590,513738,97,96,封装,0,310.151853,999999999999999.0 +303926772,513742,99,96,封装,0,100913.602984571,999999999999999.0 +532328014,513742,99,96,封装,0,48707.7229353333,999999999999999.0 +25685135,513744,100,96,封装,0,494.656998333333,999999999999999.0 +300186799,513744,100,96,封装,0,175073.587292714,999999999999999.0 +16116663,513746,100,96,封装,0,26734.2883584286,999999999999999.0 +16116663,513746,100,96,封装,0,26734.2883584286,999999999999999.0 +225958786,513749,100,96,封装,0,18806.0135938333,999999999999999.0 +862404568,513749,100,96,封装,0,2164.88383,999999999999999.0 +314846874,513751,100,96,封装,0,1747.244057,999999999999999.0 +24673506,34573,101,96,封装,0,291506.649439667,999999999999999.0 +11164728143,34573,101,96,封装,0,29.7578533333333,999999999999999.0 +886706371,34571,102,96,封装,0,251454.78235725,999999999999999.0 +3030943638,34571,102,96,封装,0,907.614526666667,999999999999999.0 +364288921,34567,103,96,封装,0,52439.8163758333,999999999999999.0 +3032041158,34567,103,96,封装,0,3629.2321895,999999999999999.0 +2349168009,34572,104,96,封装,0,6308.66490666667,999999999999999.0 +3123887630,34572,104,96,封装,0,19222.0740129801,999999999999999.0 +311225958,34566,105,96,封装,0,3874558.95,999999999999999.0 +311225958,34566,105,96,封装,0,3874558.95,999999999999999.0 +864375173,34566,105,96,封装,0,335912.648294,999999999999999.0 +410419900,34569,106,96,封装,0,22809.39458,999999999999999.0 +658759701,34569,106,96,封装,0,16288.5044676667,999999999999999.0 +235473780,34568,107,96,封装,0,28440.585602,999999999999999.0 +3274956187,34568,107,96,封装,0,18758.9312998571,999999999999999.0 +1428342684,34570,108,96,封装,0,9719.67009846261,999999999999999.0 +2339188563,34570,108,96,封装,0,6638.528607,999999999999999.0 +2338014857,34574,109,96,封装,0,89.27356,999999999999999.0 +3137149148,34574,109,96,封装,0,57823.5951882857,999999999999999.0 diff --git a/main.py b/main.py index 38626b8..251ca35 100644 --- a/main.py +++ b/main.py @@ -33,11 +33,6 @@ def do_process(target: object, controller_db: ControllerDB, ): for i in process_list: i.join() - - # 所有子进程完成后刷新最终进度 - - # 显示最终进度后关闭图表 - def do_computation(c_db): exp = Computation(c_db) @@ -54,7 +49,7 @@ if __name__ == '__main__': parser.add_argument('--exp', type=str, default='without_exp') parser.add_argument('--job', type=int, default='1') parser.add_argument('--reset_sample', type=int, default='0') - parser.add_argument('--reset_db', type=bool, default=False) + parser.add_argument('--reset_db', type=bool, default=True) args = parser.parse_args() # 几核参与进程 diff --git a/my_model.py b/my_model.py index 08aba44..d6ef4e1 100644 --- a/my_model.py +++ b/my_model.py @@ -62,7 +62,7 @@ class MyModel(Model): self.cap_limit_level = params['cap_limit_level'] # 产能限制的水平。 self.diff_new_conn = params['diff_new_conn'] # 是否允许差异化的新连接。 # 初始化停止时间步,可能是用户通过参数传入 - self.int_stop_ts = params.get('n_iter', 3) # 默认停止时间为 100 + self.int_stop_ts = params.get('n_iter', 100) # 默认停止时间为 100 # 网络初始化 self.firm_network = nx.MultiDiGraph() # 企业之间的有向多重图。 @@ -465,12 +465,9 @@ class MyModel(Model): production_output = self.data_produced.loc[self.data_produced['Firm_Code'] == int(ag_node)] # 获取企业的资源信息,同时处理 R、P、C 的情况 - try: - R = self.firm_resource_R.loc[int(ag_node)] - P = self.firm_resource_P.get(int(ag_node)) - C = self.firm_resource_C.loc[int(ag_node)] - except KeyError: - R, P, C = [], {}, [] # 如果任何资源不存在,返回空列表 + R = self.firm_resource_R.get(int(ag_node), []) + P = self.firm_resource_P.get(int(ag_node), {}) + C = self.firm_resource_C.get(int(ag_node), []) # 在模型初始化时,构建 unique_id -> agent 的快速映射字典 self.agent_map = {agent.unique_id: agent for agent in self.company_agents} @@ -717,13 +714,20 @@ class MyModel(Model): for firm in self.company_agents: if not firm.R: # 跳过没有资源的企业 continue - # 遍历资源列表,检查哪些资源需要补货 - for resource_id, resource_quantity in firm.R: - if resource_quantity <= firm.s_r: # 如果资源低于阈值,记录需求 - required_quantity = firm.S_r - resource_quantity + # purchase_material_firms 用于记录需要补充材料的企业 + purchase_material_firms = {} + + for i, (resource_id, resource_quantity) in enumerate(firm.R): + # 对应位置的初始值 + init_quantity = firm.R1[i][1] # R1[i] = [resource_id, 初始数量] + + if resource_quantity <= init_quantity * firm.s_r: # 判断阈值 + required_quantity = init_quantity * firm.S_r - resource_quantity + if firm not in purchase_material_firms: purchase_material_firms[firm] = [] + purchase_material_firms[firm].append((resource_id, required_quantity)) # 寻找供应商并处理补货 @@ -754,7 +758,7 @@ class MyModel(Model): # 检查设备残值,记录需要补充的设备 for equipment in firm.C: equipment_id, equipment_quantity, equipment_salvage = equipment - equipment_salvage -= firm.x # 减少设备残值 + equipment_salvage -= equipment_salvage*firm.x # 减少设备残值 if equipment_salvage <= 0: # 如果残值小于等于 0 equipment_quantity -= 1 required_quantity = 1 # 需要补充的设备数量 @@ -869,22 +873,29 @@ class MyModel(Model): else: self.int_stop_ts = self.t - def end(self): + def end(self, ga_id=None): """ 结束模型运行并保存结果。 - - 如果当前样本的结果未保存,则保存所有生产状态为非正常状态的结果。 - - 更新样本状态为完成,并记录相关信息。 + - 按照 (sample.id, ga_id) 双键标识每次运行。 + - 若该组合结果已存在,则不重复保存。 + - 更新样本状态。 """ - # 检查当前样本结果是否已存在 - if not db_session.query(Result).filter_by(s_id=self.sample.id).first(): - # 生成需要保存的结果列表 + # 1️⃣ 检查该 sample + ga_id 是否已有结果 + exists = db_session.query(Result).filter_by( + s_id=self.sample.id, + ga_id=ga_id + ).first() + + if not exists: + # 2️⃣ 构造要保存的结果列表 lst_result_info = [ Result( s_id=self.sample.id, id_firm=firm.unique_id, id_product=prod.unique_id, ts=ts, - status=status + status=status, + ga_id=ga_id, # 标记当前代次 ) for firm in self.company_agents for prod, dct_status_supply in firm.dct_prod_up_prod_stat.items() @@ -892,13 +903,14 @@ class MyModel(Model): for status, ts in dct_status_supply['p_stat'] ] - # 批量保存结果到数据库 + # 3️⃣ 插入结果 if lst_result_info: db_session.bulk_save_objects(lst_result_info) db_session.commit() - # 更新样本状态为已完成 + # 4️⃣ 更新样本状态 self.sample.is_done_flag = 1 self.sample.computer_name = platform.node() self.sample.stop_t = self.int_stop_ts db_session.commit() + diff --git a/orm.py b/orm.py index ffe995f..a02ccfa 100644 --- a/orm.py +++ b/orm.py @@ -105,6 +105,9 @@ class Result(Base): sample = relationship('Sample', back_populates='result', uselist=False) + # 💥 新增 GA 调用 ID,用于标记属于哪一次遗传算法运行 + ga_id = Column(String(50), nullable=True) + def __repr__(self): return f''