From 0285494a43c407d929b7c6ed2cef74447d1477a7 Mon Sep 17 00:00:00 2001 From: Cricial <2911646453@qq.com> Date: Sat, 24 Aug 2024 16:13:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E7=89=88=E6=9C=AC01?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/csv-editor.xml | 30 +++ __pycache__/computation.cpython-38.pyc | Bin 0 -> 1385 bytes __pycache__/controller_db.cpython-38.pyc | Bin 0 -> 8257 bytes __pycache__/model.cpython-38.pyc | Bin 0 -> 9493 bytes __pycache__/orm.cpython-38.pyc | Bin 0 -> 3629 bytes computation.py | 6 +- controller_db.py | 5 + firm.py | 1 - input_data/BomCateNet.csv | 108 ++++++++++ input_data/BomNodes.csv | 108 ++++++++++ input_data/Firm_amended.csv | 172 +++++++++++++++ input_data/oa_with_exp.csv | 37 ++++ input_data/oa_without_exp.csv | 3 + input_data/xv_with_exp.csv | 5 + input_data/xv_without_exp.csv | 3 + model.py | 263 ++++++++++++++++------- scheduler.py | 27 --- 17 files changed, 662 insertions(+), 106 deletions(-) create mode 100644 .idea/csv-editor.xml create mode 100644 __pycache__/computation.cpython-38.pyc create mode 100644 __pycache__/controller_db.cpython-38.pyc create mode 100644 __pycache__/model.cpython-38.pyc create mode 100644 __pycache__/orm.cpython-38.pyc create mode 100644 input_data/BomCateNet.csv create mode 100644 input_data/BomNodes.csv create mode 100644 input_data/Firm_amended.csv create mode 100644 input_data/oa_with_exp.csv create mode 100644 input_data/oa_without_exp.csv create mode 100644 input_data/xv_with_exp.csv create mode 100644 input_data/xv_without_exp.csv delete mode 100644 scheduler.py diff --git a/.idea/csv-editor.xml b/.idea/csv-editor.xml new file mode 100644 index 0000000..5d9af44 --- /dev/null +++ b/.idea/csv-editor.xml @@ -0,0 +1,30 @@ + + + + + + \ No newline at end of file diff --git a/__pycache__/computation.cpython-38.pyc b/__pycache__/computation.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..270b41bf4f517643839ea4cde0c9f3c5c0ade5da GIT binary patch literal 1385 zcmZ7$O=}xRbl&XjhvbzVQd8POsh~MzFT%%ATvIBi=?4{tB!>El}tsDOkPbr}QuEwWs`r9_qeX#fj*^yqWjreSgf;Uaw1V$rpbej$K0jw#fQ& z5cvvs^*sVfBxHoIPT+tz&1mj$2Q1CWSnhHch;sD<#98L$KKFqI&GUx9QayJXyv9qG&95;&6{+UzzP!!n=FOl;D!&N8-W*9#8;l~RJ$!9wSvB5~GSgHx4uXg_tWw!w`}&&b4P^RfXZXeVX{B^E zK07-bADk!0vCa>4IZ=tJ#<{BEaq`}|!SuWdgh-3j2+^~CSZ@jSV7|Q;!{C;sft^ue zGjh9pyx7WGTJtN3cN7U&tXyPx_Yuas-pkqQ9m7f$WS;7hcDFQM$bqP6ooyd#p}HvI%Jpxb3DWy|mZ?&=c+DaQ2d?gi9ftPglD=x_9tJziA;tK(y_VqTRbe`9`9SZ=ySG$MDTVWs+kNixmssLM11{9ILm4#+~XE zC!>Qx+V*D?$k-@@ad4+7&-5Ln@s1ECex4~I8b}&;qRuP*p_Q-+Yg`QLNTGG3rjf60 ztMH&QS|m7)oK+%~+?R4hC(p>OKMjAq2pj z5GdTcVXO<`jpulj0=r?9{>z*IIl3_4`d`{2sy9)56uEW?ia57HbcH~xvo@emh|^h| ztzNX95B-@1cGA{>bxGr|Ml8LZpnz_=EhXw`J0kjH1f1FNTjj+w=Tq!AZRe)xCGS2U h{3F^AqZM8=(OPUn4|Z4X?b+t6EGfX~LyVpw{0}v$OHTj* literal 0 HcmV?d00001 diff --git a/__pycache__/controller_db.cpython-38.pyc b/__pycache__/controller_db.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a3bf1d70abddf08b331563b5c433f810c2b6d1f6 GIT binary patch literal 8257 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 LobSwbCdm8069$-_ literal 0 HcmV?d00001 diff --git a/computation.py b/computation.py index 8712c49..679f87d 100644 --- a/computation.py +++ b/computation.py @@ -1,7 +1,7 @@ import os import datetime +from mesa import Model -from model import Model from typing import TYPE_CHECKING if TYPE_CHECKING: @@ -35,6 +35,6 @@ class Computation: 'seed': sample_random.seed, **dct_exp} model = Model(dct_sample_para) - - model.run(display=False) + for i in range(100): + model.step() return False diff --git a/controller_db.py b/controller_db.py index 3314ab7..2ed557b 100644 --- a/controller_db.py +++ b/controller_db.py @@ -101,10 +101,15 @@ class ControllerDB: 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 只会得到 键 和 值 diff --git a/firm.py b/firm.py index 241aa3c..643a719 100644 --- a/firm.py +++ b/firm.py @@ -1,6 +1,5 @@ from mesa import Agent - class FirmAgent(Agent): def __init__(self, unique_id, model, code, type_region, revenue_log, a_lst_product): # 调用超类的 __init__ 方法 diff --git a/input_data/BomCateNet.csv b/input_data/BomCateNet.csv new file mode 100644 index 0000000..565c59d --- /dev/null +++ b/input_data/BomCateNet.csv @@ -0,0 +1,108 @@ +Code,1,1.1,1.1.1,1.1.2,1.1.3,1.2,1.2.1,1.2.2,1.2.3,1.3,1.3.1,1.3.1.1,1.3.1.2,1.3.1.3,1.3.1.4,1.3.1.5,1.3.1.6,1.3.1.7,1.3.2,1.3.2.1,1.3.3,1.3.3.1,1.3.3.2,1.3.3.3,1.3.3.4,1.3.3.5,1.3.3.6,1.3.3.7,1.3.4,1.3.4.1,1.3.4.2,1.3.4.3,1.3.5,1.3.5.1,1.4,1.4.1,1.4.1.1,1.4.1.2,1.4.1.3,1.4.1.4,1.4.1.5,1.4.2,1.4.2.1,1.4.2.2,1.4.2.3,1.4.2.4,1.4.2.5,1.4.2.6,1.4.2.7,1.4.3,1.4.3.1,1.4.3.2,1.4.3.3,1.4.3.4,1.4.3.5,1.4.3.6,1.4.4,1.4.4.1,1.4.4.2,1.4.4.3,1.4.4.4,1.4.4.5,1.4.5,1.4.5.1,1.4.5.2,1.4.5.3,1.4.5.4,1.4.5.5,1.4.5.6,1.4.5.7,1.4.5.8,1.4.5.9,2,2.1,2.1.1,2.1.1.1,2.1.1.2,2.1.1.3,2.1.1.4,2.1.1.5,2.1.2,2.1.2.1,2.1.2.2,2.1.2.3,2.1.2.4,2.1.3,2.1.3.1,2.1.3.2,2.1.3.3,2.1.3.4,2.1.3.5,2.1.3.6,2.1.3.7,2.1.4,2.1.4.1,2.1.4.1.1,2.1.4.1.2,2.1.4.1.3,2.1.4.1.4,2.1.4.2,2.1.4.2.1,2.1.4.2.2,2.2,2.3,2.3.1,2.3.2,2.3.3 +1,,1,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.1,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.1.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.1.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.1.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.2,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.2.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.2.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.2.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3,,,,,,,,,,,1,,,,,,,,1,,1,,,,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.1,,,,,,,,,,,,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.1.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.1.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.1.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.1.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.1.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.1.6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.1.7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.2,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.2.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.3,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.3.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.3.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.3.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.3.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.3.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.3.6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.3.7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.4.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.4.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.4.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.3.5.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,,,,,,,,1,,,,,,,1,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.1.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.1.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.1.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.1.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.1.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.2.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.2.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.2.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.2.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.2.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.2.6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.2.7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.3.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.3.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.3.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.3.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.3.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.3.6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.4.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.4.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.4.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.4.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.4.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.5.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.5.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.5.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.5.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.5.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.5.6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.5.7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.5.8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1.4.5.9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,, +2.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,,,,,1,,,,,,,,1,,,,,,,,,,,,, +2.1.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.1.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.1.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.1.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.1.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.1.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,, +2.1.2.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.2.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.2.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.2.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,,,,,,,,,,,,,, +2.1.3.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.3.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.3.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.3.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.3.5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.3.6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.3.7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,,,,,,, +2.1.4.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,, +2.1.4.1.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.4.1.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.4.1.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.4.1.4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.4.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,, +2.1.4.2.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.1.4.2.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1 +2.3.1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.3.2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +2.3.3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/input_data/BomNodes.csv b/input_data/BomNodes.csv new file mode 100644 index 0000000..e3c410b --- /dev/null +++ b/input_data/BomNodes.csv @@ -0,0 +1,108 @@ +Index,Code,Level,Name +0,1,0,工业互联网 +1,1.1,1,工业自动化硬件 +2,1.1.1,2,工业计算芯片 +3,1.1.2,2,工业控制器 +4,1.1.3,2,工业服务器 +5,1.2,1,工业互联网网络 +6,1.2.1,2,网络互联服务 +7,1.2.2,2,标识解析服务 +8,1.2.3,2,数据互通服务 +9,1.3,1,工业软件 +10,1.3.1,2,设计研发软件 +11,1.3.1.1,3,计算机辅助设计CAD +12,1.3.1.2,3,计算机辅助工程CAE +13,1.3.1.3,3,计算机辅助制造CAM +14,1.3.1.4,3,计算机辅助工艺过程设计CAPP +15,1.3.1.5,3,产品数据管理PDM +16,1.3.1.6,3,产品生命周期管理PLM +17,1.3.1.7,3,电子设计自动化EDA +18,1.3.2,2,采购供应软件 +19,1.3.2.1,3,供应链管理SCM +20,1.3.3,2,生产制造软件 +21,1.3.3.1,3,制造执行系统MES +22,1.3.3.2,3,分布式控制系统DCS +23,1.3.3.3,3,数据采集与监视控制系统SCADA +24,1.3.3.4,3,可编程逻揖控制系统PLC +25,1.3.3.5,3,企业资产管理系统EAM +26,1.3.3.6,3,运维保障系统MRO +27,1.3.3.7,3,故障预测与健康管理PHM +28,1.3.4,2,企业运营管理软件 +29,1.3.4.1,3,企业资源计划ERP +30,1.3.4.2,3,客户关系管理CRM +31,1.3.4.3,3,人力资源管理HRM +32,1.3.5,2,仓储物流软件 +33,1.3.5.1,3,仓储物流管理WMS +34,1.4,1,工业互联网安全管理 +35,1.4.1,2,设备安全 +36,1.4.1.1,3,工业防火墙 +37,1.4.1.2,3,下一代防火墙 +38,1.4.1.3,3,防毒墙 +39,1.4.1.4,3,入侵检测系统 +40,1.4.1.5,3,统一威胁管理系统 +41,1.4.2,2,控制安全 +42,1.4.2.1,3,工控安全监测与审计 +43,1.4.2.2,3,工控主机卫士 +44,1.4.2.3,3,工控漏洞扫描 +45,1.4.2.4,3,安全隔离与信息交换系统 +46,1.4.2.5,3,安全日志与审计 +47,1.4.2.6,3,隐私计算 +48,1.4.2.7,3,工控原生安全 +49,1.4.3,2,网络安全 +50,1.4.3.1,3,网络漏洞扫描和补丁管理 +51,1.4.3.2,3,流量检测 +52,1.4.3.3,3,APT检测 +53,1.4.3.4,3,攻击溯源 +54,1.4.3.5,3,负载均衡 +55,1.4.3.6,3,沙箱类设备 +56,1.4.4,2,平台安全 +57,1.4.4.1,3,身份鉴别与访问控制 +58,1.4.4.2,3,密钥管理 +59,1.4.4.3,3,接入认证 +60,1.4.4.4,3,工业应用行为监控 +61,1.4.4.5,3,安全态势感知 +62,1.4.5,2,数据安全 +63,1.4.5.1,3,恶意代码检测系统 +64,1.4.5.2,3,数据防泄漏系统 +65,1.4.5.3,3,数据审计系统 +66,1.4.5.4,3,数据脱敏 +67,1.4.5.5,3,敏感数据发现与监控 +68,1.4.5.6,3,数据容灾备份 +69,1.4.5.7,3,数据恢复 +70,1.4.5.8,3,数据加密 +71,1.4.5.9,3,数据防火墙 +72,2,0,工业互联网平台 +73,2.1,1,PaaS +74,2.1.1,2,开发工具 +75,2.1.1.1,3,算法建模工具 +76,2.1.1.2,3,低代码开发工具 +77,2.1.1.3,3,流程开发工具 +78,2.1.1.4,3,组态建模工具 +79,2.1.1.5,3,数字孪生建模工具 +80,2.1.2,2,工业模型库 +81,2.1.2.1,3,数据算法模型 +82,2.1.2.2,3,业务流程模型 +83,2.1.2.3,3,研发仿真模型 +84,2.1.2.4,3,行业机理模型 +85,2.1.3,2,工业物联网 +86,2.1.3.1,3,物联网服务 +87,2.1.3.2,3,平台基础服务 +88,2.1.3.3,3,工业引擎服务 +89,2.1.3.4,3,应用管理服务 +90,2.1.3.5,3,容器服务 +91,2.1.3.6,3,微服务 +92,2.1.3.7,3,制造类API +93,2.1.4,2,工业大数据 +94,2.1.4.1,3,工业大数据存储 +95,2.1.4.1.1,4,关系型数据库 +96,2.1.4.1.2,4,分布式数据库 +97,2.1.4.1.3,4,实时数据库 +98,2.1.4.1.4,4,时序数据库 +99,2.1.4.2,3,工业大数据管理 +100,2.1.4.2.1,4,数据质量管理 +101,2.1.4.2.2,4,数据安全管理 +102,2.2,1,IaaS +103,2.3,1,边缘层 +104,2.3.1,2,工业数据接入 +105,2.3.2,2,边缘数据处理 +106,2.3.3,2,协议转换 diff --git a/input_data/Firm_amended.csv b/input_data/Firm_amended.csv new file mode 100644 index 0000000..9561f52 --- /dev/null +++ b/input_data/Firm_amended.csv @@ -0,0 +1,172 @@ +Code,Stock_Region,Report_Year,Assets,Revenue_Log,Revenue,Size,Num_Employ_Log,Num_Employ,Source,Type_Region,1,1.1,1.1.1,1.1.2,1.1.3,1.2,1.2.1,1.2.2,1.2.3,1.3,1.3.1,1.3.1.1,1.3.1.2,1.3.1.3,1.3.1.4,1.3.1.5,1.3.1.6,1.3.1.7,1.3.2,1.3.2.1,1.3.3,1.3.3.1,1.3.3.2,1.3.3.3,1.3.3.4,1.3.3.5,1.3.3.6,1.3.3.7,1.3.4,1.3.4.1,1.3.4.2,1.3.4.3,1.3.5,1.3.5.1,1.4,1.4.1,1.4.1.1,1.4.1.2,1.4.1.3,1.4.1.4,1.4.1.5,1.4.2,1.4.2.1,1.4.2.2,1.4.2.3,1.4.2.4,1.4.2.5,1.4.2.6,1.4.2.7,1.4.3,1.4.3.1,1.4.3.2,1.4.3.3,1.4.3.4,1.4.3.5,1.4.3.6,1.4.4,1.4.4.1,1.4.4.2,1.4.4.3,1.4.4.4,1.4.4.5,1.4.5,1.4.5.1,1.4.5.2,1.4.5.3,1.4.5.4,1.4.5.5,1.4.5.6,1.4.5.7,1.4.5.8,1.4.5.9,2,2.1,2.1.1,2.1.1.1,2.1.1.2,2.1.1.3,2.1.1.4,2.1.1.5,2.1.2,2.1.2.1,2.1.2.2,2.1.2.3,2.1.2.4,2.1.3,2.1.3.1,2.1.3.2,2.1.3.3,2.1.3.4,2.1.3.5,2.1.3.6,2.1.3.7,2.1.4,2.1.4.1,2.1.4.1.1,2.1.4.1.2,2.1.4.1.3,2.1.4.1.4,2.1.4.2,2.1.4.2.1,2.1.4.2.2,2.2,2.3,2.3.1,2.3.2,2.3.3 +0,SH,2021,42040000000,23.11111077,10890000000,L,8.908288886,7393,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +1,,2021,524000000,18.74276424,138000000,M,5.141663557,171,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +2,,,,18.91495248,,M,4.727387819,113,qichacha,Beijing,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +3,,,,17.40772217,,S,3.17805383,24,qichacha,Beijing,,,,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +4,,,,19.65580702,,M,5.488937726,242,qichacha,Beijing,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +5,,,,18.5031337,,S,4.304065093,74,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +6,,2017,902000000,18.88441476,159000000,M,5.117993812,167,qichacha,Beijing,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,, +7,,,,20.22851329,,L,6.077642243,436,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,, +8,,,,20.02307783,,M,5.866468057,353,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +9,,,,20.12502381,,L,5.97126184,392,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +10,,,,18.99744465,,M,4.812184355,123,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +11,SZ,2021,2831000000,20.33022325,675000000,L,7.437795122,1699,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +12,,,,19.4654905,,M,5.293304825,199,qichacha,Beijing,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +13,SZ,2021,8632000000,21.62748399,2470000000,L,9.069698042,8688,qichacha,Beijing,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,,,1,1,1,1,,1,1,,,1,1,1 +14,SZ,2021,21070000000,23.11019208,10880000000,L,9.372969295,11766,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +15,SH,2021,18310000000,22.89060378,8735000000,L,9.793616881,17919,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +16,SZ,2021,2357000000,20.6624537,941000000,L,7.398174093,1633,qichacha,Beijing,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1 +17,,,,17.68758638,,S,3.465735903,32,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +18,,,,19.78721596,,M,5.624017506,277,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +19,,,,18.19661508,,S,3.988984047,54,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +20,,,,16.33896504,,XS,2.079441542,8,qichacha,Beijing,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +21,SE,2021,4348926705,21.58399273,2364879075,L,9.998797732,22000,hexagon,Foreign,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +22,,,,18.78627894,,S,4.59511985,99,qichacha,Beijing,,,,,,,1,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,1,1,1,1,1,1,1,,,1,1,1,1,,1,1,,,1,1,1 +23,US,2021,10365469660,22.30379074,4857504838,S,4.143134726,63,hollysys,Beijing,,,,1,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,1,1,1 +24,HK,2021,2486434448,21.10974082,1471783581,M,5.605802066,272,hkexnews,Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +25,SZ,2021,1802000000,20.17681304,579000000,L,6.492239835,660,qichacha,Beijing,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +26,,,,14.9903437,,XS,0.693147181,2,,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,,,,,,,,,,,,,, +27,,,,19.43065419,,M,5.257495372,192,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +28,HK,2021,19000334000,22.12943807,4080307000,L,7.181591945,1315,hkexnews,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,, +29,US,2021,4.96507E+11,27.58140221,9.51592E+11,M,5.891644212,362,jd,Beijing,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +30,,,,19.34600737,,M,5.170483995,176,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +31,,,,17.01327571,,S,2.772588722,16,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,, +32,,,,18.75634351,,S,4.564348191,96,qichacha,Beijing,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +33,,,,18.66057858,,S,4.465908119,87,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,, +34,,,,19.69132991,,M,5.525452939,251,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +35,,,,18.28276201,,S,4.077537444,59,qichacha,Beijing,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +36,SH,2021,1989000000,20.90642038,1201000000,L,6.711740395,822,qichacha,Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +37,SZ,2021,4765000000,21.68223284,2609000000,L,8.394347361,4422,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,1,,,,,,,1,,,,,,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +38,,,,17.12785796,,S,2.890371758,18,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +39,US,2021,50085024000,23.98443519,26080016000,,,,marketwatch,Foreign,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +40,SH,2021,13480000000,22.48267428,5809000000,L,9.17543832,9657,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,1,,,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +41,SZ,2021,8936000000,22.20168349,4386000000,L,8.792853289,6587,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,,,,,,,,,,1,1,,1,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +42,,,,20.38102153,,M,6.234410726,510,qichacha,Beijing,,,,,,,,,,,,1,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +43,,2021,3042000000,21.13006339,1502000000,L,6.385194399,593,qichacha,Beijing,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +44,,2021,3049000000,21.52884845,2238000000,M,6.754604099,858,qichacha,Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +45,,,,21.43051418,,M,7.313220387,1500,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,, +46,,,,17.90466593,,S,3.688879454,40,qichacha,Beijing,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +47,,,,21.33304811,,L,7.21303166,1357,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,1,1,1,1,,,,,,,1,,,,,,,,,,,,,,, +48,SH,2021,26190000000,23.13917962,11200000000,L,8.319473692,4103,qichacha,Non_Beijing,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +49,,2017,219000000,18.6195316,122000000,M,5.786897381,326,qichacha,Beijing,,,,,,,,,,,,1,,,1,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,, +50,,,,20.12502381,,M,5.97126184,392,qichacha,Non_Beijing,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +51,,,,18.79605616,,M,4.605170186,100,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +52,,,,18.36189706,,S,4.158883083,64,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +53,SZ,2021,11600000000,21.93282302,3352000000,L,8.743372131,6269,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,1,1,,,,,,,1,1,1,1,,,,,1,,,,1,1,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +54,,,,21.48044599,,L,7.364547014,1579,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,1,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +55,,,,20.09221468,,M,5.937536205,379,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,,,,1,1,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +56,,2020,439000000,19.01400759,181000000,L,5.897153868,364,qichacha,Beijing,,,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +57,,,,19.12338465,,M,4.941642423,140,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1 +58,SH,2021,17330000000,22.91290617,8932000000,L,10.07255499,23684,qichacha,Beijing,,,,,,,,1,,,,,,,,,1,,1,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, +59,,,,18.9063051,,M,4.718498871,112,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +60,,,,18.12174548,,S,3.912023005,50,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +61,,2017,629000000,19.3409635,251000000,L,5.811140993,334,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +62,,,,18.64933193,,S,4.454347296,86,qichacha,Beijing,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,, +63,,,,20.05292974,,M,5.897153868,364,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +64,,,,19.22865749,,M,5.049856007,156,qichacha,Beijing,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +65,SH,2021,7.62234E+11,26.80902186,4.39552E+11,L,12.53868745,278922,qichacha,Beijing,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +66,SH,2021,5.933E+11,26.51597452,3.279E+11,L,12.39942069,242661,qichacha,Beijing,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +67,SH,2021,1.84E+12,27.46645067,8.48258E+11,L,8.430545385,4585,qichacha,Beijing,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +68,SH,2021,3117000000,20.24199902,618000000,L,7.430707083,1687,qichacha,Beijing,,,,,,,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +69,SZ,2021,66430000000,24.93746536,67640000000,L,9.74957851,17147,qichacha,Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +70,US,2021,2.52378E+11,25.92778688,1.82094E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +71,US,2021,8003332000,22.02110911,3661391520,,,,marketwatch,Foreign,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +72,US,2021,43511280320,23.29726635,13118199200,,,,marketwatch,Foreign,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +73,JP,2021,83161023470,24.06291953,28209355790,,,,fanuc,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,, +74,US,2021,4.43554E+11,26.18956307,2.36583E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,, +75,US,2021,9.08167E+11,26.70107477,3.94575E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +76,,2021,,20.06161732,516000000,,,,zippia,Foreign,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +77,US,2021,9.02016E+11,26.35266781,2.78496E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +78,,2021,,21.41879181,2004763250,,,,forbes,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +79,US,2021,31012012800,23.24364049,12433253920,,,,marketwatch,Foreign,,,,,,,,,,,,1,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,1,1,1,1,1,1,,1,,,,,1,,,,,1,1,1 +80,US,2021,4.56151E+11,25.7083355,1.46214E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +81,US,2021,4.89643E+11,25.97843016,1.91553E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,1,,,,,1,,,,,,, +82,,2021,,18.0265116,67424000,,,,zippia,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,, +83,US,2021,1.70039E+11,25.55511763,1.25443E+11,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +84,,2021,7.80541E+11,27.07058915,5.70962E+11,,,,bosch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,1,,,,,,,,,,1,,, +85,FR,2021,1.04402E+12,26.60060295,3.56858E+11,,,,dassault ,Foreign,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +86,US,2021,8.49095E+11,27.11512238,5.96964E+11,,,,marketwatch,Foreign,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +87,US,2021,1.69771E+11,25.56118703,1.26207E+11,,,,marketwatch,Foreign,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +88,US,2021,3.96969E+11,25.97925591,1.91711E+11,,,,marketwatch,Foreign,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +89,US,2021,75779072000,24.59715157,48129040000,,,,marketwatch,Foreign,,,,1,,,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +90,,2023,,22.39969825,5346448000,,,,zoominfo,Foreign,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +91,,2023,,21.2735583,1733760000,,6.913737351,1006,rocketreach,Foreign,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +92,JP,2021,47620285930,24.38782633,39038974590,,,,omron,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +93,US,2021,30177737120,23.74657041,20559118720,,,,marketwatch,Foreign,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +94,JP,2021,1.12124E+12,27.50709063,8.83441E+11,,,,mitsubishi,Foreign,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +95,FR,2021,4.00517E+11,26.08097343,2.12238E+11,,,,schneider,Foreign,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,, +96,US,2021,6.70779E+11,26.56026085,3.42748E+11,,,,marketwatch,Foreign,,,,,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +97,US,2021,1.36825E+12,26.95829817,5.10317E+11,,,,marketwatch,Foreign,,,,,,1,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,, +98,US,2021,2.2964E+12,27.77637214,1.15645E+12,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +99,XE,2021,1.02335E+12,26.84835831,4.57187E+11,,,,siemens,Foreign,,,,1,,,1,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,, +100,US,2021,60215548800,24.08697187,28896082560,,,,marketwatch,Foreign,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +101,US,2021,3.59976E+11,24.64226064,50349807680,,,,marketwatch,Foreign,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +102,US,2021,2.89338E+12,28.80423839,3.23238E+12,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, +103,US,2021,94016180090,25.03108636,74278423930,,,,marketwatch,Foreign,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +104,XE,2021,1.71332E+11,25.12029384,81209156000,,10.82552176,50288,infineon ,Foreign,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +105,US,2021,1.15863E+12,27.02163609,5.43685E+11,,,,marketwatch,Foreign,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +106,US,2021,1.69022E+12,27.29874466,7.17289E+11,,,,alibaba ,Non_Beijing,,1,,,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,,,,,,,,,,,,,,,1,,,, +107,SH,2021,4852000000,21.32210234,1820000000,L,8.191740021,3611,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +108,HK,2021,3.80034E+11,25.54751533,1.24493E+11,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,1,,,, +109,SH,2021,17860000000,23.18796978,11760000000,L,8.567506005,5258,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +110,,,,18.66057858,,S,4.465908119,87,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +111,SZ,2021,2638000000,21.30436351,1788000000,L,8.360305436,4274,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,1,,,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +112,SZ,2021,545000000,19.36458664,257000000,L,6.376726948,588,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +113,,,,19.49912236,,M,5.327876169,206,qichacha,Non_Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +114,,,,18.79605616,,M,4.605170186,100,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +115,,2021,2.666E+11,26.80913106,4.396E+11,L,12.16509439,191970,qichacha,Non_Beijing,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,, +116,SH,2021,2342000000,19.07820075,193000000,M,5.683579767,294,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +117,,,,14.9903437,,XS,0.693147181,2,,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,, +118,,,,18.44907397,,S,4.248495242,70,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +119,SZ,2021,10070000000,22.44941955,5619000000,L,9.157572306,9486,qichacha,Non_Beijing,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +120,,,,21.70305471,,M,7.593374193,1985,qichacha,Non_Beijing,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +121,,,,17.97502126,,S,3.761200116,43,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +122,SZ,2021,2668000000,20.74110576,1018000000,L,6.966024187,1060,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +123,SZ,2021,2576000000,21.63595007,2491000000,L,7.028201432,1128,qichacha,Non_Beijing,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +124,SH,2021,2.177E+11,26.15085554,2.276E+11,L,11.56051491,104874,qichacha,Non_Beijing,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,, +125,,,,18.81532064,,M,4.624972813,102,qichacha,Non_Beijing,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +126,,2021,,27.17973246,6.36807E+11,L,9.210340372,10000,qichacha,Non_Beijing,,1,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,1,,,,,,,,,,,,,,,,,1,1,,, +127,,2021,,23.0573496,10320000000,M,8.853665428,7000,qichacha,Non_Beijing,,,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +128,SZ,2021,3800000000,21.08443069,1435000000,L,7.557472902,1915,qichacha,Non_Beijing,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +129,SZ,2021,3399000000,21.21429683,1634000000,L,7.857093865,2584,qichacha,Non_Beijing,,,,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +130,HK,2021,11087132000,22.15217586,4174147000,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +131,,,,16.45354728,,S,2.197224577,9,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +132,SZ,2021,3337000000,20.8542941,1140000000,L,7.543273347,1888,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +133,SZ,2021,6249000000,19.47499277,287000000,L,6.107022888,449,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +134,,2019,446000000,19.52593758,302000000,L,6.415096959,611,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +135,SH,2021,4155000000,21.3275818,1830000000,L,7.276556403,1446,qichacha,Non_Beijing,,,,,1,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,1,1,,,,,,,,,,1,,,, +136,SZ,2021,3.879E+11,26.56216179,3.434E+11,L,12.01853149,165799,qichacha,Non_Beijing,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +137,NQ,,381000000,19.44672234,279000000,M,6.65544035,777,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,, +138,SZ,2021,2120000000,20.77300793,1051000000,L,7.329749689,1525,qichacha,Non_Beijing,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +139,SH,2021,772000000,19.79944684,397000000,L,6.244166901,515,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +140,SH,2021,1944000000,20.74990777,1027000000,L,7.499976541,1808,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,1,,1,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +141,,,,19.45071314,,M,5.278114659,196,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +142,SZ,2021,10950000000,22.64092347,6805000000,L,9.09346942,8897,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,1,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +143,,,,21.03606772,,L,6.907755279,1000,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +144,,2021,1130000000,20.06355343,517000000,L,6.263398263,525,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,, +145,,,,15.38479015,,S,1.098612289,3,,Non_Beijing,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +146,,2021,297000000,19.27934236,236000000,M,4.997212274,148,qichacha,Non_Beijing,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +147,SZ,2021,9607000000,22.77314983,7767000000,L,9.041329829,8445,qichacha,Non_Beijing,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +148,HK,2021,1.61236E+12,27.05141331,5.60118E+11,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,1,,,,,,,,,,,,,,,,,1,,,, +149,,,,18.26613213,,S,4.060443011,58,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,, +150,SH,2021,2039000000,21.97859693,3509000000,L,5.774551546,322,qichacha,Non_Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +151,,2017,156000000,17.63219378,45453200,S,4.9698133,144,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +152,SZ,2021,7142000000,21.74894895,2789000000,L,7.850493181,2567,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +153,,,,19.12338465,,M,4.941642423,140,qichacha,Non_Beijing,,,,,,,,,,,,1,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +154,,,,19.13030869,,S,4.94875989,141,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,, +155,HK,2021,2.92892E+11,26.51722152,3.28309E+11,,,,xiaomi,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,, +156,,,,14.9903437,,XS,0.693147181,2,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +157,,,,22.72444558,,L,8.643297068,5672,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +158,,2018,425000000,19.54235831,307000000,L,6.240275845,513,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +159,SZ,2021,1.67E+11,25.15800351,84330000000,L,9.647497927,15483,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, +160,HK,2021,9505464000,22.65401405,6894667000,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +161,,,,21.9929142,,L,7.891330758,2674,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1 +162,,,,17.88978166,58807600,M,5.370638028,215,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +163,,,,18.36189706,,S,4.158883083,64,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,1,1,,,,, +164,,,,21.83955113,,L,7.733683571,2284,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +165,,,,18.29911239,,S,4.094344562,60,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1,1,,,,,,,,,,,,,,,,,,,,,, +166,,,,19.83851913,,M,5.676753802,292,qichacha,Non_Beijing,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +167,SZ,2021,78220000000,24.43927396,41100000000,L,9.500843462,13371,qichacha,Non_Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +168,SH,2021,10350000000,22.23155657,4519000000,L,8.528528701,5057,qichacha,Non_Beijing,,,,1,,,,,,,,,,,,,,,,,,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1,1 +169,SH,2021,2.30233E+11,24.27012079,34704000000,L,8.55120807,5173,qichacha,Non_Beijing,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +170,,,,18.42068074,100000000,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/input_data/oa_with_exp.csv b/input_data/oa_with_exp.csv new file mode 100644 index 0000000..9bbc6a7 --- /dev/null +++ b/input_data/oa_with_exp.csv @@ -0,0 +1,37 @@ +X12,X1,X2,X3,X13,X14,X15,X16,X4,X5,X6,X7,X8,X9,X10,X11,X17,X18,X19,X20,X21,X22,X23 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1 +2,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2 +0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2 +1,0,0,0,1,1,1,2,0,0,1,1,1,1,1,1,2,2,2,0,0,0,0 +2,0,0,0,2,2,2,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1 +0,0,0,1,0,1,2,0,1,1,0,0,0,1,1,1,1,2,2,0,1,1,2 +1,0,0,1,1,2,0,1,1,1,0,0,0,1,1,1,2,0,0,1,2,2,0 +2,0,0,1,2,0,1,2,1,1,0,0,0,1,1,1,0,1,1,2,0,0,1 +0,0,1,0,0,2,1,0,1,1,0,1,1,0,0,1,2,1,2,1,0,2,1 +1,0,1,0,1,0,2,1,1,1,0,1,1,0,0,1,0,2,0,2,1,0,2 +2,0,1,0,2,1,0,2,1,1,0,1,1,0,0,1,1,0,1,0,2,1,0 +0,0,1,1,1,2,0,2,0,1,1,0,1,0,1,0,1,0,2,2,1,0,1 +1,0,1,1,2,0,1,0,0,1,1,0,1,0,1,0,2,1,0,0,2,1,2 +2,0,1,1,0,1,2,1,0,1,1,0,1,0,1,0,0,2,1,1,0,2,0 +0,0,1,1,1,2,1,0,1,0,1,1,0,1,0,0,0,2,1,2,2,1,0 +1,0,1,1,2,0,2,1,1,0,1,1,0,1,0,0,1,0,2,0,0,2,1 +2,0,1,1,0,1,0,2,1,0,1,1,0,1,0,0,2,1,0,1,1,0,2 +0,1,0,1,1,0,2,2,1,0,0,1,1,0,1,0,2,0,1,1,0,1,2 +1,1,0,1,2,1,0,0,1,0,0,1,1,0,1,0,0,1,2,2,1,2,0 +2,1,0,1,0,2,1,1,1,0,0,1,1,0,1,0,1,2,0,0,2,0,1 +0,1,0,1,1,1,2,2,0,1,1,1,0,0,0,1,0,1,0,0,2,2,1 +1,1,0,1,2,2,0,0,0,1,1,1,0,0,0,1,1,2,1,1,0,0,2 +2,1,0,1,0,0,1,1,0,1,1,1,0,0,0,1,2,0,2,2,1,1,0 +0,1,0,0,2,1,0,1,1,1,1,0,1,1,0,0,2,2,0,2,0,1,1 +1,1,0,0,0,2,1,2,1,1,1,0,1,1,0,0,0,0,1,0,1,2,2 +2,1,0,0,1,0,2,0,1,1,1,0,1,1,0,0,1,1,2,1,2,0,0 +0,1,1,1,2,1,1,1,0,0,0,0,1,1,0,1,0,0,2,1,2,0,2 +1,1,1,1,0,2,2,2,0,0,0,0,1,1,0,1,1,1,0,2,0,1,0 +2,1,1,1,1,0,0,0,0,0,0,0,1,1,0,1,2,2,1,0,1,2,1 +0,1,1,0,2,2,2,1,1,0,1,0,0,0,1,1,2,1,1,0,1,0,0 +1,1,1,0,0,0,0,2,1,0,1,0,0,0,1,1,0,2,2,1,2,1,1 +2,1,1,0,1,1,1,0,1,0,1,0,0,0,1,1,1,0,0,2,0,2,2 +0,1,1,0,2,0,1,2,0,1,0,1,0,1,1,0,1,2,0,1,1,2,0 +1,1,1,0,0,1,2,0,0,1,0,1,0,1,1,0,2,0,1,2,2,0,1 +2,1,1,0,1,2,0,1,0,1,0,1,0,1,1,0,0,1,2,0,0,1,2 diff --git a/input_data/oa_without_exp.csv b/input_data/oa_without_exp.csv new file mode 100644 index 0000000..dec6a32 --- /dev/null +++ b/input_data/oa_without_exp.csv @@ -0,0 +1,3 @@ +X1,X2,X3,X4,X5,X6,X7,X8 +0,0,0,0,0,0,0,0 +,,,,,,, \ No newline at end of file diff --git a/input_data/xv_with_exp.csv b/input_data/xv_with_exp.csv new file mode 100644 index 0000000..0730991 --- /dev/null +++ b/input_data/xv_with_exp.csv @@ -0,0 +1,5 @@ +n_max_trial,prf_size,prf_conn,cap_limit_prob_type,cap_limit_level,diff_new_conn,remove_t,netw_prf_n +7,TRUE,TRUE,uniform,5,0.3,3,3 +5,FALSE,FALSE,normal,10,0.5,5,2 +3,,,,15,0.7,7,1 +,, \ No newline at end of file diff --git a/input_data/xv_without_exp.csv b/input_data/xv_without_exp.csv new file mode 100644 index 0000000..b497255 --- /dev/null +++ b/input_data/xv_without_exp.csv @@ -0,0 +1,3 @@ +n_max_trial,prf_size,prf_conn,cap_limit_prob_type,cap_limit_level,diff_new_conn,remove_t,netw_prf_n +5,TRUE,TRUE,uniform,10,0.5,5,2 +,,,,,,, \ No newline at end of file diff --git a/model.py b/model.py index e12f4f7..9d9467d 100644 --- a/model.py +++ b/model.py @@ -1,22 +1,34 @@ import json +from random import shuffle import networkx as nx import pandas as pd from mesa import Model -from mesa.time import RandomActivation -from mesa.space import MultiGrid +from mesa.space import MultiGrid, NetworkGrid from mesa.datacollection import DataCollector +from mesa.time import RandomActivation from firm import FirmAgent from product import ProductAgent -from scheduler import CustomScheduler class MyModel(Model): def __init__(self, params): - self.num_agents = params['N'] - self.grid = MultiGrid(params['width'], params['height'], True) - self.schedule = CustomScheduler(self) + # self.num_agents = N + + # NetworkX 图对象 + self.t = 0 + self.network_graph = nx.DiGraph() + + # NetworkGrid 用于管理网格 + self.grid = NetworkGrid(self.network_graph) + + self.data_collector = DataCollector( + agent_reporters={"Product": "name"} + ) + self.schedule = RandomActivation(self) + self.company_agents = [] + self.product_agents = [] # Initialize parameters from `params` self.sample = params['sample'] @@ -34,101 +46,202 @@ class MyModel(Model): self.firm_network = None self.firm_prod_network = None - # Initialize product network - G_bom = nx.adjacency_graph(json.loads(params['g_bom'])) - self.product_network = G_bom - - # Initialize firm network + self.initialize_product_network(params) self.initialize_firm_network() - - # Initialize firm product network - self.initialize_firm_prod_network() - - # Initialize agents + self.initialize_firm_product_network() self.initialize_agents() + self.initialize_disruptions() - # Data collector (if needed) - self.datacollector = DataCollector( - agent_reporters={"Product Code": "code"} - ) + def initialize_product_network(self, params): + """ Initialize the product network and add it to the model. """ + self.product_network = nx.adjacency_graph(json.loads(params['g_bom'])) + self.network_graph.add_edges_from(self.product_network.edges) def initialize_firm_network(self): - # Read firm data and initialize firm network - firm = pd.read_csv("input_data/Firm_amended.csv") - firm['Code'] = firm['Code'].astype('string') - firm.fillna(0, inplace=True) - firm_attr = firm[["Code", "Type_Region", "Revenue_Log"]] - firm_product = [] - for _, row in firm.loc[:, '1':].iterrows(): - firm_product.append(row[row == 1].index.to_list()) - firm_attr['Product_Code'] = firm_product - firm_attr.set_index('Code', inplace=True) - G_Firm = nx.MultiDiGraph() - G_Firm.add_nodes_from(firm["Code"]) + """ Initialize the firm network and add it to the model. """ + Firm = pd.read_csv("input_data/Firm_amended.csv") + Firm['Code'] = Firm['Code'].astype('string') + Firm.fillna(0, inplace=True) + Firm_attr = Firm.loc[:, ["Code", "Type_Region", "Revenue_Log"]] + firm_product = [row[row == 1].index.to_list() for _, row in Firm.loc[:, '1':].iterrows()] + Firm_attr.loc[:, 'Product_Code'] = firm_product + Firm_attr.set_index('Code', inplace=True) - # Add node attributes - firm_labels_dict = {} - for code in G_Firm.nodes: - firm_labels_dict[code] = firm_attr.loc[code].to_dict() - nx.set_node_attributes(G_Firm, firm_labels_dict) + self.firm_network = nx.MultiDiGraph() + self.firm_network.add_nodes_from(Firm["Code"]) - # Add edges based on BOM graph - self.add_edges_based_on_bom(G_Firm) + firm_labels_dict = {code: Firm_attr.loc[code].to_dict() for code in self.firm_network.nodes} + nx.set_node_attributes(self.firm_network, firm_labels_dict) - self.firm_network = G_Firm - - def initialize_firm_prod_network(self): - # Read firm product data and initialize firm product network - firm_prod = pd.read_csv("input_data/Firm_amended.csv") - firm_prod.fillna(0, inplace=True) - firm_prod = pd.DataFrame({'bool': firm_prod.loc[:, '1':].stack()}) + def initialize_firm_product_network(self): + """ Initialize the firm-product network and add it to the model. """ + Firm_Prod = pd.read_csv("input_data/Firm_amended.csv") + Firm_Prod.fillna(0, inplace=True) + firm_prod = pd.DataFrame({'bool': Firm_Prod.loc[:, '1':].stack()}) firm_prod = firm_prod[firm_prod['bool'] == 1].reset_index() firm_prod.drop('bool', axis=1, inplace=True) firm_prod.rename({'level_0': 'Firm_Code', 'level_1': 'Product_Code'}, axis=1, inplace=True) firm_prod['Firm_Code'] = firm_prod['Firm_Code'].astype('string') - G_FirmProd = nx.MultiDiGraph() - G_FirmProd.add_nodes_from(firm_prod.index) + self.firm_prod_network = nx.MultiDiGraph() + self.firm_prod_network.add_nodes_from(firm_prod.index) - # Add node attributes - firm_prod_labels_dict = {} - for code in firm_prod.index: - firm_prod_labels_dict[code] = firm_prod.loc[code].to_dict() - nx.set_node_attributes(G_FirmProd, firm_prod_labels_dict) + firm_prod_labels_dict = {code: firm_prod.loc[code].to_dict() for code in firm_prod.index} + nx.set_node_attributes(self.firm_prod_network, firm_prod_labels_dict) - self.firm_prod_network = G_FirmProd + self.add_edges_to_firm_network() + self.connect_unconnected_nodes() - def add_edges_based_on_bom(self, G_Firm): - # Logic to add edges to the G_Firm graph based on BOM - pass + def add_edges_to_firm_network(self): + """ Add edges to the firm network based on product BOM. """ + Firm = pd.read_csv("input_data/Firm_amended.csv") + Firm['Code'] = Firm['Code'].astype('string') + Firm.fillna(0, inplace=True) + for node in nx.nodes(self.firm_network): + lst_pred_product_code = [] + for product_code in self.firm_network.nodes[node]['Product_Code']: + lst_pred_product_code += list(self.product_network.predecessors(product_code)) + lst_pred_product_code = list(set(lst_pred_product_code)) + lst_pred_product_code = list(sorted(lst_pred_product_code)) + + for pred_product_code in lst_pred_product_code: + lst_pred_firm = Firm['Code'][Firm[pred_product_code] == 1].to_list() + n_pred_firm = self.int_netw_prf_n + if n_pred_firm > len(lst_pred_firm): + n_pred_firm = len(lst_pred_firm) + if self.is_prf_size: + lst_pred_firm_size = [self.firm_network.nodes[pred_firm]['Revenue_Log'] for pred_firm in + lst_pred_firm] + lst_prob = [size / sum(lst_pred_firm_size) for size in lst_pred_firm_size] + lst_choose_firm = self.random.choices(lst_pred_firm, k=n_pred_firm, weights=lst_prob) + else: + lst_choose_firm = self.random.choices(lst_pred_firm, k=n_pred_firm) + lst_add_edge = [(pred_firm, node, {'Product': pred_product_code}) for pred_firm in lst_choose_firm] + self.firm_network.add_edges_from(lst_add_edge) + + # Add edges to firm-prod network + set_node_prod_code = set(self.firm_network.nodes[node]['Product_Code']) + set_pred_succ_code = set(self.product_network.successors(pred_product_code)) + lst_use_pred_prod_code = list(set_node_prod_code & set_pred_succ_code) + + for pred_firm in lst_choose_firm: + pred_node = [n for n, v in self.firm_prod_network.nodes(data=True) if + v['Firm_Code'] == pred_firm and v['Product_Code'] == pred_product_code][0] + for use_pred_prod_code in lst_use_pred_prod_code: + current_node = [n for n, v in self.firm_prod_network.nodes(data=True) if + v['Firm_Code'] == node and v['Product_Code'] == use_pred_prod_code][0] + self.firm_prod_network.add_edge(pred_node, current_node) + + def connect_unconnected_nodes(self): + """ Connect unconnected nodes in the firm network. """ + Firm = pd.read_csv("input_data/Firm_amended.csv") + Firm['Code'] = Firm['Code'].astype('string') + Firm.fillna(0, inplace=True) + for node in nx.nodes(self.firm_network): + if self.firm_network.degree(node) == 0: + for product_code in self.firm_network.nodes[node]['Product_Code']: + current_node = [n for n, v in self.firm_prod_network.nodes(data=True) if + v['Firm_Code'] == node and v['Product_Code'] == product_code][0] + lst_succ_product_code = list(self.product_network.successors(product_code)) + for succ_product_code in lst_succ_product_code: + lst_succ_firm = Firm['Code'][Firm[succ_product_code] == 1].to_list() + n_succ_firm = self.int_netw_prf_n + if n_succ_firm > len(lst_succ_firm): + n_succ_firm = len(lst_succ_firm) + if self.is_prf_size: + lst_succ_firm_size = [self.firm_network.nodes[succ_firm]['Revenue_Log'] for succ_firm in + lst_succ_firm] + lst_prob = [size / sum(lst_succ_firm_size) for size in lst_succ_firm_size] + lst_choose_firm = self.random.choices(lst_succ_firm, k=n_succ_firm, weights=lst_prob) + else: + lst_choose_firm = self.random.choices(lst_succ_firm, k=n_succ_firm) + lst_add_edge = [(node, succ_firm, {'Product': product_code}) for succ_firm in lst_choose_firm] + self.firm_network.add_edges_from(lst_add_edge) + + for succ_firm in lst_choose_firm: + succ_node = [n for n, v in self.firm_prod_network.nodes(data=True) if + v['Firm_Code'] == succ_firm and v['Product_Code'] == succ_product_code][0] + self.firm_prod_network.add_edge(current_node, succ_node) def initialize_agents(self): - # Initialize product and firm agents - for node, attr in self.product_network.nodes(data=True): - product = ProductAgent(node, self, code=node, name=attr['Name']) + """ Initialize agents and add them to the model. """ + for ag_node, attr in self.product_network.nodes(data=True): + product = ProductAgent(ag_node, self,code=attr['code'], name=attr['Name']) self.schedule.add(product) + self.grid.place_agent(product, ag_node) - for node, attr in self.firm_network.nodes(data=True): + for ag_node, attr in self.firm_network.nodes(data=True): firm_agent = FirmAgent( - node, - self, - code=node, + ag_node, self, + code=attr['Code'], type_region=attr['Type_Region'], revenue_log=attr['Revenue_Log'], - a_lst_product=[] # Populate based on products + a_lst_product=[self.schedule.agents[code] for code in attr['Product_Code']] ) self.schedule.add(firm_agent) - - # Initialize disruptions - self.initialize_disruptions() + self.grid.place_agent(firm_agent, ag_node) def initialize_disruptions(self): - # Set the initial firm product disruptions - for firm, products in self.dct_lst_init_disrupt_firm_prod.items(): - for product in products: - if isinstance(firm, FirmAgent): - firm.dct_prod_up_prod_stat[product]['p_stat'].append(('D', self.schedule.steps)) + """ Initialize disruptions in the network. """ + for firm_code, lst_product in self.dct_lst_init_disrupt_firm_prod.items(): + for product_code in lst_product: + self.firm_network.nodes[firm_code]['Product_Code'].remove(product_code) + + # Log disruptions for visualization + self.dct_lst_init_disrupt_firm_prod[firm_code].append(product_code) + + def add_agent(self, agent): + if isinstance(agent, FirmAgent): + self.company_agents.append(agent) + elif isinstance(agent, ProductAgent): + self.product_agents.append(agent) + self.schedule.add(agent) def step(self): - self.schedule.step() - self.datacollector.collect(self) + # 1. Remove edge to customer and disrupt customer up product + for firm in self.company_agents: + for prod in firm.dct_prod_up_prod_stat.keys(): + status, ts = firm.dct_prod_up_prod_stat[prod]['p_stat'][-1] + if status == 'D' and ts == self.t - 1: + firm.remove_edge_to_cus(prod) + + for firm in self.company_agents: + for prod in firm.dct_prod_up_prod_stat.keys(): + for up_prod in firm.dct_prod_up_prod_stat[prod]['s_stat'].keys(): + if firm.dct_prod_up_prod_stat[prod]['s_stat'][up_prod]['set_disrupt_firm']: + firm.disrupt_cus_prod(prod, up_prod) + + # 2. Trial Process + for n_trial in range(self.int_n_max_trial): + shuffle(self.company_agents) # 手动打乱代理顺序 + + is_stop_trial = True + for firm in self.company_agents: + lst_seek_prod = [] + for prod in firm.dct_prod_up_prod_stat.keys(): + status = firm.dct_prod_up_prod_stat[prod]['p_stat'][-1][0] + if status == 'D': + for supply in firm.dct_prod_up_prod_stat[prod]['s_stat'].keys(): + if not firm.dct_prod_up_prod_stat[prod]['s_stat'][supply]['stat']: + lst_seek_prod.append(supply) + lst_seek_prod = list(set(lst_seek_prod)) + if len(lst_seek_prod) > 0: + is_stop_trial = False + for supply in lst_seek_prod: + firm.seek_alt_supply(supply) + if is_stop_trial: + break + + # Handle requests + shuffle(self.company_agents) # 手动打乱代理顺序 + for firm in self.company_agents: + if len(firm.dct_request_prod_from_firm) > 0: + firm.handle_request() + + # Reset dct_request_prod_from_firm + for firm in self.company_agents: + firm.clean_before_trial() + + # Increment the time step + self.t += 1 + self.schedule.step() # Activate all agents in the scheduler diff --git a/scheduler.py b/scheduler.py deleted file mode 100644 index 4ee2611..0000000 --- a/scheduler.py +++ /dev/null @@ -1,27 +0,0 @@ -from mesa.time import BaseScheduler - -from firm import FirmAgent -from product import ProductAgent - - -class CustomScheduler(BaseScheduler): - def __init__(self, model): - super().__init__(model) - self.company_agents = [] - self.product_agents = [] - - def add_agent(self, agent): - if isinstance(agent, FirmAgent): - self.company_agents.append(agent) - elif isinstance(agent, ProductAgent): - self.product_agents.append(agent) - super().add_agent(agent) - - def step(self): - # First, activate all company agents - for agent in self.company_agents: - agent.step() - - # Then, activate all product agents - for agent in self.product_agents: - agent.step()