new repo
This commit is contained in:
commit
f9ffc6edf4
.vscode
SQL_analysis_experiment.sqlSQL_analysis_risk.sqlSQL_export_high_risk_setting.sqlSQL_migrate_db.sql__pycache__
computation.cpython-38.pyccomputation.cpython-39.pyccontroller_db.cpython-38.pycfirm.cpython-38.pycmodel.cpython-38.pycmodel.cpython-39.pycorm.cpython-38.pycproduct.cpython-38.pyc
computation.pyconf_db.yamlconf_db_prefix.yamlconf_experiment.yamlcontroller_db.pyfirm.pyinput_data
BomCateNet.csvBomNodes.csvFirm_amended.csvoa_with_exp.csvoa_without_exp.csvxv_with_exp.csvxv_without_exp.csv
main.pymodel.pyorm.pyoutput_result
resilience
anova.csvanova_visualization.csvexperiment_result.csvresilience1.pngresilience2.pngresilience3.pngresilience4.pngresilience5.pngresilience6.png
risk
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Python: Current File",
|
||||||
|
"type": "python",
|
||||||
|
"request": "launch",
|
||||||
|
"program": "main.py",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"justMyCode": true,
|
||||||
|
"args": [
|
||||||
|
"--exp", "with_exp",
|
||||||
|
"--reset_db", "True",
|
||||||
|
"--job", "24"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"python.formatting.provider": "yapf"
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
select distinct experiment.idx_scenario,
|
||||||
|
n_max_trial, prf_size, prf_conn, cap_limit_prob_type, cap_limit_level, diff_new_conn, remove_t, netw_prf_n,
|
||||||
|
mean_count_firm_prod, mean_count_firm, mean_count_prod,
|
||||||
|
mean_max_ts_firm_prod, mean_max_ts_firm, mean_max_ts_prod,
|
||||||
|
mean_n_remove_firm_prod, mean_n_all_prod_remove_firm, mean_end_ts
|
||||||
|
from iiabmdb.with_exp_experiment as experiment
|
||||||
|
left join
|
||||||
|
(
|
||||||
|
select
|
||||||
|
idx_scenario,
|
||||||
|
sum(count_firm_prod) / count(*) as mean_count_firm_prod, # Note to use count(*), to include NULL
|
||||||
|
sum(count_firm) / count(*) as mean_count_firm,
|
||||||
|
sum(count_prod) / count(*) as mean_count_prod,
|
||||||
|
sum(max_ts_firm_prod) / count(*) as mean_max_ts_firm_prod,
|
||||||
|
sum(max_ts_firm) / count(*) as mean_max_ts_firm,
|
||||||
|
sum(max_ts_prod) / count(*) as mean_max_ts_prod,
|
||||||
|
sum(n_remove_firm_prod) / count(*) as mean_n_remove_firm_prod,
|
||||||
|
sum(n_all_prod_remove_firm) / count(*) as mean_n_all_prod_remove_firm,
|
||||||
|
sum(end_ts) / count(*) as mean_end_ts
|
||||||
|
from (
|
||||||
|
select sample.id, idx_scenario,
|
||||||
|
count_firm_prod, count_firm, count_prod,
|
||||||
|
max_ts_firm_prod, max_ts_firm, max_ts_prod,
|
||||||
|
n_remove_firm_prod, n_all_prod_remove_firm, end_ts
|
||||||
|
from iiabmdb.with_exp_sample as sample
|
||||||
|
# 1 2 3 + 9
|
||||||
|
left join iiabmdb.with_exp_experiment as experiment
|
||||||
|
on sample.e_id = experiment.id
|
||||||
|
left join (select s_id,
|
||||||
|
count(distinct id_firm, id_product) as count_firm_prod,
|
||||||
|
count(distinct id_firm) as count_firm,
|
||||||
|
count(distinct id_product) as count_prod,
|
||||||
|
max(ts) as end_ts
|
||||||
|
from iiabmdb.with_exp_result group by s_id) as s_count
|
||||||
|
on sample.id = s_count.s_id
|
||||||
|
# 4
|
||||||
|
left join # firm prod
|
||||||
|
(select s_id, max(ts) as max_ts_firm_prod from
|
||||||
|
(select s_id, id_firm, id_product, min(ts) as ts
|
||||||
|
from iiabmdb.with_exp_result
|
||||||
|
where `status` = "D"
|
||||||
|
group by s_id, id_firm, id_product) as ts
|
||||||
|
group by s_id) as s_max_ts_firm_prod
|
||||||
|
on sample.id = s_max_ts_firm_prod.s_id
|
||||||
|
# 5
|
||||||
|
left join # firm
|
||||||
|
(select s_id, max(ts) as max_ts_firm from
|
||||||
|
(select s_id, id_firm, min(ts) as ts
|
||||||
|
from iiabmdb.with_exp_result
|
||||||
|
where `status` = "D"
|
||||||
|
group by s_id, id_firm) as ts
|
||||||
|
group by s_id) as s_max_ts_firm
|
||||||
|
on sample.id = s_max_ts_firm.s_id
|
||||||
|
# 6
|
||||||
|
left join # prod
|
||||||
|
(select s_id, max(ts) as max_ts_prod from
|
||||||
|
(select s_id, id_product, min(ts) as ts
|
||||||
|
from iiabmdb.with_exp_result
|
||||||
|
where `status` = "D"
|
||||||
|
group by s_id, id_product) as ts
|
||||||
|
group by s_id) as s_max_ts_prod
|
||||||
|
on sample.id = s_max_ts_prod.s_id
|
||||||
|
# 7
|
||||||
|
left join
|
||||||
|
(select s_id, count(distinct id_firm, id_product) as n_remove_firm_prod
|
||||||
|
from iiabmdb.with_exp_result
|
||||||
|
where `status` = "R"
|
||||||
|
group by s_id) as s_n_remove_firm_prod
|
||||||
|
on sample.id = s_n_remove_firm_prod.s_id
|
||||||
|
# 8
|
||||||
|
left join
|
||||||
|
(select s_id, count(distinct id_firm) as n_all_prod_remove_firm from
|
||||||
|
(select s_id, id_firm, count(distinct id_product) as n_remove_prod
|
||||||
|
from iiabmdb.with_exp_result
|
||||||
|
where `status` = "R"
|
||||||
|
group by s_id, id_firm) as s_n_remove_prod
|
||||||
|
left join iiabmdb_basic_info.firm_n_prod as firm_n_prod
|
||||||
|
on s_n_remove_prod.id_firm = firm_n_prod.code
|
||||||
|
where n_remove_prod = n_prod
|
||||||
|
group by s_id) as s_n_all_prod_remove_firm
|
||||||
|
on sample.id = s_n_all_prod_remove_firm.s_id
|
||||||
|
) as secnario_count
|
||||||
|
group by idx_scenario
|
||||||
|
) as secnario_mean
|
||||||
|
on experiment.idx_scenario = secnario_mean.idx_scenario;
|
|
@ -0,0 +1,12 @@
|
||||||
|
select * from
|
||||||
|
(select s_id, id_firm, id_product, min(ts) as ts from iiabmdb.without_exp_result
|
||||||
|
where `status` = 'D'
|
||||||
|
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.without_exp_result
|
||||||
|
where `status` = 'D'
|
||||||
|
group by s_id, id_firm, id_product) as t
|
||||||
|
group by s_id
|
||||||
|
having count(*) > 1)
|
||||||
|
order by s_id;
|
|
@ -0,0 +1,15 @@
|
||||||
|
select e_id, n_disrupt_sample, total_n_disrupt_firm_prod_experiment, dct_lst_init_disrupt_firm_prod from iiabmdb.without_exp_experiment as experiment
|
||||||
|
inner join (
|
||||||
|
select e_id, count(id) as n_disrupt_sample, sum(n_disrupt_firm_prod_sample) as total_n_disrupt_firm_prod_experiment from iiabmdb.without_exp_sample as sample
|
||||||
|
inner join (
|
||||||
|
select * from
|
||||||
|
(select s_id, COUNT(DISTINCT id_firm, id_product) as n_disrupt_firm_prod_sample from iiabmdb.without_exp_result group by s_id
|
||||||
|
) as count_disrupt_firm_prod_sample
|
||||||
|
where n_disrupt_firm_prod_sample > 1
|
||||||
|
) as disrupt_sample
|
||||||
|
on sample.id = disrupt_sample.s_id
|
||||||
|
group by e_id
|
||||||
|
) as disrupt_experiment
|
||||||
|
on experiment.id = disrupt_experiment.e_id
|
||||||
|
order by n_disrupt_sample desc, total_n_disrupt_firm_prod_experiment desc
|
||||||
|
limit 0, 95;
|
|
@ -0,0 +1,13 @@
|
||||||
|
CREATE DATABASE iiabmdb20230829;
|
||||||
|
RENAME TABLE iiabmdb.not_test_experiment TO iiabmdb20230829.not_test_experiment,
|
||||||
|
iiabmdb.not_test_result TO iiabmdb20230829.not_test_result,
|
||||||
|
iiabmdb.not_test_sample TO iiabmdb20230829.not_test_sample,
|
||||||
|
iiabmdb.test_experiment TO iiabmdb20230829.test_experiment,
|
||||||
|
iiabmdb.test_result TO iiabmdb20230829.test_result,
|
||||||
|
iiabmdb.test_sample TO iiabmdb20230829.test_sample;
|
||||||
|
RENAME TABLE iiabmdb.with_exp_experiment TO iiabmdb20230829.with_exp_experiment,
|
||||||
|
iiabmdb.with_exp_result TO iiabmdb20230829.with_exp_result,
|
||||||
|
iiabmdb.with_exp_sample TO iiabmdb20230829.with_exp_sample,
|
||||||
|
iiabmdb.without_exp_experiment TO iiabmdb20230829.without_exp_experiment,
|
||||||
|
iiabmdb.without_exp_result TO iiabmdb20230829.without_exp_result,
|
||||||
|
iiabmdb.without_exp_sample TO iiabmdb20230829.without_exp_sample;
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,37 @@
|
||||||
|
import os
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from model import Model
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from controller_db import ControllerDB
|
||||||
|
|
||||||
|
|
||||||
|
class Computation:
|
||||||
|
|
||||||
|
def __init__(self, c_db: 'ControllerDB'):
|
||||||
|
self.c_db = c_db
|
||||||
|
self.pid = os.getpid()
|
||||||
|
|
||||||
|
def run(self, str_code='0', s_id=None):
|
||||||
|
sample_random = self.c_db.fetch_a_sample(s_id)
|
||||||
|
if sample_random is None:
|
||||||
|
return True
|
||||||
|
|
||||||
|
# lock this row by update is_done_flag to 0
|
||||||
|
self.c_db.lock_the_sample(sample_random)
|
||||||
|
print(
|
||||||
|
f"Pid {self.pid} ({str_code}) is running "
|
||||||
|
f"sample {sample_random.id} at {datetime.datetime.now()}")
|
||||||
|
|
||||||
|
dct_exp = {column: getattr(sample_random.experiment, column)
|
||||||
|
for column in sample_random.experiment.__table__.c.keys()}
|
||||||
|
del dct_exp['id']
|
||||||
|
|
||||||
|
dct_sample_para = {'sample': sample_random,
|
||||||
|
'seed': sample_random.seed,
|
||||||
|
**dct_exp}
|
||||||
|
model = Model(dct_sample_para)
|
||||||
|
model.run(display=False)
|
||||||
|
return False
|
|
@ -0,0 +1,16 @@
|
||||||
|
# read by orm
|
||||||
|
is_local_db: True
|
||||||
|
|
||||||
|
local:
|
||||||
|
user_name: iiabm_yz
|
||||||
|
password: iiabm_yz
|
||||||
|
db_name: iiabmdb
|
||||||
|
address: 'localhost'
|
||||||
|
port: 3306
|
||||||
|
|
||||||
|
remote:
|
||||||
|
user_name: iiabm_yz
|
||||||
|
password: iiabm_yz
|
||||||
|
db_name: iiabmdb
|
||||||
|
address: 'localhost'
|
||||||
|
port: 3307
|
|
@ -0,0 +1 @@
|
||||||
|
db_name_prefix: with_exp
|
|
@ -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: 50
|
||||||
|
n_iter: 100
|
|
@ -0,0 +1,259 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from orm import db_session, engine, Base, ins
|
||||||
|
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:
|
||||||
|
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.lst_saved_s_id = []
|
||||||
|
|
||||||
|
def init_tables(self):
|
||||||
|
self.fill_experiment_table()
|
||||||
|
self.fill_sample_table()
|
||||||
|
|
||||||
|
def fill_experiment_table(self):
|
||||||
|
Firm = pd.read_csv("input_data/Firm_amended.csv")
|
||||||
|
Firm['Code'] = Firm['Code'].astype('string')
|
||||||
|
Firm.fillna(0, inplace=True)
|
||||||
|
|
||||||
|
# fill dct_lst_init_disrupt_firm_prod
|
||||||
|
list_dct = []
|
||||||
|
if self.is_with_exp:
|
||||||
|
with open('SQL_export_high_risk_setting.sql', 'r') as f:
|
||||||
|
str_sql = f.read()
|
||||||
|
result = pd.read_sql(sql=str_sql, con=engine)
|
||||||
|
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:
|
||||||
|
for _, row in Firm.iterrows():
|
||||||
|
code = row['Code']
|
||||||
|
row = row['1':]
|
||||||
|
for product_code in row.index[row == 1].to_list():
|
||||||
|
dct = {code: [product_code]}
|
||||||
|
list_dct.append(dct)
|
||||||
|
|
||||||
|
# fill g_bom
|
||||||
|
BomNodes = pd.read_csv('input_data/BomNodes.csv', index_col=0)
|
||||||
|
BomNodes.set_index('Code', inplace=True)
|
||||||
|
BomCateNet = pd.read_csv('input_data/BomCateNet.csv', index_col=0)
|
||||||
|
BomCateNet.fillna(0, inplace=True)
|
||||||
|
g_bom = nx.from_pandas_adjacency(BomCateNet.T,
|
||||||
|
create_using=nx.MultiDiGraph())
|
||||||
|
bom_labels_dict = {}
|
||||||
|
for code in g_bom.nodes:
|
||||||
|
bom_labels_dict[code] = BomNodes.loc[code].to_dict()
|
||||||
|
nx.set_node_attributes(g_bom, bom_labels_dict)
|
||||||
|
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)
|
||||||
|
df_oa = df_oa.iloc[:, 0:df_xv.shape[1]]
|
||||||
|
for idx_scenario, row in df_oa.iterrows():
|
||||||
|
dct_exp_para = {}
|
||||||
|
for idx_col, para_level in enumerate(row):
|
||||||
|
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}!")
|
||||||
|
|
||||||
|
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
|
||||||
|
)
|
||||||
|
db_session.add(e)
|
||||||
|
db_session.commit()
|
||||||
|
|
||||||
|
def fill_sample_table(self):
|
||||||
|
rng = random.Random(self.dct_parameter['meta_seed'])
|
||||||
|
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:
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
]
|
||||||
|
is_exist = len(lst_table_obj) > 0
|
||||||
|
if force_drop:
|
||||||
|
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 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
|
||||||
|
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 prepare_list_sample(self):
|
||||||
|
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 = 0 if res is None else res
|
||||||
|
print(f'There are a total of {n_sample} samples.')
|
||||||
|
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):
|
||||||
|
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)
|
||||||
|
if res.count() == 1:
|
||||||
|
return res[0]
|
||||||
|
|
||||||
|
def fetch_a_sample(self, s_id=None):
|
||||||
|
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()
|
|
@ -0,0 +1,334 @@
|
||||||
|
import agentpy as ap
|
||||||
|
|
||||||
|
|
||||||
|
class FirmAgent(ap.Agent):
|
||||||
|
def setup(self, code, name, type_region, revenue_log, a_lst_product):
|
||||||
|
self.firm_network = self.model.firm_network
|
||||||
|
self.product_network = self.model.product_network
|
||||||
|
|
||||||
|
# self parameter
|
||||||
|
self.code = code
|
||||||
|
self.name = name
|
||||||
|
self.type_region = type_region
|
||||||
|
self.size_stat = []
|
||||||
|
self.dct_prod_up_prod_stat = {}
|
||||||
|
self.dct_prod_capacity = {}
|
||||||
|
|
||||||
|
# parameter in trial
|
||||||
|
self.dct_n_trial_up_prod_disrupted = {}
|
||||||
|
self.dct_cand_alt_supp_up_prod_disrupted = {}
|
||||||
|
self.dct_request_prod_from_firm = {}
|
||||||
|
|
||||||
|
# external variable
|
||||||
|
self.is_prf_size = self.model.is_prf_size
|
||||||
|
self.is_prf_conn = bool(self.p.prf_conn)
|
||||||
|
self.str_cap_limit_prob_type = str(self.p.cap_limit_prob_type)
|
||||||
|
self.flt_cap_limit_level = float(self.p.cap_limit_level)
|
||||||
|
self.flt_diff_new_conn = float(self.p.diff_new_conn)
|
||||||
|
|
||||||
|
# initialize size_stat (self parameter)
|
||||||
|
# (size, time step)
|
||||||
|
self.size_stat.append((revenue_log, 0))
|
||||||
|
|
||||||
|
# init dct_prod_up_prod_stat (self parameter)
|
||||||
|
for prod in a_lst_product:
|
||||||
|
self.dct_prod_up_prod_stat[prod] = {
|
||||||
|
# status: (Normal / Disrupted / Removed, time step)
|
||||||
|
'p_stat': [('N', 0)],
|
||||||
|
# supply for each component and respective disrupted supplier
|
||||||
|
# set_disrupt_firm is refreshed to empty at each update
|
||||||
|
's_stat': {up_prod: {'stat': True,
|
||||||
|
'set_disrupt_firm': set()}
|
||||||
|
for up_prod in prod.a_predecessors()}
|
||||||
|
# Note: do not use fromkeys as it's a shallow copy
|
||||||
|
}
|
||||||
|
|
||||||
|
# initialize extra capacity (self parameter)
|
||||||
|
for product in a_lst_product:
|
||||||
|
# initialize extra capacity based on discrete uniform distribution
|
||||||
|
assert self.str_cap_limit_prob_type in ['uniform', 'normal'], \
|
||||||
|
"cap_limit_prob_type other than uniform, normal"
|
||||||
|
if self.str_cap_limit_prob_type == 'uniform':
|
||||||
|
extra_cap_mean = \
|
||||||
|
self.size_stat[0][0] / self.flt_cap_limit_level
|
||||||
|
extra_cap = self.model.nprandom.integers(extra_cap_mean-2,
|
||||||
|
extra_cap_mean+2)
|
||||||
|
extra_cap = 0 if round(extra_cap) < 0 else round(extra_cap)
|
||||||
|
self.dct_prod_capacity[product] = extra_cap
|
||||||
|
elif self.str_cap_limit_prob_type == 'normal':
|
||||||
|
extra_cap_mean = \
|
||||||
|
self.size_stat[0][0] / self.flt_cap_limit_level
|
||||||
|
extra_cap = self.model.nprandom.normal(extra_cap_mean, 1)
|
||||||
|
extra_cap = 0 if round(extra_cap) < 0 else round(extra_cap)
|
||||||
|
self.dct_prod_capacity[product] = extra_cap
|
||||||
|
|
||||||
|
def remove_edge_to_cus(self, disrupted_prod):
|
||||||
|
# parameter disrupted_prod is the product that self got disrupted
|
||||||
|
lst_out_edge = list(
|
||||||
|
self.firm_network.graph.out_edges(
|
||||||
|
self.firm_network.positions[self], keys=True, data='Product'))
|
||||||
|
for n1, n2, key, product_code in lst_out_edge:
|
||||||
|
if product_code == disrupted_prod.code:
|
||||||
|
# update customer up product supplier status
|
||||||
|
customer = ap.AgentIter(self.model, n2).to_list()[0]
|
||||||
|
for prod in customer.dct_prod_up_prod_stat.keys():
|
||||||
|
if disrupted_prod in \
|
||||||
|
customer.dct_prod_up_prod_stat[
|
||||||
|
prod]['s_stat'].keys():
|
||||||
|
customer.dct_prod_up_prod_stat[
|
||||||
|
prod]['s_stat'][disrupted_prod][
|
||||||
|
'set_disrupt_firm'].add(self)
|
||||||
|
# print(f"{self.name} disrupt {customer.name}'s "
|
||||||
|
# f"{prod.code} due to {disrupted_prod.code}")
|
||||||
|
# remove edge to customer
|
||||||
|
self.firm_network.graph.remove_edge(n1, n2, key)
|
||||||
|
|
||||||
|
def disrupt_cus_prod(self, prod, disrupted_up_prod):
|
||||||
|
# parameter prod is the product that has disrupted_up_prod
|
||||||
|
# parameter disrupted_up_prod is the product that
|
||||||
|
# self's component exists disrupted supplier
|
||||||
|
num_lost = \
|
||||||
|
len(self.dct_prod_up_prod_stat[prod]['s_stat']
|
||||||
|
[disrupted_up_prod]['set_disrupt_firm'])
|
||||||
|
num_remain = \
|
||||||
|
len([u for u, _, _, d in
|
||||||
|
self.firm_network.graph.in_edges(self.get_firm_network_node(),
|
||||||
|
keys=True,
|
||||||
|
data='Product')
|
||||||
|
if d == disrupted_up_prod.code])
|
||||||
|
lost_percent = num_lost / (num_lost + num_remain)
|
||||||
|
lst_size = \
|
||||||
|
[firm.size_stat[-1][0] for firm in self.model.a_lst_total_firms]
|
||||||
|
std_size = (self.size_stat[-1][0] - min(lst_size) + 1) \
|
||||||
|
/ (max(lst_size) - min(lst_size) + 1)
|
||||||
|
|
||||||
|
# calculate probability of disruption
|
||||||
|
prob_disrupt = 1 - std_size * (1 - lost_percent)
|
||||||
|
if self.model.nprandom.choice([True, False],
|
||||||
|
p=[prob_disrupt,
|
||||||
|
1 - prob_disrupt]):
|
||||||
|
self.dct_n_trial_up_prod_disrupted[disrupted_up_prod] = 0
|
||||||
|
self.dct_prod_up_prod_stat[
|
||||||
|
prod]['s_stat'][disrupted_up_prod]['stat'] = False
|
||||||
|
status, _ = self.dct_prod_up_prod_stat[
|
||||||
|
prod]['p_stat'][-1]
|
||||||
|
if status != 'D':
|
||||||
|
self.dct_prod_up_prod_stat[
|
||||||
|
prod]['p_stat'].append(('D', self.model.t))
|
||||||
|
# print(f"{self.name}'s {prod.code} turn to D status due to "
|
||||||
|
# f"disrupted supplier of {disrupted_up_prod.code}")
|
||||||
|
|
||||||
|
def seek_alt_supply(self, product):
|
||||||
|
# parameter product is the product that self is seeking
|
||||||
|
# print(f"{self.name} seek alt supply for {product.code}")
|
||||||
|
if self.dct_n_trial_up_prod_disrupted[
|
||||||
|
product] <= self.model.int_n_max_trial:
|
||||||
|
if self.dct_n_trial_up_prod_disrupted[product] == 0:
|
||||||
|
# select a list of candidate firm that has the product
|
||||||
|
self.dct_cand_alt_supp_up_prod_disrupted[product] = \
|
||||||
|
self.model.a_lst_total_firms.select([
|
||||||
|
firm.is_prod_in_current_normal(product)
|
||||||
|
for firm in self.model.a_lst_total_firms
|
||||||
|
])
|
||||||
|
if self.dct_cand_alt_supp_up_prod_disrupted[product]:
|
||||||
|
# select based on connection
|
||||||
|
lst_firm_connect = []
|
||||||
|
if self.is_prf_conn:
|
||||||
|
for firm in \
|
||||||
|
self.dct_cand_alt_supp_up_prod_disrupted[product]:
|
||||||
|
node_self = self.get_firm_network_node()
|
||||||
|
node_firm = firm.get_firm_network_node()
|
||||||
|
if self.model.firm_network.graph.\
|
||||||
|
has_edge(node_self, node_firm) or \
|
||||||
|
self.model.firm_network.graph.\
|
||||||
|
has_edge(node_firm, node_self):
|
||||||
|
lst_firm_connect.append(firm)
|
||||||
|
if len(lst_firm_connect) == 0:
|
||||||
|
# select based on size or not
|
||||||
|
if self.is_prf_size:
|
||||||
|
lst_size = \
|
||||||
|
[firm.size_stat[-1][0] for firm in
|
||||||
|
self.dct_cand_alt_supp_up_prod_disrupted[
|
||||||
|
product]]
|
||||||
|
lst_prob = [size / sum(lst_size)
|
||||||
|
for size in lst_size]
|
||||||
|
select_alt_supply = self.model.nprandom.choice(
|
||||||
|
self.dct_cand_alt_supp_up_prod_disrupted[product],
|
||||||
|
p=lst_prob)
|
||||||
|
else:
|
||||||
|
select_alt_supply = self.model.nprandom.choice(
|
||||||
|
self.dct_cand_alt_supp_up_prod_disrupted[product])
|
||||||
|
elif len(lst_firm_connect) > 0:
|
||||||
|
# select based on size of connected firm or not
|
||||||
|
if self.is_prf_size:
|
||||||
|
lst_firm_size = \
|
||||||
|
[firm.size_stat[-1][0]
|
||||||
|
for firm in lst_firm_connect]
|
||||||
|
lst_prob = \
|
||||||
|
[size / sum(lst_firm_size)
|
||||||
|
for size in lst_firm_size]
|
||||||
|
select_alt_supply = \
|
||||||
|
self.model.nprandom.choice(lst_firm_connect,
|
||||||
|
p=lst_prob)
|
||||||
|
else:
|
||||||
|
select_alt_supply = \
|
||||||
|
self.model.nprandom.choice(lst_firm_connect)
|
||||||
|
# print(
|
||||||
|
# f"{self.name} selct alt supply for {product.code} "
|
||||||
|
# f"from {select_alt_supply.name}"
|
||||||
|
# )
|
||||||
|
assert select_alt_supply.is_prod_in_current_normal(product), \
|
||||||
|
f"{select_alt_supply} \
|
||||||
|
does not produce requested product {product}"
|
||||||
|
|
||||||
|
if product in select_alt_supply.dct_request_prod_from_firm.\
|
||||||
|
keys():
|
||||||
|
select_alt_supply.dct_request_prod_from_firm[
|
||||||
|
product].append(self)
|
||||||
|
else:
|
||||||
|
select_alt_supply.dct_request_prod_from_firm[product] = [
|
||||||
|
self
|
||||||
|
]
|
||||||
|
# print(
|
||||||
|
# select_alt_supply.name, 'dct_request_prod_from_firm', {
|
||||||
|
# key.code: [v.name for v in value]
|
||||||
|
# for key, value in
|
||||||
|
# select_alt_supply.dct_request_prod_from_firm.items()
|
||||||
|
# })
|
||||||
|
|
||||||
|
self.dct_n_trial_up_prod_disrupted[product] += 1
|
||||||
|
|
||||||
|
def handle_request(self):
|
||||||
|
# print(self.name, 'handle_request')
|
||||||
|
for product, lst_firm in self.dct_request_prod_from_firm.items():
|
||||||
|
if self.dct_prod_capacity[product] > 0:
|
||||||
|
if len(lst_firm) == 0:
|
||||||
|
continue
|
||||||
|
elif len(lst_firm) == 1:
|
||||||
|
self.accept_request(lst_firm[0], product)
|
||||||
|
elif len(lst_firm) > 1:
|
||||||
|
# handling based on connection
|
||||||
|
lst_firm_connect = []
|
||||||
|
if self.is_prf_conn:
|
||||||
|
for firm in lst_firm:
|
||||||
|
node_self = self.get_firm_network_node()
|
||||||
|
node_firm = firm.get_firm_network_node()
|
||||||
|
if self.model.firm_network.graph.\
|
||||||
|
has_edge(node_self, node_firm) or \
|
||||||
|
self.model.firm_network.graph.\
|
||||||
|
has_edge(node_firm, node_self):
|
||||||
|
lst_firm_connect.append(firm)
|
||||||
|
if len(lst_firm_connect) == 0:
|
||||||
|
# handling based on size or not
|
||||||
|
if self.is_prf_size:
|
||||||
|
lst_firm_size = \
|
||||||
|
[firm.size_stat[-1][0] for firm in lst_firm]
|
||||||
|
lst_prob = \
|
||||||
|
[size / sum(lst_firm_size)
|
||||||
|
for size in lst_firm_size]
|
||||||
|
select_customer = \
|
||||||
|
self.model.nprandom.choice(lst_firm,
|
||||||
|
p=lst_prob)
|
||||||
|
else:
|
||||||
|
select_customer = \
|
||||||
|
self.model.nprandom.choice(lst_firm)
|
||||||
|
self.accept_request(select_customer, product)
|
||||||
|
elif len(lst_firm_connect) > 0:
|
||||||
|
# handling based on size of connected firm or not
|
||||||
|
if self.is_prf_size:
|
||||||
|
lst_firm_size = \
|
||||||
|
[firm.size_stat[-1][0]
|
||||||
|
for firm in lst_firm_connect]
|
||||||
|
lst_prob = \
|
||||||
|
[size / sum(lst_firm_size)
|
||||||
|
for size in lst_firm_size]
|
||||||
|
select_customer = \
|
||||||
|
self.model.nprandom.choice(lst_firm_connect,
|
||||||
|
p=lst_prob)
|
||||||
|
else:
|
||||||
|
select_customer = \
|
||||||
|
self.model.nprandom.choice(lst_firm_connect)
|
||||||
|
self.accept_request(select_customer, product)
|
||||||
|
else:
|
||||||
|
for down_firm in lst_firm:
|
||||||
|
down_firm.dct_cand_alt_supp_up_prod_disrupted[
|
||||||
|
product].remove(self)
|
||||||
|
|
||||||
|
# print(
|
||||||
|
# f"{self.name} denied {product.code} request "
|
||||||
|
# f"from {down_firm.name} for lack of capacity"
|
||||||
|
# )
|
||||||
|
|
||||||
|
def accept_request(self, down_firm, product):
|
||||||
|
# parameter product is the product that self is selling
|
||||||
|
# connected firm has no probability for accepting request
|
||||||
|
node_self = self.get_firm_network_node()
|
||||||
|
node_d_firm = down_firm.get_firm_network_node()
|
||||||
|
if self.model.firm_network.graph.has_edge(node_self, node_d_firm) or \
|
||||||
|
self.model.firm_network.graph.has_edge(node_d_firm, node_self):
|
||||||
|
prod_accept = 1.0
|
||||||
|
else:
|
||||||
|
prod_accept = self.flt_diff_new_conn
|
||||||
|
if self.model.nprandom.choice([True, False],
|
||||||
|
p=[prod_accept, 1 - prod_accept]):
|
||||||
|
self.firm_network.graph.add_edges_from([
|
||||||
|
(self.firm_network.positions[self],
|
||||||
|
self.firm_network.positions[down_firm], {
|
||||||
|
'Product': product.code
|
||||||
|
})
|
||||||
|
])
|
||||||
|
self.dct_prod_capacity[product] -= 1
|
||||||
|
self.dct_request_prod_from_firm[product].remove(down_firm)
|
||||||
|
|
||||||
|
for prod in down_firm.dct_prod_up_prod_stat.keys():
|
||||||
|
if product in down_firm.dct_prod_up_prod_stat[
|
||||||
|
prod]['s_stat'].keys():
|
||||||
|
down_firm.dct_prod_up_prod_stat[
|
||||||
|
prod]['s_stat'][product]['stat'] = True
|
||||||
|
down_firm.dct_prod_up_prod_stat[
|
||||||
|
prod]['p_stat'].append(('N', self.model.t))
|
||||||
|
del down_firm.dct_n_trial_up_prod_disrupted[product]
|
||||||
|
del down_firm.dct_cand_alt_supp_up_prod_disrupted[product]
|
||||||
|
|
||||||
|
# print(
|
||||||
|
# f"{self.name} accept {product.code} request "
|
||||||
|
# f"from {down_firm.name}"
|
||||||
|
# )
|
||||||
|
else:
|
||||||
|
down_firm.dct_cand_alt_supp_up_prod_disrupted[product].remove(self)
|
||||||
|
|
||||||
|
# print(
|
||||||
|
# f"{self.name} denied {product.code} request "
|
||||||
|
# f"from {down_firm.name}"
|
||||||
|
# )
|
||||||
|
|
||||||
|
def clean_before_trial(self):
|
||||||
|
self.dct_request_prod_from_firm = {}
|
||||||
|
|
||||||
|
def clean_before_time_step(self):
|
||||||
|
self.dct_n_trial_up_prod_disrupted = \
|
||||||
|
dict.fromkeys(self.dct_n_trial_up_prod_disrupted.keys(), 0)
|
||||||
|
self.dct_cand_alt_supp_up_prod_disrupted = {}
|
||||||
|
|
||||||
|
# update the status of firm
|
||||||
|
for prod in self.dct_prod_up_prod_stat.keys():
|
||||||
|
status, ts = self.dct_prod_up_prod_stat[prod]['p_stat'][-1]
|
||||||
|
if ts != self.model.t:
|
||||||
|
self.dct_prod_up_prod_stat[prod]['p_stat'].append(
|
||||||
|
(status, self.model.t))
|
||||||
|
# refresh set_disrupt_firm
|
||||||
|
for up_prod in self.dct_prod_up_prod_stat[prod]['s_stat'].keys():
|
||||||
|
self.dct_prod_up_prod_stat[prod][
|
||||||
|
's_stat'][up_prod]['set_disrupt_firm'] = set()
|
||||||
|
|
||||||
|
def get_firm_network_node(self):
|
||||||
|
return self.firm_network.positions[self]
|
||||||
|
|
||||||
|
def is_prod_in_current_normal(self, prod):
|
||||||
|
if prod in self.dct_prod_up_prod_stat.keys():
|
||||||
|
if self.dct_prod_up_prod_stat[prod]['p_stat'][-1][0] == 'N':
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return False
|
|
@ -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,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
|
@ -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,协议转换
|
|
|
@ -0,0 +1,172 @@
|
||||||
|
Code,Name,Stock_Region,Stock_Name,Stock_Code,Chinese_Name,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,360科技,SH,三六零,601360.SH,三六零安全科技股份有限公司,2021.0,42040000000.0,23.11111077389128,10890000000.0,L,8.9082888855571,7393.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
1,51WORLD,,51WORLD,,北京五一视界数字孪生科技股份有限公司,2021.0,524000000.0,18.742764243121478,138000000.0,M,5.14166355650266,171.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
2,706所,,706所,,北京航天爱威电子技术有限公司,,,18.91495248366715,,M,4.727387818712341,113.0,qichacha,Beijing,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
3,艾克斯特,,艾克斯特,,北京艾克斯特科技有限公司,,,17.407722170008157,,S,3.1780538303479458,24.0,qichacha,Beijing,,,,,,,,,,,,,,,1.0,1.0,1.0,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
4,爱创科技,,爱创科技,,北京爱创科技股份有限公司,,,19.655807015023598,,M,5.488937726156687,242.0,qichacha,Beijing,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
5,安华金和,,安华金和,,北京安华金和科技有限公司,,,18.503133696279523,,S,4.30406509320417,74.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
6,安世亚太,,安世亚太,,安世亚太科技股份有限公司,2017.0,902000000.0,18.884414760184505,159000000.0,M,5.117993812416755,167.0,qichacha,Beijing,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
7,百望,,百望,,百望股份有限公司,,,20.228513288018362,,L,6.077642243349034,436.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,
|
||||||
|
8,梆梆安全,,梆梆安全,,北京梆梆安全科技有限公司,,,20.02307783148127,,M,5.8664680569332965,353.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
9,北京航天测控,,北京航天测控,,北京航天测控技术有限公司,,,20.12502380787598,,L,5.971261839790462,392.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
10,北京英贝思,,北京英贝思,,北京京能信息技术有限公司,,,18.997444645787912,,M,4.812184355372417,123.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
11,北信源,SZ,北信源,300352.SZ,北京北信源软件股份有限公司,2021.0,2831000000.0,20.330223248836806,675000000.0,L,7.4377951216719325,1699.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
12,大唐软件,,大唐软件,,大唐软件技术股份有限公司,,,19.4654905037987,,M,5.293304824724492,199.0,qichacha,Beijing,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
13,东方国信,SZ,东方国信,300166.SZ,北京东方国信科技股份有限公司,2021.0,8632000000.0,21.6274839875863,2470000000.0,L,9.069698042173716,8688.0,qichacha,Beijing,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,1.0,1.0,1.0,1.0,,1.0,1.0,,,1.0,1.0,1.0
|
||||||
|
14,东华软件,SZ,东华软件,002065.SZ,东华软件股份公司,2021.0,21070000000.0,23.110192078374208,10880000000.0,L,9.3729692954244,11766.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
15,东软集团,SH,东软集团,600718.SH,东软集团股份有限公司,2021.0,18310000000.0,22.89060378053243,8735000000.0,L,9.793616881400416,17919.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
16,东土科技,SZ,东土科技,300353.SZ,北京东土科技股份有限公司,2021.0,2357000000.0,20.662453697549655,941000000.0,L,7.398174092970465,1633.0,qichacha,Beijing,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0
|
||||||
|
17,国保金泰,,国保金泰,,北京国保金泰信息安全技术有限公司,,,17.687586384923698,,S,3.4657359027997265,32.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
18,国能智深,,国能智深,,国能智深控制技术有限公司,,,19.787215956383957,,M,5.6240175061873385,277.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
19,国泰网信,,国泰网信,,北京国泰网信科技有限公司,,,18.196615083558456,,S,3.9889840465642745,54.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
20,海基科技,,海基科技,,北京海基科技发展有限责任公司,,,16.338965041542313,,XS,2.0794415416798357,8.0,qichacha,Beijing,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
21,Hexagon,SE,Hexagon,HEXA.B,Hexagon AB,2021.0,4348926705.0,21.583992726504846,2364879075.0,L,9.998797732340453,22000.0,hexagon,Foreign,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
22,航天云网,,航天云网,,航天云网科技发展有限责任公司,,,18.786278941833256,,S,4.59511985013459,99.0,qichacha,Beijing,,,,,,,1.0,1.0,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,1.0,,,,,,,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,1.0,1.0,1.0,1.0,,1.0,1.0,,,1.0,1.0,1.0
|
||||||
|
23,和利时,US,和利时,HOLI,和利时科技集团有限公司,2021.0,10365469659.9,22.303790735242135,4857504838.2,S,4.143134726391533,63.0,hollysys,Beijing,,,,1.0,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,1.0,1.0,1.0
|
||||||
|
24,华大电子,HK,华大电子,85,北京中电华大电子设计有限责任公司,2021.0,2486434448.0,21.109740822530977,1471783580.8,M,5.605802066295998,272.0,hkexnews,Beijing,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
25,华大九天,SZ,华大九天,301269.SZ,北京华大九天科技股份有限公司,2021.0,1802000000.0,20.17681303553727,579000000.0,L,6.492239835020471,660.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
26,寄云科技,,寄云科技,,北京寄云科技有限公司,,,14.99034369816093,,XS,0.6931471805599453,2.0,,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,
|
||||||
|
27,江南天安,,江南天安,,北京江南天安科技有限公司,,,19.430654185080233,,M,5.2574953720277815,192.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
28,金山云,HK,金山云,3896,北京金山云网络技术有限公司,2021.0,19000334000.0,22.12943806762975,4080307000.0,L,7.181591944611865,1315.0,hkexnews,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,
|
||||||
|
29,京东工业品,US,京东集团,JD,北京京东数智工业科技有限公司,2021.0,496507000000.0,27.581402208446224,951592000000.0,M,5.8916442118257715,362.0,jd,Beijing,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
30,可信华泰,,可信华泰,,北京可信华泰信息技术有限公司,,,19.34600737166434,,M,5.170483995038151,176.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
31,昆仑数据,,昆仑数据,,四川昆仑智汇数据科技有限公司,,,17.013275713233007,,S,2.772588722239781,16.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,1.0,1.0,,,,,
|
||||||
|
32,兰光创新,,兰光创新,,北京兰光创新科技有限公司,,,18.756343513389538,,S,4.564348191467836,96.0,qichacha,Beijing,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
33,蓝谷信息,,蓝谷信息,,北汽蓝谷信息技术有限公司,,,18.66057858282117,,S,4.465908118654584,87.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
34,力控科技,,力控科技,,北京力控元通科技有限公司,,,19.69132991474639,,M,5.5254529391317835,251.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
35,凌昊智能,,凌昊智能,,北京鲲鹏凌昊智能技术有限公司,,,18.282762012402003,,S,4.07753744390572,59.0,qichacha,Beijing,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
36,龙芯中科,SH,龙芯中科,688047.SH,龙芯中科技术股份有限公司,2021.0,1989000000.0,20.906420380044256,1201000000.0,L,6.71174039505618,822.0,qichacha,Beijing,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
37,绿盟,SZ,绿盟科技,300369.SZ,绿盟科技集团股份有限公司,2021.0,4765000000.0,21.682232843101,2609000000.0,L,8.394347361417392,4422.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,1.0,,,,1.0,,,,,,,1.0,,,,,,,,,1.0,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
38,牛刀,,起步科技,,北京起步科技股份有限公司,,,17.12785795509261,,S,2.8903717578961645,18.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
39,Autodesk,US,Autodesk,ADSK,Autodesk Inc,2021.0,50085024000.0,23.984435187501607,26080016000.0,,,,marketwatch,Foreign,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
40,奇安信,SH,奇安信,688561.SH,奇安信科技集团股份有限公司,2021.0,13480000000.0,22.482674275956807,5809000000.0,L,9.175438319966918,9657.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,1.0,,,,,,1.0,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
41,启明星辰,SZ,启明星辰,002439.SZ,启明星辰信息技术集团股份有限公司,2021.0,8936000000.0,22.20168348694211,4386000000.0,L,8.792853288640693,6587.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,1.0,,,,,,,,,,1.0,1.0,,1.0,1.0,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
42,山大华天,,山大华天,,山东山大华天软件有限公司,,,20.381021533902018,,M,6.234410725718371,510.0,qichacha,Beijing,,,,,,,,,,,,1.0,,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
43,神舟软件,,神舟软件,,北京神舟航天软件技术股份有限公司,2021.0,3042000000.0,21.130063390288353,1502000000.0,L,6.385194398997726,593.0,qichacha,Beijing,,,,,,,,,,,,,,,,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
44,圣邦微电子,,圣邦微电子,,圣邦微电子(北京)股份有限公司,2021.0,3049000000.0,21.528848446836143,2238000000.0,M,6.754604099487962,858.0,qichacha,Beijing,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
45,石化盈科,,石化盈科,,石化盈科信息技术有限责任公司,,,21.430514178160422,,M,7.313220387090301,1500.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,1.0,1.0,,,,,
|
||||||
|
46,适创科技,,适创科技,,北京适创科技有限公司,,,17.9046659348233,,S,3.6888794541139363,40.0,qichacha,Beijing,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
47,首自信,,首自信,,北京首钢自动化信息技术有限公司,,,21.333048113425267,,L,7.213031659834869,1357.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,,1.0,1.0,1.0,1.0,,,,,,,1.0,,,,,,,,,,,,,,,
|
||||||
|
48,曙光信息,SH,曙光信息,603019.SH,曙光信息产业股份有限公司,2021.0,26190000000.0,23.13917961524746,11200000000.0,L,8.319473692442186,4103.0,qichacha,Non_Beijing,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
49,数码大方,,数码大方,,北京数码大方科技股份有限公司,2017.0,219000000.0,18.61953160269753,122000000.0,M,5.786897381366708,326.0,qichacha,Beijing,,,,,,,,,,,,1.0,,,1.0,,1.0,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
50,索为系统,,索为系统,,索为技术股份有限公司,,,20.12502380787598,,M,5.971261839790462,392.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
51,天地和兴,,天地和兴,,北京天地和兴科技有限公司,,,18.796056156413595,,M,4.605170185988092,100.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
52,天空卫士,,天空卫士,,北京天空卫士网络安全技术有限公司,,,18.36189705661439,,S,4.1588830833596715,64.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
53,天融信,SZ,天融信,002212.SZ,天融信科技集团股份有限公司,2021.0,11600000000.0,21.932823019566246,3352000000.0,L,8.743372131273969,6269.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,,,,1.0,1.0,,,,,,,1.0,1.0,1.0,1.0,,,,,1.0,,,,1.0,1.0,,,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
54,网御星云,,网御星云,,北京网御星云信息技术有限公司,,,21.480445986887567,,L,7.364547014255642,1579.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,1.0,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
55,威努特,,威努特,,北京威努特技术有限公司,,,20.09221467868815,,M,5.937536205082426,379.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,,,,1.0,1.0,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
56,芯愿景,,芯愿景,,北京芯愿景软件技术股份有限公司,2020.0,439000000.0,19.0140075892301,181000000.0,L,5.8971538676367405,364.0,qichacha,Beijing,,,1.0,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
57,亚控科技,,亚控科技,,北京亚控科技发展有限公司,,,19.123384646299442,,M,4.941642422609304,140.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0
|
||||||
|
58,用友,SH,用友网络,600588.SH,用友网络科技股份有限公司,2021.0,17330000000.0,22.912906170924323,8932000000.0,L,10.072554993651666,23684.0,qichacha,Beijing,,,,,,,,1.0,,,,,,,,,1.0,,1.0,,,,,,,,,,,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
59,优特捷,,优特捷,,北京优特捷信息技术有限公司,,,18.90630509639984,,M,4.718498871295094,112.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
60,宇动源,,宇动源,,北京宇动源科技有限公司,,,18.1217454847229,,S,3.912023005428146,50.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
61,元年科技,,元年科技,,北京元年科技股份有限公司,2017.0,629000000.0,19.34096349709606,251000000.0,L,5.811140992976701,334.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
62,云道智造,,云道智造,,北京云道智造科技有限公司,,,18.64933192967563,,S,4.454347296253507,86.0,qichacha,Beijing,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
63,长扬科技,,长扬科技,,长扬科技(北京)股份有限公司,,,20.05292974490909,,M,5.8971538676367405,364.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,1.0,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
64,中电智科,,中电智科,,中电智能科技有限公司,,,19.2286574902081,,M,5.049856007249537,156.0,qichacha,Beijing,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
65,中国电信,SH,中国电信,601728.SH,中国电信股份有限公司,2021.0,762234000000.0,26.80902186334131,439552000000.0,L,12.538687451824082,278922.0,qichacha,Beijing,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
66,中国联通,SH,中国联通,600050.SH,中国联合网络通信股份有限公司,2021.0,593300000000.0,26.515974520797013,327900000000.0,L,12.399420686589707,242661.0,qichacha,Beijing,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
67,中国移动,SH,中国移动,600941.SH,中国移动通信有限公司,2021.0,1840000000000.0,27.466450671748124,848258000000.0,L,8.430545384690566,4585.0,qichacha,Beijing,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
68,中望软件,SH,中望软件,688083.SH,广州中望龙腾软件股份有限公司,2021.0,3117000000.0,20.241999015421964,618000000.0,L,7.430707082545968,1687.0,qichacha,Beijing,,,,,,,,,,,,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
69,紫光集团,SZ,紫光股份,000938.SZ,紫光股份有限公司,2021.0,66430000000.0,24.93746536097679,67640000000.0,L,9.749578510178852,17147.0,qichacha,Beijing,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
70,ABB,US,ABB,ABB,Abb Ltd,2021.0,252378345120.0,25.927786876227803,182093636180.16,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,1.0,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
71,Altair,US,Altair,ALTR,Altair Engineering Inc,2021.0,8003332000.0,22.02110910882454,3661391520.0,,,,marketwatch,Foreign,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
72,ANSYS,US,ANSYS,ANSS,ANSYS Inc,2021.0,43511280320.0,23.297266354944313,13118199200.0,,,,marketwatch,Foreign,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
73,FANUC,JP,FANUC,6954,Fanuc Corp,2021.0,83161023470.0,24.062919525471276,28209355790.0,,,,fanuc,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
74,HoneyWell,US,HoneyWell,HON,Honeywell International Inc,2021.0,443553600000.0,26.189563074869437,236582560000.0,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
75,IBM,US,IBM,IBM,International Business Machines Corp,2021.0,908166880000.0,26.701074769106654,394574880000.0,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
76,MasterCAM,,MasterCAM,,CNC Software LLC,2021.0,,20.061617323445837,516000000.0,,,,zippia,Foreign,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
77,Oracle,US,Oracle,ORCL,Oracle Corp,2021.0,902016160000.0,26.352667810008423,278495520000.0,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
78,OutSystems,,OutSystems,,OutSystems,2021.0,,21.418791810932476,2004763250.0,,,,forbes,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
79,PTC,US,PTC,PTC,PTC Inc,2021.0,31012012800.0,23.243640487776307,12433253920.0,,,,marketwatch,Foreign,,,,,,,,,,,,1.0,,,1.0,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,1.0,,,,,1.0,,,,,1.0,1.0,1.0
|
||||||
|
80,Salesforce,US,Salesforce,CRM,Salesforce Inc,2021.0,456150880000.0,25.70833549748036,146213760000.0,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
81,SAP,US,SAP,SAP,SAP SE,2021.0,489642720000.0,25.97843016085804,191552960000.0,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,1.0,,,,,1.0,,,,,,,
|
||||||
|
82,Uptake,,Uptake,,Uptake Technologies Inc,2021.0,,18.02651159558605,67424000.0,,,,zippia,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
83,Emerson,US,Emerson,EMR,Emerson Electric Co,2021.0,170039200000.0,25.555117627948732,125443040000.0,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
84,Bosch,,Bosch,,Bosch Ltd,2021.0,780540611500.0,27.070589149510063,570962374000.0,,,,bosch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,1.0,,,,,,,,,,1.0,,,
|
||||||
|
85,Dassault,FR,Dassault,DSY,Dassault Systemes SE,2021.0,1044022266200.0,26.600602947110218,356857702600.0,,,,dassault ,Foreign,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
86,Dell EMC,US,Dell,DELL,Dell Inc,2021.0,849095200000.0,27.115122378990367,596963840000.0,,,,marketwatch,Foreign,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
87,Texas Instruments,US,Texas Instruments,TXN,Texas Instruments Inc,2021.0,169770880000.0,25.56118703444727,126206720000.0,,,,marketwatch,Foreign,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
88,HPE,US,HPE,HPE,Hewlett Packard Enterprise Co,2021.0,396969120000.0,25.979255909913164,191711200000.0,,,,marketwatch,Foreign,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
89,Rockwell,US,Rockwell,ROK,Rockwell Automation Inc,2021.0,75779072000.0,24.59715157408287,48129040000.0,,,,marketwatch,Foreign,,,,1.0,,,1.0,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
90,Mentor Graphics,,Mentor Graphics,,Siemens EDA,2023.0,,22.399698252124722,5346448000.0,,,,zoominfo,Foreign,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
91,Moxa,,Moxa,,Moxa Inc,2023.0,,21.27355829742095,1733760000.0,,6.913737350659685,1006.0,rocketreach,Foreign,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
92,Omron,JP,Omron,6645,Omron Corp,2021.0,47620285930.0,24.387826332521357,39038974590.0,,,,omron,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
93,Cadence,US,Cadence,CDNS,Cadence Design Systems Inc,2021.0,30177737120.0,23.746570412801468,20559118720.0,,,,marketwatch,Foreign,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
94,Mitsubishi,JP,Mitsubishi,6503,Mitsubishi Electric Corp,2021.0,1121237654040.0,27.507090628204164,883441248760.0,,,,mitsubishi,Foreign,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
95,Schneider,FR,Schneider,SU,Schneider Electric SE,2021.0,400516802200.0,26.080973430818208,212237853000.0,,,,schneider,Foreign,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,
|
||||||
|
96,Cisco,US,Cisco,CSCO,Cisco Systems Inc,2021.0,670779360000.0,26.560260853399612,342747840000.0,,,,marketwatch,Foreign,,,,,,,1.0,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
97,General Electric,US,General Electric,GE,General Electric Co,2021.0,1368253120000.0,26.958298173346392,510317120000.0,,,,marketwatch,Foreign,,,,,,1.0,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
98,Microsoft Azure,US,Microsoft,MSFT,Microsoft Co,2021.0,2296399520000.0,27.77637214067841,1156445440000.0,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
99,Siemens,XE,Siemens,SIE,Siemens AG,2021.0,1023352847200.0,26.84835831045688,457186989000.0,,,,siemens,Foreign,,,,1.0,,,1.0,,,,1.0,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,
|
||||||
|
100,Synopsys,US,Synopsys,SNPS,Synopsys Inc,2021.0,60215548800.0,24.08697187131976,28896082560.0,,,,marketwatch,Foreign,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
101,Analog Devices,US,Analog Devices,ADI,Analog Devices Inc,2021.0,359975848480.0,24.642260636441325,50349807680.0,,,,marketwatch,Foreign,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
102,Amazon AWS,US,Amazon,AMZN,Amazon.com Inc,2021.0,2893377120000.0,28.80423838845769,3232375360000.0,,,,marketwatch,Foreign,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,
|
||||||
|
103,STMicroelectronics ,US,STMicroelectronics ,STM,STMicroelectronics NV,2021.0,94016180090.4,25.03108635524997,74278423930.24,,,,marketwatch,Foreign,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
104,Infineon,XE,Infineon,IFX,Infineon Technologies AG,2021.0,171332228400.0,25.120293836377957,81209156000.0,,10.825521759037349,50288.0,infineon ,Foreign,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
105,Intel,US,Intel,INTC,Intel Co,2021.0,1158633280000.0,27.02163609268993,543685120000.0,,,,marketwatch,Foreign,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
106,阿里巴巴,US,阿里巴巴,BABA,Alibaba Group Holding Ltd,2021.0,1690218000000.0,27.298744664676118,717289000000.0,,,,alibaba ,Non_Beijing,,1.0,,,,1.0,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,1.0,,,,
|
||||||
|
107,安恒信息,SH,安恒信息,688023.SH,杭州安恒信息技术股份有限公司,2021.0,4852000000.0,21.322102338035116,1820000000.0,L,8.191740021277457,3611.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
108,百度,HK,百度,9888,Baidu Inc,2021.0,380034000000.0,25.547515326370895,124493000000.0,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,1.0,,,,
|
||||||
|
109,宝信软件,SH,宝信软件,600845.SH,上海宝信软件股份有限公司,2021.0,17860000000.0,23.187969779416893,11760000000.0,L,8.567506005289827,5258.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
110,晨科软件,,晨科软件,,杭州晨科软件技术有限公司,,,18.66057858282117,,S,4.465908118654584,87.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
111,鼎捷软件,SZ,鼎捷软件,300378.SZ,鼎捷软件股份有限公司,2021.0,2638000000.0,21.304363513697734,1788000000.0,L,8.360305435879093,4274.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,1.0,,,,,1.0,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
112,东华测试,SZ,东华测试,300354.SZ,江苏东华测试技术股份有限公司,2021.0,545000000.0,19.364586642859493,257000000.0,L,6.376726947898627,588.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
113,飞腾信息,,飞腾信息,,飞腾信息技术有限公司,,,19.49912235990601,,M,5.327876168789581,206.0,qichacha,Non_Beijing,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
114,富勒科技,,富勒科技,,上海富勒信息科技有限公司,,,18.796056156413595,,M,4.605170185988092,100.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
115,富士康,,富士康,,富士康工业互联网股份有限公司,2021.0,266600000000.0,26.809131059475877,439600000000.0,L,12.165094388801615,191970.0,qichacha,Non_Beijing,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,
|
||||||
|
116,概伦电子,SH,概伦电子,688206.SH,上海概伦电子股份有限公司,2021.0,2342000000.0,19.07820074686916,193000000.0,M,5.683579767338681,294.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
117,格创东智,,格创东智,,格创东智科技有限公司,,,14.99034369816093,,XS,0.6931471805599453,2.0,,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,1.0,1.0,,,,,
|
||||||
|
118,工邦邦,,工邦邦,,上海工邦邦工业技术有限公司,,,18.44907397460875,,S,4.248495242049359,70.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
119,广联达,SZ,广联达,002410.SZ,广联达科技股份有限公司,2021.0,10070000000.0,22.449419549076474,5619000000.0,L,9.157572306437528,9486.0,qichacha,Non_Beijing,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
120,广州数控,,广州数控,,广州数控设备有限公司,,,21.70305470983921,,M,7.59337419312129,1985.0,qichacha,Non_Beijing,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
121,广州智臣,,广州智臣,,广州智臣信息科技有限公司,,,17.975021257984938,,S,3.7612001156935624,43.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
122,国民技术,SZ,国民技术,300077.SZ,国民技术股份有限公司,2021.0,2668000000.0,20.74110575507474,1018000000.0,L,6.966024187106113,1060.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
123,海得控制,SZ,海得控制,002184.SZ,上海海得控制系统股份有限公司,2021.0,2576000000.0,21.635950073226454,2491000000.0,L,7.028201432058005,1128.0,qichacha,Non_Beijing,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
124,海尔,SH,海尔智家,600690.SH,海尔智家股份有限公司,2021.0,217700000000.0,26.150855539198588,227600000000.0,L,11.56051490856314,104874.0,qichacha,Non_Beijing,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,
|
||||||
|
125,华数机器人,,华数机器人,,重庆华数机器人有限公司,,,18.81532064062103,,M,4.624972813284271,102.0,qichacha,Non_Beijing,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
126,华为,,华为,,华为技术有限公司,2021.0,,27.17973246387848,636807000000.0,L,9.210340371976184,10000.0,qichacha,Non_Beijing,,1.0,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,1.0,,,,,,,,,,,,,,,,,1.0,1.0,,,
|
||||||
|
127,华为海思,,华为海思,,深圳市海思半导体有限公司,2021.0,,23.057349596999828,10320000000.0,M,8.85366542803745,7000.0,qichacha,Non_Beijing,,,1.0,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
128,华伍股份,SZ,华伍股份,300095.SZ,江西华伍制动器股份有限公司,2021.0,3800000000.0,21.084430686157997,1435000000.0,L,7.557472901614746,1915.0,qichacha,Non_Beijing,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
129,华中数控,SZ,华中数控,300161.SZ,武汉华中数控股份有限公司,2021.0,3399000000.0,21.21429683338422,1634000000.0,L,7.857093864902493,2584.0,qichacha,Non_Beijing,,,,1.0,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
130,金蝶,HK,金蝶,268,Kingdee International Software Group Co Ltd,2021.0,11087132000.0,22.15217586299757,4174147000.0,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
131,九物互联,,九物互联,,上海九物互联网科技有限公司,,,16.45354728340192,,S,2.1972245773362196,9.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
132,科远智慧,SZ,科远智慧,002380.SZ,南京科远智慧科技集团股份有限公司,2021.0,3337000000.0,20.854294099352817,1140000000.0,L,7.543273346705446,1888.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
133,蓝盾股份,SZ,*ST蓝盾,300297.SZ,蓝盾信息安全技术股份有限公司,2021.0,6249000000.0,19.474992773723894,287000000.0,L,6.1070228877422545,449.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
134,朗坤智慧,,朗坤智慧,,朗坤智慧科技股份有限公司,2019.0,446000000.0,19.525937575339142,302000000.0,L,6.415096959171596,611.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
135,浪潮,SH,浪潮软件,600756.SH,浪潮软件股份有限公司,2021.0,4155000000.0,21.327581803799742,1830000000.0,L,7.27655640271871,1446.0,qichacha,Non_Beijing,,,,,1.0,,,,,,,,,,,,,,,1.0,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,,,,,,,1.0,,,,
|
||||||
|
136,美的,SZ,美的集团,000333.SZ,美的集团股份有限公司,2021.0,387900000000.0,26.562161785409785,343400000000.0,L,12.018531490302054,165799.0,qichacha,Non_Beijing,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
137,美林数据,NQ,美林数据,831546,美林数据技术股份有限公司,,381000000.0,19.44672233978564,279000000.0,M,6.655440350367647,777.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,1.0,1.0,,,,,
|
||||||
|
138,启明信息,SZ,启明信息,002232.SZ,启明信息技术股份有限公司,2021.0,2120000000.0,20.773007928841224,1051000000.0,L,7.329749689041512,1525.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
139,容知日新,SH,容知日新,688768.SH,安徽容知日新科技股份有限公司,2021.0,772000000.0,19.799446838651466,397000000.0,L,6.244166900663736,515.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
140,山石网科,SH,山石网科,688030.SH,山石网科通信技术股份有限公司,2021.0,1944000000.0,20.749907767892832,1027000000.0,L,7.4999765409521215,1808.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,1.0,,1.0,1.0,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
141,上海新华控制,,上海新华控制,,上海新华控制技术集团科技有限公司,,,19.45071313618529,,M,5.278114659230517,196.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
142,深信服,SZ,深信服,300454.SZ,深信服科技股份有限公司,2021.0,10950000000.0,22.640923473049842,6805000000.0,L,9.093469420244768,8897.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,1.0,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
143,沈阳自动化研究所,,沈阳自动化研究所,,中国科学院沈阳自动化研究所,,,21.036067721385272,,L,6.907755278982137,1000.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
144,树根互联,,树根互联,,树根互联股份有限公司,2021.0,1130000000.0,20.063553432472702,517000000.0,L,6.263398262591624,525.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
145,思普软件,,思普软件,,思普软件股份有限公司,,,15.384790154936079,,S,1.0986122886681098,3.0,,Non_Beijing,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
146,苏州浩辰,,苏州浩辰,,苏州浩辰软件股份有限公司,2021.0,297000000.0,19.279342362989883,236000000.0,M,4.997212273764115,148.0,qichacha,Non_Beijing,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
147,拓邦股份,SZ,拓邦股份,002139.SZ,深圳拓邦股份有限公司,2021.0,9607000000.0,22.77314982638392,7767000000.0,L,9.041329829241901,8445.0,qichacha,Non_Beijing,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
148,腾讯,HK,腾讯,700,Tencent Holdings Ltd,2021.0,1612364000000.0,27.051413312764183,560118000000.0,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,1.0,,,,
|
||||||
|
149,天泽智云,,天泽智云,,北京天泽智云科技有限公司,,,18.266132126046017,,S,4.060443010546419,58.0,qichacha,Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
150,唯捷创芯,SH,唯捷创芯,688153.SH,唯捷创芯(天津)电子技术股份有限公司,2021.0,2039000000.0,21.97859693354749,3509000000.0,L,5.7745515455444085,322.0,qichacha,Non_Beijing,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
151,唯智信息,,唯智信息,,唯智信息技术(上海)股份有限公司,2017.0,156000000.0,17.632193783150008,45453200.0,S,4.969813299576001,144.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
152,卫士通,SZ,电科网安,002268.SZ,中电科网络安全科技股份有限公司,2021.0,7142000000.0,21.748948945591764,2789000000.0,L,7.8504931808711405,2567.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
153,武汉开目,,武汉开目,,武汉开目信息技术股份有限公司,,,19.123384646299442,,M,4.941642422609304,140.0,qichacha,Non_Beijing,,,,,,,,,,,,1.0,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
154,西格数据,,西格数据,,江苏西格数据科技有限公司,,,19.130308694476458,,S,4.948759890378168,141.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,1.0,1.0,,,,,
|
||||||
|
155,小米,HK,小米,1810,Xiaomi Co,2021.0,292891870000.0,26.517221516685858,328309145000.0,,,,xiaomi,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,
|
||||||
|
156,芯禾科技,,芯禾科技,,苏州芯禾电子科技有限公司,,,14.99034369816093,,XS,0.6931471805599453,2.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
157,新华三,,新华三,,新华三技术有限公司,,,22.724445575995357,,L,8.643297068211963,5672.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
158,信大捷安,,信大捷安,,郑州信大捷安信息技术股份有限公司,2018.0,425000000.0,19.54235830555147,307000000.0,L,6.240275845170769,513.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
159,徐工集团,SZ,徐工机械,000425.SZ,徐工集团工程机械股份有限公司,2021.0,167000000000.0,25.15800351053296,84330000000.0,L,9.647497926816836,15483.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
160,亚信科技,HK,亚信科技,1675,亚信科技有限公司,2021.0,9505464000.0,22.654014051158825,6894667000.0,,,,hkexnews,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
161,研华科技,,研华科技,,研华科技(中国)有限公司,,,21.99291420404896,,L,7.891330757661889,2674.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0
|
||||||
|
162,壹进制,,壹进制,,南京壹进制信息科技有限公司,,,17.889781656217256,58807600.0,M,5.3706380281276624,215.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
163,优也科技,,优也科技,,上海优也信息科技有限公司,,,18.36189705661439,,S,4.1588830833596715,64.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,1.0,1.0,,,,,
|
||||||
|
164,震坤行,,震坤行,,震坤行工业超市(上海)有限公司,,,21.83955113274084,,L,7.7336835707759,2284.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
165,智能云科,,智能云科,,智能云科信息科技有限公司,,,18.29911239159845,,S,4.0943445622221,60.0,qichacha,Non_Beijing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0,1.0,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
166,中国电子科技网络信息安全,,中国电子科技网络信息安全,,中国电子科技网络信息安全有限公司,,,19.838519125797546,,M,5.676753802268282,292.0,qichacha,Non_Beijing,,,,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
167,中环股份,SZ,TCL中环,002129.SZ,TCL中环新能源科技股份有限公司,2021.0,78220000000.0,24.4392739584486,41100000000.0,L,9.500843461614666,13371.0,qichacha,Non_Beijing,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
168,中控技术,SH,中控技术,688777.SH,浙江中控技术股份有限公司,2021.0,10350000000.0,22.231556567375552,4519000000.0,L,8.528528701079983,5057.0,qichacha,Non_Beijing,,,,1.0,,,,,,,,,,,,,,,,,,1.0,1.0,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.0,1.0,1.0
|
||||||
|
169,中芯国际,SH,中芯国际,688981.SH,中芯国际集成电路制造(上海)有限公司,2021.0,230233000000.0,24.27012079103093,34704000000.0,L,8.551208070003515,5173.0,qichacha,Non_Beijing,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
||||||
|
170,Pseudo1,,Pseudo1,,Pseudo1,,,18.420680743952367,100000000.0,,,,,,1.0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
|
@ -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
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
X1,X2,X3,X4,X5,X6,X7,X8
|
||||||
|
0,0,0,0,0,0,0,0
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
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
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
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
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
import os
|
||||||
|
import random
|
||||||
|
import time
|
||||||
|
from multiprocessing import Process
|
||||||
|
import argparse
|
||||||
|
from computation import Computation
|
||||||
|
from sqlalchemy.orm import close_all_sessions
|
||||||
|
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
|
||||||
|
def do_computation(c_db):
|
||||||
|
exp = Computation(c_db)
|
||||||
|
|
||||||
|
while 1:
|
||||||
|
time.sleep(random.uniform(0, 10))
|
||||||
|
is_all_done = exp.run()
|
||||||
|
if is_all_done:
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
parser = argparse.ArgumentParser(description='setting')
|
||||||
|
parser.add_argument('--exp', type=str, default='test')
|
||||||
|
parser.add_argument('--job', type=int, default='3')
|
||||||
|
parser.add_argument('--reset_sample', type=int, default='0')
|
||||||
|
parser.add_argument('--reset_db', type=bool, default=False)
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
assert args.job >= 1, 'Number of jobs should >= 1'
|
||||||
|
|
||||||
|
prefix_file_name = 'conf_db_prefix.yaml'
|
||||||
|
if os.path.exists(prefix_file_name):
|
||||||
|
os.remove(prefix_file_name)
|
||||||
|
with open(prefix_file_name, 'w', encoding='utf-8') as file:
|
||||||
|
yaml.dump({'db_name_prefix': args.exp}, file)
|
||||||
|
|
||||||
|
from controller_db import ControllerDB
|
||||||
|
controller_db = ControllerDB(args.exp, reset_flag=args.reset_sample)
|
||||||
|
# controller_db.reset_db()
|
||||||
|
|
||||||
|
# force drop
|
||||||
|
controller_db.reset_db(force_drop=args.reset_db)
|
||||||
|
|
||||||
|
controller_db.prepare_list_sample()
|
||||||
|
|
||||||
|
close_all_sessions()
|
||||||
|
|
||||||
|
process_list = []
|
||||||
|
for i in range(int(args.job)):
|
||||||
|
p = Process(target=do_computation, args=(controller_db,))
|
||||||
|
p.start()
|
||||||
|
process_list.append(p)
|
||||||
|
|
||||||
|
for i in process_list:
|
||||||
|
i.join()
|
|
@ -0,0 +1,397 @@
|
||||||
|
import agentpy as ap
|
||||||
|
import pandas as pd
|
||||||
|
import networkx as nx
|
||||||
|
from firm import FirmAgent
|
||||||
|
from product import ProductAgent
|
||||||
|
from orm import db_session, Result
|
||||||
|
import platform
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
class Model(ap.Model):
|
||||||
|
def setup(self):
|
||||||
|
# self parameter
|
||||||
|
self.sample = self.p.sample
|
||||||
|
self.int_stop_ts = 0
|
||||||
|
self.int_n_iter = int(self.p.n_iter)
|
||||||
|
self.product_network = None # agentpy network
|
||||||
|
self.firm_network = None # agentpy network
|
||||||
|
self.firm_prod_network = None # networkx
|
||||||
|
self.dct_lst_init_disrupt_firm_prod = \
|
||||||
|
self.p.dct_lst_init_disrupt_firm_prod
|
||||||
|
|
||||||
|
# external variable
|
||||||
|
self.int_n_max_trial = int(self.p.n_max_trial)
|
||||||
|
self.is_prf_size = bool(self.p.prf_size)
|
||||||
|
# self.proactive_ratio = float(self.p.proactive_ratio) # dropped
|
||||||
|
self.remove_t = int(self.p.remove_t)
|
||||||
|
self.int_netw_prf_n = int(self.p.netw_prf_n)
|
||||||
|
|
||||||
|
# initialize graph bom
|
||||||
|
G_bom = nx.adjacency_graph(json.loads(self.p.g_bom))
|
||||||
|
self.product_network = ap.Network(self, G_bom)
|
||||||
|
|
||||||
|
# initialize graph firm
|
||||||
|
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", "Name", "Type_Region", "Revenue_Log"]]
|
||||||
|
firm_product = []
|
||||||
|
for _, row in Firm.loc[:, '1':].iterrows():
|
||||||
|
firm_product.append(row[row == 1].index.to_list())
|
||||||
|
Firm_attr.loc[:, 'Product_Code'] = firm_product
|
||||||
|
Firm_attr.set_index('Code', inplace=True)
|
||||||
|
G_Firm = nx.MultiDiGraph()
|
||||||
|
G_Firm.add_nodes_from(Firm["Code"])
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
# initialize graph firm prod
|
||||||
|
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)
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
# add edge to G_firm according to G_bom
|
||||||
|
for node in nx.nodes(G_Firm):
|
||||||
|
lst_pred_product_code = []
|
||||||
|
for product_code in G_Firm.nodes[node]['Product_Code']:
|
||||||
|
lst_pred_product_code += list(G_bom.predecessors(product_code))
|
||||||
|
lst_pred_product_code = list(set(lst_pred_product_code))
|
||||||
|
# to generate consistant graph
|
||||||
|
lst_pred_product_code = list(sorted(lst_pred_product_code))
|
||||||
|
for pred_product_code in lst_pred_product_code:
|
||||||
|
# for each product predecessor (component) the firm need
|
||||||
|
# get a list of firm producing this component
|
||||||
|
lst_pred_firm = \
|
||||||
|
Firm['Code'][Firm[pred_product_code] == 1].to_list()
|
||||||
|
# select multiple supplier (multi-sourcing)
|
||||||
|
n_pred_firm = self.int_netw_prf_n
|
||||||
|
if n_pred_firm > len(lst_pred_firm):
|
||||||
|
n_pred_firm = len(lst_pred_firm)
|
||||||
|
# based on size or not
|
||||||
|
if self.is_prf_size:
|
||||||
|
lst_pred_firm_size = \
|
||||||
|
[G_Firm.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.nprandom.choice(lst_pred_firm,
|
||||||
|
n_pred_firm,
|
||||||
|
replace=False,
|
||||||
|
p=lst_prob)
|
||||||
|
else:
|
||||||
|
lst_choose_firm = self.nprandom.choice(lst_pred_firm,
|
||||||
|
n_pred_firm,
|
||||||
|
replace=False)
|
||||||
|
lst_add_edge = [(pred_firm, node,
|
||||||
|
{'Product': pred_product_code})
|
||||||
|
for pred_firm in lst_choose_firm]
|
||||||
|
G_Firm.add_edges_from(lst_add_edge)
|
||||||
|
|
||||||
|
# graph firm prod
|
||||||
|
set_node_prod_code = set(G_Firm.nodes[node]['Product_Code'])
|
||||||
|
set_pred_succ_code = set(G_bom.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 G_FirmProd.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 G_FirmProd.nodes(data=True)
|
||||||
|
if v['Firm_Code'] == node and
|
||||||
|
v['Product_Code'] == use_pred_prod_code][0]
|
||||||
|
G_FirmProd.add_edge(pred_node, current_node)
|
||||||
|
# nx.to_pandas_adjacency(G_Firm).to_csv('adj_g_firm.csv')
|
||||||
|
# nx.to_pandas_adjacency(G_FirmProd).to_csv('adj_g_firm_prod.csv')
|
||||||
|
|
||||||
|
# connect unconnected nodes
|
||||||
|
for node in nx.nodes(G_Firm):
|
||||||
|
if G_Firm.degree(node) == 0:
|
||||||
|
for product_code in G_Firm.nodes[node]['Product_Code']:
|
||||||
|
# unconnected node does not have possible suppliers,
|
||||||
|
# therefore find possible customer instead
|
||||||
|
# current node in graph firm prod
|
||||||
|
current_node = \
|
||||||
|
[n for n, v in G_FirmProd.nodes(data=True)
|
||||||
|
if v['Firm_Code'] == node and
|
||||||
|
v['Product_Code'] == product_code][0]
|
||||||
|
|
||||||
|
lst_succ_product_code = list(
|
||||||
|
G_bom.successors(product_code))
|
||||||
|
# different from: for different types of product,
|
||||||
|
# finding a common supplier (the logic above),
|
||||||
|
# instead: for different types of product,
|
||||||
|
# finding a customer for each product
|
||||||
|
for succ_product_code in lst_succ_product_code:
|
||||||
|
# for each product successor (finished product)
|
||||||
|
# the firm sells to,
|
||||||
|
# get a list of firm producing this finished product
|
||||||
|
lst_succ_firm = Firm['Code'][
|
||||||
|
Firm[succ_product_code] == 1].to_list()
|
||||||
|
# select multiple customer (multi-selling)
|
||||||
|
n_succ_firm = self.int_netw_prf_n
|
||||||
|
if n_succ_firm > len(lst_succ_firm):
|
||||||
|
n_succ_firm = len(lst_succ_firm)
|
||||||
|
# based on size or not
|
||||||
|
if self.is_prf_size:
|
||||||
|
lst_succ_firm_size = \
|
||||||
|
[G_Firm.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.nprandom.choice(lst_succ_firm,
|
||||||
|
n_succ_firm,
|
||||||
|
replace=False,
|
||||||
|
p=lst_prob)
|
||||||
|
else:
|
||||||
|
lst_choose_firm = \
|
||||||
|
self.nprandom.choice(lst_succ_firm,
|
||||||
|
n_succ_firm,
|
||||||
|
replace=False)
|
||||||
|
lst_add_edge = [(node, succ_firm,
|
||||||
|
{'Product': product_code})
|
||||||
|
for succ_firm in lst_choose_firm]
|
||||||
|
G_Firm.add_edges_from(lst_add_edge)
|
||||||
|
|
||||||
|
# graph firm prod
|
||||||
|
for succ_firm in lst_choose_firm:
|
||||||
|
succ_node = \
|
||||||
|
[n for n, v in G_FirmProd.nodes(data=True)
|
||||||
|
if v['Firm_Code'] == succ_firm and
|
||||||
|
v['Product_Code'] == succ_product_code][0]
|
||||||
|
G_FirmProd.add_edge(current_node, succ_node)
|
||||||
|
|
||||||
|
self.sample.g_firm = json.dumps(nx.adjacency_data(G_Firm))
|
||||||
|
self.firm_network = ap.Network(self, G_Firm)
|
||||||
|
self.firm_prod_network = G_FirmProd
|
||||||
|
# import matplotlib.pyplot as plt
|
||||||
|
# nx.draw(G_FirmProd)
|
||||||
|
# plt.show()
|
||||||
|
|
||||||
|
# initialize product
|
||||||
|
for ag_node, attr in self.product_network.graph.nodes(data=True):
|
||||||
|
product = ProductAgent(self, code=ag_node.label, name=attr['Name'])
|
||||||
|
self.product_network.add_agents([product], [ag_node])
|
||||||
|
self.a_lst_total_products = ap.AgentList(self,
|
||||||
|
self.product_network.agents)
|
||||||
|
|
||||||
|
# initialize firm
|
||||||
|
for ag_node, attr in self.firm_network.graph.nodes(data=True):
|
||||||
|
firm_agent = FirmAgent(
|
||||||
|
self,
|
||||||
|
code=ag_node.label,
|
||||||
|
name=attr['Name'],
|
||||||
|
type_region=attr['Type_Region'],
|
||||||
|
revenue_log=attr['Revenue_Log'],
|
||||||
|
a_lst_product=self.a_lst_total_products.select([
|
||||||
|
code in attr['Product_Code']
|
||||||
|
for code in self.a_lst_total_products.code
|
||||||
|
]))
|
||||||
|
|
||||||
|
self.firm_network.add_agents([firm_agent], [ag_node])
|
||||||
|
self.a_lst_total_firms = ap.AgentList(self, self.firm_network.agents)
|
||||||
|
|
||||||
|
# initialize dct_lst_init_disrupt_firm_prod (from string to agent)
|
||||||
|
t_dct = {}
|
||||||
|
for firm_code, lst_product in \
|
||||||
|
self.dct_lst_init_disrupt_firm_prod.items():
|
||||||
|
firm = self.a_lst_total_firms.select(
|
||||||
|
self.a_lst_total_firms.code == firm_code)[0]
|
||||||
|
t_dct[firm] = self.a_lst_total_products.select([
|
||||||
|
code in lst_product for code in self.a_lst_total_products.code
|
||||||
|
])
|
||||||
|
self.dct_lst_init_disrupt_firm_prod = t_dct
|
||||||
|
|
||||||
|
# set the initial firm product that are disrupted
|
||||||
|
# print('\n', '=' * 20, 'step', self.t, '=' * 20)
|
||||||
|
for firm, a_lst_product in self.dct_lst_init_disrupt_firm_prod.items():
|
||||||
|
for product in a_lst_product:
|
||||||
|
assert product in firm.dct_prod_up_prod_stat.keys(), \
|
||||||
|
f"product {product.code} not in firm {firm.code}"
|
||||||
|
firm.dct_prod_up_prod_stat[
|
||||||
|
product]['p_stat'].append(('D', self.t))
|
||||||
|
# print(f"initial disruption {firm.name} {product.code}")
|
||||||
|
|
||||||
|
# draw network
|
||||||
|
# self.draw_network()
|
||||||
|
|
||||||
|
def update(self):
|
||||||
|
self.a_lst_total_firms.clean_before_time_step()
|
||||||
|
|
||||||
|
# reduce the size of disrupted firm
|
||||||
|
for firm in self.a_lst_total_firms:
|
||||||
|
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':
|
||||||
|
size = firm.size_stat[-1][0] - \
|
||||||
|
firm.size_stat[0][0] \
|
||||||
|
/ len(firm.dct_prod_up_prod_stat.keys()) \
|
||||||
|
/ self.remove_t
|
||||||
|
firm.size_stat.append((size, self.t))
|
||||||
|
# print(f'in ts {self.t}, reduce {firm.name} size '
|
||||||
|
# f'to {firm.size_stat[-1][0]} due to {prod.code}')
|
||||||
|
lst_is_disrupt = \
|
||||||
|
[stat == 'D' for stat, _ in
|
||||||
|
firm.dct_prod_up_prod_stat[prod]['p_stat']
|
||||||
|
[-1 * self.remove_t:]]
|
||||||
|
if all(lst_is_disrupt):
|
||||||
|
# turn disrupted firm into removed firm
|
||||||
|
# when last self.remove_t times status is all disrupted
|
||||||
|
firm.dct_prod_up_prod_stat[
|
||||||
|
prod]['p_stat'].append(('R', self.t))
|
||||||
|
|
||||||
|
# stop simulation if any firm still in disrupted except initial removal
|
||||||
|
if self.t > 0:
|
||||||
|
for firm in self.a_lst_total_firms:
|
||||||
|
for prod in firm.dct_prod_up_prod_stat.keys():
|
||||||
|
status, _ = firm.dct_prod_up_prod_stat[prod]['p_stat'][-1]
|
||||||
|
is_init = \
|
||||||
|
firm in self.dct_lst_init_disrupt_firm_prod.keys() \
|
||||||
|
and prod in self.dct_lst_init_disrupt_firm_prod[firm]
|
||||||
|
if status == 'D' and not is_init:
|
||||||
|
# print("not stop because", firm.name, prod.code)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
continue
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
self.int_stop_ts = self.t
|
||||||
|
self.stop()
|
||||||
|
|
||||||
|
if self.t == self.int_n_iter:
|
||||||
|
self.stop()
|
||||||
|
|
||||||
|
def step(self):
|
||||||
|
# print('\n', '=' * 20, 'step', self.t, '=' * 20)
|
||||||
|
|
||||||
|
# remove edge to customer and disrupt customer up product
|
||||||
|
for firm in self.a_lst_total_firms:
|
||||||
|
for prod in firm.dct_prod_up_prod_stat.keys():
|
||||||
|
# repetition of disrupted firm that last for multiple ts is ok,
|
||||||
|
# as their edge has already been removed
|
||||||
|
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.a_lst_total_firms:
|
||||||
|
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)
|
||||||
|
|
||||||
|
for n_trial in range(self.int_n_max_trial):
|
||||||
|
# print('=' * 10, 'trial', n_trial, '=' * 10)
|
||||||
|
# seek_alt_supply
|
||||||
|
# shuffle self.a_lst_total_firms
|
||||||
|
self.a_lst_total_firms = self.a_lst_total_firms.shuffle()
|
||||||
|
is_stop_trial = True
|
||||||
|
for firm in self.a_lst_total_firms:
|
||||||
|
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)
|
||||||
|
# commmon supply only seek once
|
||||||
|
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_request
|
||||||
|
# shuffle self.a_lst_total_firms
|
||||||
|
self.a_lst_total_firms = self.a_lst_total_firms.shuffle()
|
||||||
|
for firm in self.a_lst_total_firms:
|
||||||
|
if len(firm.dct_request_prod_from_firm) > 0:
|
||||||
|
firm.handle_request()
|
||||||
|
|
||||||
|
# reset dct_request_prod_from_firm
|
||||||
|
self.a_lst_total_firms.clean_before_trial()
|
||||||
|
|
||||||
|
def end(self):
|
||||||
|
# print('/' * 20, 'output', '/' * 20)
|
||||||
|
|
||||||
|
qry_result = db_session.query(Result).filter_by(s_id=self.sample.id)
|
||||||
|
if qry_result.count() == 0:
|
||||||
|
lst_result_info = []
|
||||||
|
for firm in self.a_lst_total_firms:
|
||||||
|
for prod, dct_status_supply in \
|
||||||
|
firm.dct_prod_up_prod_stat.items():
|
||||||
|
lst_is_normal = [stat == 'N' for stat, _
|
||||||
|
in dct_status_supply['p_stat']]
|
||||||
|
if not all(lst_is_normal):
|
||||||
|
# print(f"{firm.name} {prod.code}:")
|
||||||
|
# print(dct_status_supply['p_stat'])
|
||||||
|
for status, ts in dct_status_supply['p_stat']:
|
||||||
|
db_r = Result(s_id=self.sample.id,
|
||||||
|
id_firm=firm.code,
|
||||||
|
id_product=prod.code,
|
||||||
|
ts=ts,
|
||||||
|
status=status)
|
||||||
|
lst_result_info.append(db_r)
|
||||||
|
db_session.bulk_save_objects(lst_result_info)
|
||||||
|
db_session.commit()
|
||||||
|
self.sample.is_done_flag = 1
|
||||||
|
self.sample.computer_name = platform.node()
|
||||||
|
self.sample.stop_t = self.int_stop_ts
|
||||||
|
db_session.commit()
|
||||||
|
|
||||||
|
def draw_network(self):
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
plt.rcParams['font.sans-serif'] = 'SimHei'
|
||||||
|
pos = nx.nx_agraph.graphviz_layout(self.firm_network.graph,
|
||||||
|
prog="twopi",
|
||||||
|
args="")
|
||||||
|
node_label = nx.get_node_attributes(self.firm_network.graph, 'Name')
|
||||||
|
node_degree = dict(self.firm_network.graph.out_degree())
|
||||||
|
node_label = {
|
||||||
|
key: f"{key} {node_label[key]} {node_degree[key]}"
|
||||||
|
for key in node_label.keys()
|
||||||
|
}
|
||||||
|
node_size = list(
|
||||||
|
nx.get_node_attributes(self.firm_network.graph,
|
||||||
|
'Revenue_Log').values())
|
||||||
|
node_size = list(map(lambda x: x**2, node_size))
|
||||||
|
edge_label = nx.get_edge_attributes(self.firm_network.graph, "Product")
|
||||||
|
# multi(di)graphs, the keys are 3-tuples
|
||||||
|
edge_label = {(n1, n2): label
|
||||||
|
for (n1, n2, _), label in edge_label.items()}
|
||||||
|
plt.figure(figsize=(12, 12), dpi=300)
|
||||||
|
nx.draw(self.firm_network.graph,
|
||||||
|
pos,
|
||||||
|
node_size=node_size,
|
||||||
|
labels=node_label,
|
||||||
|
font_size=6)
|
||||||
|
nx.draw_networkx_edge_labels(self.firm_network.graph,
|
||||||
|
pos,
|
||||||
|
edge_label,
|
||||||
|
font_size=4)
|
||||||
|
plt.savefig("network.png")
|
|
@ -0,0 +1,116 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from sqlalchemy import create_engine, inspect
|
||||||
|
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)
|
||||||
|
ins = 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'<Experiment: {self.id}>'
|
||||||
|
|
||||||
|
|
||||||
|
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'<Sample id: {self.id}>'
|
||||||
|
|
||||||
|
|
||||||
|
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(10), nullable=False)
|
||||||
|
id_product = Column(String(10), nullable=False)
|
||||||
|
ts = Column(Integer, nullable=False)
|
||||||
|
status = Column(String(5), nullable=False)
|
||||||
|
|
||||||
|
sample = relationship('Sample', back_populates='result', uselist=False)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return f'<Product id: {self.id}>'
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
Base.metadata.drop_all()
|
||||||
|
Base.metadata.create_all()
|
|
@ -0,0 +1,9 @@
|
||||||
|
,mean_count_firm_prod,mean_max_ts_firm_prod,mean_n_remove_firm_prod,mean_end_ts
|
||||||
|
prf_size,0.391,0.989,0.724,0.549
|
||||||
|
prf_conn,0.564,0.315,0.252,0.744
|
||||||
|
cap_limit_prob_type,0.001,0,0,0
|
||||||
|
n_max_trial,0.001,0.009,0.002,0.007
|
||||||
|
cap_limit_level,0,0,0,0
|
||||||
|
diff_new_conn,0.046,0.071,0.46,0.119
|
||||||
|
remove_t,0.007,0.045,0.74,0
|
||||||
|
netw_prf_n,0,0.002,0.254,0.044
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
自变量,level,系统恢复用时R1,产业-企业边累计扰乱次数R2,产业-企业边最大传导深度R3,产业-企业边断裂总数R4
|
||||||
|
采购策略P1,三供应商,2.144,2.826,1.156,0.7541
|
||||||
|
采购策略P1,双供应商,2.146,2.65,1.133,0.7615
|
||||||
|
采购策略P1,单供应商,2.261,2.519,1.121,0.7919
|
||||||
|
是否规模偏好P2,倾向,2.196,2.661,1.137,0.7657
|
||||||
|
是否规模偏好P2,不倾向,2.171,2.669,1.137,0.7726
|
||||||
|
最大尝试次数P3,高,2.141,2.652,1.13,0.739
|
||||||
|
最大尝试次数P3,中,2.124,2.652,1.127,0.7431
|
||||||
|
最大尝试次数P3,低,2.286,2.691,1.154,0.8254
|
||||||
|
是否已有连接偏好P4,倾向,2.191,2.663,1.133,0.7579
|
||||||
|
是否已有连接偏好P4,不倾向,2.177,2.668,1.141,0.7804
|
||||||
|
额外产能分布P5,均匀分布,2.316,2.681,1.158,0.8403
|
||||||
|
额外产能分布P5,正态分布,2.052,2.65,1.115,0.698
|
||||||
|
额外产能分布参数P6,高,1.914,2.624,1.098,0.6299
|
||||||
|
额外产能分布参数P6,中,2.202,2.666,1.142,0.7655
|
||||||
|
额外产能分布参数P6,低,2.436,2.705,1.171,0.9121
|
||||||
|
新供应关系构成概率P7,低,2.24,2.672,1.143,0.764
|
||||||
|
新供应关系构成概率P7,中,2.132,2.674,1.143,0.7859
|
||||||
|
新供应关系构成概率P7,高,2.179,2.649,1.124,0.7575
|
||||||
|
最大尝试时间步P8,低,1.726,2.646,1.123,0.7782
|
||||||
|
最大尝试时间步P8,中,2.186,2.682,1.144,0.7599
|
||||||
|
最大尝试时间步P8,高,2.64,2.667,1.143,0.7694
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
idx_scenario,n_max_trial,prf_size,prf_conn,cap_limit_prob_type,cap_limit_level,diff_new_conn,remove_t,netw_prf_n,mean_count_firm_prod,mean_count_firm,mean_count_prod,mean_max_ts_firm_prod,mean_max_ts_firm,mean_max_ts_prod,mean_n_remove_firm_prod,mean_n_all_prod_remove_firm,mean_end_ts
|
||||||
|
0,7,1,1,uniform,5.0000,0.3000,3,3,2.7027,2.7027,2.0928,1.0928,1.0928,1.0928,0.6051,0.2131,1.5524
|
||||||
|
1,5,1,1,uniform,10.0000,0.5000,5,2,2.7023,2.7004,2.2211,1.2211,1.2211,1.2211,0.9634,0.3309,2.4335
|
||||||
|
2,3,1,1,uniform,15.0000,0.7000,7,1,2.5387,2.5360,2.1756,1.1756,1.1756,1.1756,1.0019,0.3293,3.1926
|
||||||
|
3,7,1,1,uniform,5.0000,0.3000,3,2,2.5589,2.5589,2.0884,1.0884,1.0884,1.0884,0.6059,0.2139,1.5533
|
||||||
|
4,5,1,1,uniform,10.0000,0.5000,5,1,2.5387,2.5356,2.1756,1.1756,1.1756,1.1756,0.9143,0.3143,2.4840
|
||||||
|
5,3,1,1,uniform,15.0000,0.7000,7,3,2.9109,2.9074,2.2773,1.2773,1.2773,1.2773,1.1680,0.3872,3.4848
|
||||||
|
6,7,1,1,normal,5.0000,0.5000,7,3,2.6356,2.6356,2.1055,1.1055,1.1055,1.1055,0.6008,0.2107,2.1806
|
||||||
|
7,5,1,1,normal,10.0000,0.7000,3,2,2.5914,2.5909,2.0857,1.0857,1.0857,1.0857,0.6829,0.2354,1.6272
|
||||||
|
8,3,1,1,normal,15.0000,0.3000,5,1,2.5219,2.5189,2.1617,1.1617,1.1617,1.1617,0.8895,0.3088,2.5105
|
||||||
|
9,7,1,0,uniform,5.0000,0.7000,5,3,2.7091,2.7091,2.0952,1.0952,1.0952,1.0952,0.6051,0.2131,1.8733
|
||||||
|
10,5,1,0,uniform,10.0000,0.3000,7,2,2.7107,2.7086,2.2280,1.2280,1.2280,1.2280,0.9674,0.3320,3.0187
|
||||||
|
11,3,1,0,uniform,15.0000,0.5000,3,1,2.5771,2.5731,2.2095,1.2095,1.2095,1.2095,1.1646,0.3939,2.1248
|
||||||
|
12,7,1,0,normal,10.0000,0.7000,3,1,2.4051,2.4042,2.0539,1.0539,1.0539,1.0539,0.6888,0.2347,1.6442
|
||||||
|
13,5,1,0,normal,15.0000,0.3000,5,3,2.7368,2.7364,2.2015,1.2015,1.2015,1.2015,0.8714,0.3021,2.3029
|
||||||
|
14,3,1,0,normal,5.0000,0.5000,7,2,2.5665,2.5665,2.0600,1.0600,1.0600,1.0600,0.6000,0.2105,2.1863
|
||||||
|
15,7,1,0,normal,10.0000,0.7000,5,3,2.6705,2.6705,2.1389,1.1389,1.1389,1.1389,0.6943,0.2406,2.0160
|
||||||
|
16,5,1,0,normal,15.0000,0.3000,7,2,2.6707,2.6680,2.1577,1.1577,1.1577,1.1577,0.8642,0.2973,2.8053
|
||||||
|
17,3,1,0,normal,5.0000,0.5000,3,1,2.4105,2.4103,2.0594,1.0594,1.0594,1.0594,0.6903,0.2394,1.6615
|
||||||
|
18,7,0,1,normal,10.0000,0.3000,7,1,2.4520,2.4493,2.1034,1.1034,1.1034,1.1034,0.7008,0.2423,2.6644
|
||||||
|
19,5,0,1,normal,15.0000,0.5000,3,3,2.8086,2.8059,2.2133,1.2133,1.2133,1.2133,0.8821,0.3017,1.7964
|
||||||
|
20,3,0,1,normal,5.0000,0.7000,5,2,2.5808,2.5808,2.0684,1.0684,1.0684,1.0684,0.6004,0.2105,1.8642
|
||||||
|
21,7,0,1,normal,10.0000,0.5000,7,1,2.4149,2.4141,2.0697,1.0697,1.0697,1.0697,0.6594,0.2274,2.4549
|
||||||
|
22,5,0,1,normal,15.0000,0.7000,3,3,2.8084,2.8057,2.2131,1.2131,1.2131,1.2131,0.8811,0.3013,1.7956
|
||||||
|
23,3,0,1,normal,5.0000,0.3000,5,2,2.5808,2.5808,2.0684,1.0684,1.0684,1.0684,0.6006,0.2107,1.8648
|
||||||
|
24,7,0,1,uniform,15.0000,0.5000,3,2,2.6992,2.6935,2.2269,1.2269,1.2269,1.2269,1.1223,0.3851,2.0112
|
||||||
|
25,5,0,1,uniform,5.0000,0.7000,5,1,2.3648,2.3646,2.0248,1.0248,1.0248,1.0248,0.6084,0.2118,1.9465
|
||||||
|
26,3,0,1,uniform,10.0000,0.3000,7,3,2.8187,2.8160,2.2122,1.2122,1.2122,1.2122,0.9806,0.3446,3.0491
|
||||||
|
27,7,0,0,normal,15.0000,0.5000,5,2,2.6756,2.6731,2.1558,1.1558,1.1558,1.1558,0.8455,0.2893,2.2659
|
||||||
|
28,5,0,0,normal,5.0000,0.7000,7,1,2.3678,2.3678,2.0261,1.0261,1.0261,1.0261,0.6008,0.2112,2.2375
|
||||||
|
29,3,0,0,normal,10.0000,0.3000,3,3,2.7467,2.7463,2.1556,1.1556,1.1556,1.1556,0.7137,0.2482,1.6533
|
||||||
|
30,7,0,0,uniform,15.0000,0.7000,7,2,2.6956,2.6899,2.2232,1.2232,1.2232,1.2232,1.1025,0.3741,3.2589
|
||||||
|
31,5,0,0,uniform,5.0000,0.3000,3,1,2.4206,2.4183,2.0752,1.0752,1.0752,1.0752,0.8027,0.2905,1.7909
|
||||||
|
32,3,0,0,uniform,10.0000,0.5000,5,3,2.8238,2.8211,2.2158,1.2158,1.2158,1.2158,0.9766,0.3423,2.4798
|
||||||
|
33,7,0,0,uniform,15.0000,0.3000,5,1,2.5533,2.5451,2.1931,1.1931,1.1931,1.1931,1.0897,0.3749,2.7922
|
||||||
|
34,5,0,0,uniform,5.0000,0.5000,7,3,2.6741,2.6741,2.0787,1.0787,1.0787,1.0787,0.6034,0.2114,2.1891
|
||||||
|
35,3,0,0,uniform,10.0000,0.7000,3,2,2.6552,2.6518,2.1880,1.1880,1.1880,1.1880,0.9922,0.3379,1.9097
|
|
Binary file not shown.
After ![]() (image error) Size: 160 KiB |
Binary file not shown.
After ![]() (image error) Size: 184 KiB |
Binary file not shown.
After ![]() (image error) Size: 188 KiB |
Binary file not shown.
After ![]() (image error) Size: 195 KiB |
Binary file not shown.
After ![]() (image error) Size: 129 KiB |
Binary file not shown.
After ![]() (image error) Size: 162 KiB |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
After ![]() (image error) Size: 513 KiB |
|
@ -0,0 +1,236 @@
|
||||||
|
up_id_product,up_name_product,down_id_product,down_name_product,count
|
||||||
|
1.4,工业互联网安全,1,供给,946
|
||||||
|
1.3,工业软件,1,供给,484
|
||||||
|
2.1.3.6,微服务,2.1.3,工业物联网,415
|
||||||
|
2.1.3.2,平台基础服务,2.1.3,工业物联网,402
|
||||||
|
2.1.3.4,应用管理服务,2.1.3,工业物联网,402
|
||||||
|
2.1.3.1,物联网服务,2.1.3,工业物联网,401
|
||||||
|
2.1.3.7,制造类API,2.1.3,工业物联网,401
|
||||||
|
2.1.3.5,容器服务,2.1.3,工业物联网,400
|
||||||
|
2.1.3.3,工业引擎服务,2.1.3,工业物联网,393
|
||||||
|
2.3.3,协议转换,2.3,边缘层,359
|
||||||
|
2.3.1,工业数据接入,2.3,边缘层,351
|
||||||
|
2.3.2,边缘数据处理,2.3,边缘层,343
|
||||||
|
2.1.2.4,行业机理模型,2.1.2,工业模型库,320
|
||||||
|
1.3.1.2,计算机辅助工程CAE,1.3.1,设计研发,320
|
||||||
|
2.1.2.2,业务流程模型,2.1.2,工业模型库,319
|
||||||
|
1.3.1.1,计算机辅助设计CAD,1.3.1,设计研发,316
|
||||||
|
1.3.1.7,电子设计自动化EDA,1.3.1,设计研发,314
|
||||||
|
2.1.2.1,数据算法模型,2.1.2,工业模型库,313
|
||||||
|
2.1.2.3,研发仿真模型,2.1.2,工业模型库,312
|
||||||
|
1.3.1.6,产品生命周期管理PLM,1.3.1,设计研发,308
|
||||||
|
1.3.1.5,产品数据管理PDM,1.3.1,设计研发,306
|
||||||
|
1.3.1.3,计算机辅助制造CAM,1.3.1,设计研发,306
|
||||||
|
1.3.1.4,计算机辅助工艺过程设计CAPP,1.3.1,设计研发,304
|
||||||
|
1.3.2,采购供应,1.3,工业软件,304
|
||||||
|
1.4.5,数据安全,1,供给,296
|
||||||
|
1.4.5,数据安全,1.4,工业互联网安全,296
|
||||||
|
1.4.4,平台安全,1.4,工业互联网安全,294
|
||||||
|
1.1.2,工业控制器,1.1,工业自动化,281
|
||||||
|
1.3.1,设计研发,1.3,工业软件,274
|
||||||
|
1.1.3,工业服务器,1.1,工业自动化,259
|
||||||
|
1.1.1,工业计算芯片,1.1,工业自动化,249
|
||||||
|
2.1.1.4,组态建模工具,2.1.1,开发工具,239
|
||||||
|
2.1.1.1,算法建模工具,2.1.1,开发工具,235
|
||||||
|
2.1.1.3,流程开发工具,2.1.1,开发工具,234
|
||||||
|
2,工业互联网平台,1,供给,233
|
||||||
|
2.1.1.2,低代码开发工具,2.1.1,开发工具,233
|
||||||
|
1.2.2,标识解析,1.2,工业互联网网络,221
|
||||||
|
1.2.3,数据互通,1.2,工业互联网网络,218
|
||||||
|
2.1.1.5,数字孪生建模工具,2.1.1,开发工具,215
|
||||||
|
1.3.3,生产制造,1.3,工业软件,213
|
||||||
|
1.2.1,网络互联,1.2,工业互联网网络,212
|
||||||
|
1.4.4,平台安全,1,供给,210
|
||||||
|
1.4.3,网络安全,1,供给,207
|
||||||
|
1.4.3,网络安全,1.4,工业互联网安全,207
|
||||||
|
1.4.2,控制安全,1.4,工业互联网安全,204
|
||||||
|
1.4.2,控制安全,1,供给,204
|
||||||
|
1.3.4,企业运营管理,1.3,工业软件,201
|
||||||
|
1.3.4.1,企业资源计划ERP,1.3.4,企业运营管理,181
|
||||||
|
1.3.4.2,客户关系管理CRM,1.3.4,企业运营管理,181
|
||||||
|
1.3.4.3,人力资源管理HRM,1.3.4,企业运营管理,180
|
||||||
|
1.3.3.6,运维保障系统MRO,1.3.3,生产制造,176
|
||||||
|
2.1.4.1,工业大数据存储,2.1.4,工业大数据,174
|
||||||
|
1.3.3.5,企业资产管理系统EAM,1.3.3,生产制造,170
|
||||||
|
1.3.3.1,制造执行系统MES,1.3.3,生产制造,167
|
||||||
|
1.3.3.7,故障预测与健康管理PHM,1.3.3,生产制造,167
|
||||||
|
1.3.3.4,可编程逻揖控制系统PLC,1.3.3,生产制造,165
|
||||||
|
2.1.4.2,工业大数据管理,2.1.4,工业大数据,164
|
||||||
|
1.3.3.2,分布式控制系统DCS,1.3.3,生产制造,161
|
||||||
|
1.3.3.3,数据采集与监视控制系统SCADA,1.3.3,生产制造,160
|
||||||
|
1.3.5,仓储物流,1.3,工业软件,156
|
||||||
|
1.4.4.1,身份鉴别与访问控制,1.4.4,平台安全,153
|
||||||
|
2.1.4.2.1,数据质量管理,2.1.4.2,工业大数据管理,140
|
||||||
|
2.1,PaaS,2,工业互联网平台,140
|
||||||
|
2.1.4,工业大数据,2.1,PaaS,138
|
||||||
|
2.1.4.1.3,实时数据库,2.1.4.1,工业大数据存储,137
|
||||||
|
2.1.4.1.4,时序数据库,2.1.4.1,工业大数据存储,135
|
||||||
|
1.4.4.4,工业应用行为监控,1.4.4,平台安全,132
|
||||||
|
1.4.4.3,接入认证,1.4.4,平台安全,132
|
||||||
|
1.4.4.2,密钥管理,1.4.4,平台安全,132
|
||||||
|
2.1.4.2.2,数据安全管理,2.1.4.2,工业大数据管理,132
|
||||||
|
2.1.4.1.1,关系型数据库,2.1.4.1,工业大数据存储,132
|
||||||
|
2.1.3,工业物联网,2.1,PaaS,131
|
||||||
|
2.1.4.1.2,分布式数据库,2.1.4.1,工业大数据存储,130
|
||||||
|
1.3.2,采购供应,1,供给,121
|
||||||
|
2.3,边缘层,2,工业互联网平台,108
|
||||||
|
1.2,工业互联网网络,1,供给,108
|
||||||
|
1.4.2.4,安全隔离与信息交换系统,1.4.2,控制安全,103
|
||||||
|
1.4.4.5,安全态势感知,1.4.4,平台安全,100
|
||||||
|
1.3.2.1,供应链管理SCM,1.3,工业软件,100
|
||||||
|
1.3.2.1,供应链管理SCM,1.3.2,采购供应,100
|
||||||
|
1.1,工业自动化,1,供给,98
|
||||||
|
1.4.2.1,工控安全监测与审计,1.4.2,控制安全,93
|
||||||
|
1.4.1.3,防毒墙,1.4.1,设备安全,87
|
||||||
|
1.4.1.1,工业防火墙,1.4.1,设备安全,86
|
||||||
|
1.4.3.3,APT检测,1.4.3,网络安全,85
|
||||||
|
1.4.5.4,数据脱敏,1.4.5,数据安全,78
|
||||||
|
1.4.5.5,敏感数据发现与监控,1.4.5,数据安全,78
|
||||||
|
1.4.5.9,数据防火墙,1.4.5,数据安全,78
|
||||||
|
1.4.5.6,数据容灾备份,1.4.5,数据安全,78
|
||||||
|
1.3.5,仓储物流,1,供给,78
|
||||||
|
1.4.5.3,数据审计系统,1.4.5,数据安全,78
|
||||||
|
1.4.5.7,数据恢复,1.4.5,数据安全,78
|
||||||
|
1.4.5.2,数据防泄漏系统,1.4.5,数据安全,78
|
||||||
|
1.3.5.1,仓储物流管理WMS,1.3.5,仓储物流,77
|
||||||
|
2.2,IaaS,2,工业互联网平台,77
|
||||||
|
1.4.1,设备安全,1.4,工业互联网安全,77
|
||||||
|
2.1.4,工业大数据,2,工业互联网平台,76
|
||||||
|
1.4.1,设备安全,1,供给,75
|
||||||
|
1.4.1.5,统一威胁管理系统,1.4.1,设备安全,74
|
||||||
|
1.4.3.4,攻击溯源,1.4.3,网络安全,74
|
||||||
|
1.4.2.5,安全日志与审计,1.4.2,控制安全,74
|
||||||
|
1.4.1.4,入侵检测系统,1.4.1,设备安全,74
|
||||||
|
1.4.2.2,工控主机卫士,1.4.2,控制安全,74
|
||||||
|
1.4.2.6,隐私计算,1.4.2,控制安全,74
|
||||||
|
1.4.3.5,负载均衡,1.4.3,网络安全,74
|
||||||
|
1.4.3.1,网络漏洞扫描和补丁管理,1.4.3,网络安全,74
|
||||||
|
1.4.1.2,下一代防火墙,1.4.1,设备安全,74
|
||||||
|
2.1,PaaS,1,供给,70
|
||||||
|
2.1.2,工业模型库,2.1,PaaS,61
|
||||||
|
2.1.1,开发工具,2.1,PaaS,60
|
||||||
|
1.3.5.1,仓储物流管理WMS,1.3,工业软件,56
|
||||||
|
1.3.3,生产制造,1,供给,51
|
||||||
|
1.4.5.1,恶意代码检测系统,1,供给,50
|
||||||
|
1.4.4.5,安全态势感知,1.4,工业互联网安全,50
|
||||||
|
1.3.2.1,供应链管理SCM,1,供给,50
|
||||||
|
1.4.3.6,沙箱类设备,1.4.3,网络安全,50
|
||||||
|
1.4.3.6,沙箱类设备,1.4,工业互联网安全,50
|
||||||
|
1.4.3.6,沙箱类设备,1,供给,50
|
||||||
|
1.4.5.1,恶意代码检测系统,1.4,工业互联网安全,50
|
||||||
|
1.4.4.5,安全态势感知,1,供给,50
|
||||||
|
1.4.3.2,流量检测,1.4.3,网络安全,50
|
||||||
|
1.4.2.7,工控原生安全,1,供给,50
|
||||||
|
1.4.2.7,工控原生安全,1.4.2,控制安全,50
|
||||||
|
1.4.2.3,工控漏洞扫描,1,供给,50
|
||||||
|
1.4.2.3,工控漏洞扫描,1.4,工业互联网安全,50
|
||||||
|
1.4.2.3,工控漏洞扫描,1.4.2,控制安全,50
|
||||||
|
1.4.5.8,数据加密,1.4.5,数据安全,50
|
||||||
|
1.4.5.8,数据加密,1.4,工业互联网安全,50
|
||||||
|
1.4.5.8,数据加密,1,供给,50
|
||||||
|
1.4.2.7,工控原生安全,1.4,工业互联网安全,50
|
||||||
|
1.4.5.1,恶意代码检测系统,1.4.5,数据安全,50
|
||||||
|
1.4.3.2,流量检测,1,供给,50
|
||||||
|
1.4.3.2,流量检测,1.4,工业互联网安全,50
|
||||||
|
2.1.4,工业大数据,1,供给,38
|
||||||
|
1.3.4,企业运营管理,1,供给,36
|
||||||
|
1.3.5.1,仓储物流管理WMS,1,供给,28
|
||||||
|
1.4.5.2,数据防泄漏系统,1.4,工业互联网安全,26
|
||||||
|
1.4.5.2,数据防泄漏系统,1,供给,26
|
||||||
|
1.3.3.7,故障预测与健康管理PHM,1.3,工业软件,26
|
||||||
|
1.4.5.7,数据恢复,1,供给,26
|
||||||
|
1.4.5.7,数据恢复,1.4,工业互联网安全,26
|
||||||
|
1.4.5.4,数据脱敏,1.4,工业互联网安全,25
|
||||||
|
1.3.1.5,产品数据管理PDM,1.3,工业软件,25
|
||||||
|
1.4.5.6,数据容灾备份,1.4,工业互联网安全,25
|
||||||
|
1.4.5.6,数据容灾备份,1,供给,25
|
||||||
|
1.4.5.5,敏感数据发现与监控,1.4,工业互联网安全,25
|
||||||
|
1.4.4.2,密钥管理,1.4,工业互联网安全,25
|
||||||
|
1.4.5.4,数据脱敏,1,供给,25
|
||||||
|
1.4.5.5,敏感数据发现与监控,1,供给,25
|
||||||
|
1.4.4.3,接入认证,1.4,工业互联网安全,24
|
||||||
|
1.3.4.2,客户关系管理CRM,1.3,工业软件,23
|
||||||
|
1.4.3.1,网络漏洞扫描和补丁管理,1.4,工业互联网安全,23
|
||||||
|
1.4.3.1,网络漏洞扫描和补丁管理,1,供给,23
|
||||||
|
1.4.2.5,安全日志与审计,1,供给,21
|
||||||
|
1.4.2.5,安全日志与审计,1.4,工业互联网安全,21
|
||||||
|
1.3.3.5,企业资产管理系统EAM,1.3,工业软件,20
|
||||||
|
2.1.4.1,工业大数据存储,2.1,PaaS,20
|
||||||
|
1.3.1,设计研发,1,供给,19
|
||||||
|
1.4.4.3,接入认证,1,供给,19
|
||||||
|
1.3.1.3,计算机辅助制造CAM,1.3,工业软件,19
|
||||||
|
1.4.4.4,工业应用行为监控,1.4,工业互联网安全,18
|
||||||
|
1.4.5.9,数据防火墙,1.4,工业互联网安全,18
|
||||||
|
1.4.3.4,攻击溯源,1.4,工业互联网安全,18
|
||||||
|
1.4.3.4,攻击溯源,1,供给,18
|
||||||
|
1.4.5.9,数据防火墙,1,供给,18
|
||||||
|
2.1.4.2,工业大数据管理,2.1,PaaS,17
|
||||||
|
1.3.4.3,人力资源管理HRM,1.3,工业软件,17
|
||||||
|
1.4.2.6,隐私计算,1,供给,17
|
||||||
|
1.4.2.6,隐私计算,1.4,工业互联网安全,17
|
||||||
|
1.4.4.2,密钥管理,1,供给,16
|
||||||
|
1.4.2.2,工控主机卫士,1.4,工业互联网安全,14
|
||||||
|
1.4.2.2,工控主机卫士,1,供给,14
|
||||||
|
1.4.4.4,工业应用行为监控,1,供给,13
|
||||||
|
2.1.4.1,工业大数据存储,2,工业互联网平台,12
|
||||||
|
1.4.3.5,负载均衡,1,供给,12
|
||||||
|
1.4.3.5,负载均衡,1.4,工业互联网安全,12
|
||||||
|
2.1.4.2,工业大数据管理,2,工业互联网平台,10
|
||||||
|
1.3.3.4,可编程逻揖控制系统PLC,1.3,工业软件,10
|
||||||
|
1.3.1.7,电子设计自动化EDA,1.3,工业软件,10
|
||||||
|
1.4.1.4,入侵检测系统,1,供给,10
|
||||||
|
1.4.4.1,身份鉴别与访问控制,1.4,工业互联网安全,10
|
||||||
|
1.4.1.5,统一威胁管理系统,1.4,工业互联网安全,10
|
||||||
|
1.4.1.4,入侵检测系统,1.4,工业互联网安全,10
|
||||||
|
1.4.1.5,统一威胁管理系统,1,供给,8
|
||||||
|
2.1.3.1,物联网服务,2.1,PaaS,8
|
||||||
|
1.2.3,数据互通,1,供给,8
|
||||||
|
1.3.1.6,产品生命周期管理PLM,1.3,工业软件,7
|
||||||
|
1.3.3.3,数据采集与监视控制系统SCADA,1.3,工业软件,6
|
||||||
|
2.1.4.1,工业大数据存储,1,供给,6
|
||||||
|
1.3.3.5,企业资产管理系统EAM,1,供给,6
|
||||||
|
2.1.4.1.2,分布式数据库,2.1.4,工业大数据,6
|
||||||
|
1.3.3.7,故障预测与健康管理PHM,1,供给,6
|
||||||
|
1.3.4.3,人力资源管理HRM,1,供给,6
|
||||||
|
1.3.4.2,客户关系管理CRM,1,供给,5
|
||||||
|
1.3.1.2,计算机辅助工程CAE,1.3,工业软件,5
|
||||||
|
2.1.4.2,工业大数据管理,1,供给,5
|
||||||
|
1.4.3.3,APT检测,1.4,工业互联网安全,4
|
||||||
|
1.4.3.3,APT检测,1,供给,4
|
||||||
|
1.1.3,工业服务器,1,供给,4
|
||||||
|
1.3.1.1,计算机辅助设计CAD,1.3,工业软件,4
|
||||||
|
1.4.1.2,下一代防火墙,1,供给,4
|
||||||
|
1.3.4.1,企业资源计划ERP,1.3,工业软件,4
|
||||||
|
1.4.1.2,下一代防火墙,1.4,工业互联网安全,4
|
||||||
|
1.3.3.4,可编程逻揖控制系统PLC,1,供给,4
|
||||||
|
2.3,边缘层,1,供给,3
|
||||||
|
2.1.3.3,工业引擎服务,2.1,PaaS,3
|
||||||
|
2.1.3.2,平台基础服务,2.1,PaaS,3
|
||||||
|
2.1.3.4,应用管理服务,2.1,PaaS,3
|
||||||
|
1.3.1.3,计算机辅助制造CAM,1,供给,2
|
||||||
|
2.2,IaaS,1,供给,2
|
||||||
|
2.3.2,边缘数据处理,2,工业互联网平台,2
|
||||||
|
1.4.2.4,安全隔离与信息交换系统,1.4,工业互联网安全,2
|
||||||
|
1.2.2,标识解析,1,供给,2
|
||||||
|
1.4.2.4,安全隔离与信息交换系统,1,供给,2
|
||||||
|
2.1.1,开发工具,2,工业互联网平台,2
|
||||||
|
2.1.4.1.1,关系型数据库,2.1.4,工业大数据,2
|
||||||
|
2.1.3.5,容器服务,2.1,PaaS,2
|
||||||
|
2.1.2,工业模型库,2,工业互联网平台,2
|
||||||
|
1.3.3.6,运维保障系统MRO,1.3,工业软件,2
|
||||||
|
1.3.1.5,产品数据管理PDM,1,供给,2
|
||||||
|
1.4.1.1,工业防火墙,1,供给,2
|
||||||
|
1.4.1.1,工业防火墙,1.4,工业互联网安全,2
|
||||||
|
1.4.4.1,身份鉴别与访问控制,1,供给,2
|
||||||
|
2.1.3.7,制造类API,2.1,PaaS,2
|
||||||
|
1.4.1.3,防毒墙,1.4,工业互联网安全,1
|
||||||
|
1.3.3.3,数据采集与监视控制系统SCADA,1,供给,1
|
||||||
|
1.3.1.2,计算机辅助工程CAE,1,供给,1
|
||||||
|
1.4.5.3,数据审计系统,1.4,工业互联网安全,1
|
||||||
|
2.1.2.3,研发仿真模型,2.1,PaaS,1
|
||||||
|
1.4.1.3,防毒墙,1,供给,1
|
||||||
|
1.2.1,网络互联,1,供给,1
|
||||||
|
2.3.2,边缘数据处理,1,供给,1
|
||||||
|
2.1.2,工业模型库,1,供给,1
|
||||||
|
2.1.1,开发工具,1,供给,1
|
||||||
|
1.4.5.3,数据审计系统,1,供给,1
|
|
Binary file not shown.
After ![]() (image error) Size: 795 KiB |
|
@ -0,0 +1,172 @@
|
||||||
|
id_firm,Name,count
|
||||||
|
126,华为,1965
|
||||||
|
170,Pseudo1,1611
|
||||||
|
106,阿里巴巴,1515
|
||||||
|
99,Siemens,1382
|
||||||
|
79,PTC,1301
|
||||||
|
142,深信服,1041
|
||||||
|
97,General Electric,1023
|
||||||
|
81,SAP,921
|
||||||
|
41,启明星辰,910
|
||||||
|
85,Dassault,718
|
||||||
|
148,腾讯,696
|
||||||
|
22,航天云网,629
|
||||||
|
84,Bosch,575
|
||||||
|
58,用友,552
|
||||||
|
80,Salesforce,540
|
||||||
|
13,东方国信,528
|
||||||
|
53,天融信,509
|
||||||
|
100,Synopsys,505
|
||||||
|
29,京东工业品,478
|
||||||
|
39,Autodesk,477
|
||||||
|
93,Cadence,473
|
||||||
|
73,FANUC,461
|
||||||
|
157,新华三,445
|
||||||
|
74,HoneyWell,429
|
||||||
|
75,IBM,429
|
||||||
|
40,奇安信,421
|
||||||
|
108,百度,415
|
||||||
|
135,浪潮,395
|
||||||
|
0,360科技,369
|
||||||
|
130,金蝶,318
|
||||||
|
102,Amazon AWS,302
|
||||||
|
23,和利时,273
|
||||||
|
159,徐工集团,254
|
||||||
|
47,首自信,247
|
||||||
|
26,寄云科技,247
|
||||||
|
77,Oracle,245
|
||||||
|
140,山石网科,220
|
||||||
|
95,Schneider,212
|
||||||
|
98,Microsoft Azure,211
|
||||||
|
49,数码大方,211
|
||||||
|
37,绿盟,201
|
||||||
|
124,海尔,193
|
||||||
|
86,Dell EMC,191
|
||||||
|
67,中国移动,189
|
||||||
|
155,小米,189
|
||||||
|
45,石化盈科,186
|
||||||
|
105,Intel,180
|
||||||
|
115,富士康,180
|
||||||
|
94,Mitsubishi,173
|
||||||
|
168,中控技术,171
|
||||||
|
117,格创东智,170
|
||||||
|
55,威努特,144
|
||||||
|
6,安世亚太,144
|
||||||
|
5,安华金和,141
|
||||||
|
62,云道智造,134
|
||||||
|
3,艾克斯特,131
|
||||||
|
38,牛刀,120
|
||||||
|
143,沈阳自动化研究所,119
|
||||||
|
16,东土科技,117
|
||||||
|
82,Uptake,113
|
||||||
|
31,昆仑数据,112
|
||||||
|
149,天泽智云,111
|
||||||
|
78,OutSystems,111
|
||||||
|
33,蓝谷信息,109
|
||||||
|
144,树根互联,108
|
||||||
|
57,亚控科技,107
|
||||||
|
68,中望软件,106
|
||||||
|
42,山大华天,103
|
||||||
|
154,西格数据,103
|
||||||
|
165,智能云科,100
|
||||||
|
131,九物互联,99
|
||||||
|
60,宇动源,98
|
||||||
|
137,美林数据,96
|
||||||
|
161,研华科技,92
|
||||||
|
163,优也科技,91
|
||||||
|
111,鼎捷软件,81
|
||||||
|
162,壹进制,78
|
||||||
|
43,神舟软件,77
|
||||||
|
63,长扬科技,75
|
||||||
|
54,网御星云,69
|
||||||
|
9,北京航天测控,65
|
||||||
|
14,东华软件,64
|
||||||
|
89,Rockwell,56
|
||||||
|
153,武汉开目,54
|
||||||
|
56,芯愿景,53
|
||||||
|
133,蓝盾股份,47
|
||||||
|
70,ABB,46
|
||||||
|
27,江南天安,44
|
||||||
|
11,北信源,44
|
||||||
|
138,启明信息,44
|
||||||
|
76,MasterCAM,43
|
||||||
|
90,Mentor Graphics,43
|
||||||
|
129,华中数控,43
|
||||||
|
50,索为系统,43
|
||||||
|
152,卫士通,43
|
||||||
|
21,Hexagon,42
|
||||||
|
72,ANSYS,41
|
||||||
|
116,概伦电子,40
|
||||||
|
114,富勒科技,40
|
||||||
|
158,信大捷安,40
|
||||||
|
139,容知日新,39
|
||||||
|
96,Cisco,39
|
||||||
|
127,华为海思,39
|
||||||
|
88,HPE,39
|
||||||
|
52,天空卫士,39
|
||||||
|
48,曙光信息,38
|
||||||
|
119,广联达,38
|
||||||
|
30,可信华泰,37
|
||||||
|
151,唯智信息,37
|
||||||
|
156,芯禾科技,37
|
||||||
|
59,优特捷,37
|
||||||
|
122,国民技术,37
|
||||||
|
146,苏州浩辰,37
|
||||||
|
112,东华测试,36
|
||||||
|
20,海基科技,36
|
||||||
|
71,Altair,36
|
||||||
|
107,安恒信息,36
|
||||||
|
25,华大九天,36
|
||||||
|
145,思普软件,35
|
||||||
|
10,北京英贝思,35
|
||||||
|
160,亚信科技,35
|
||||||
|
164,震坤行,34
|
||||||
|
4,爱创科技,34
|
||||||
|
110,晨科软件,33
|
||||||
|
2,706所,33
|
||||||
|
46,适创科技,33
|
||||||
|
64,中电智科,33
|
||||||
|
134,朗坤智慧,33
|
||||||
|
123,海得控制,33
|
||||||
|
8,梆梆安全,33
|
||||||
|
15,东软集团,33
|
||||||
|
19,国泰网信,32
|
||||||
|
120,广州数控,32
|
||||||
|
92,Omron,32
|
||||||
|
51,天地和兴,32
|
||||||
|
34,力控科技,31
|
||||||
|
118,工邦邦,31
|
||||||
|
121,广州智臣,31
|
||||||
|
17,国保金泰,31
|
||||||
|
61,元年科技,31
|
||||||
|
128,华伍股份,30
|
||||||
|
1,51WORLD,29
|
||||||
|
109,宝信软件,29
|
||||||
|
166,中国电子科技网络信息安全,29
|
||||||
|
35,凌昊智能,28
|
||||||
|
125,华数机器人,28
|
||||||
|
32,兰光创新,28
|
||||||
|
147,拓邦股份,27
|
||||||
|
136,美的,26
|
||||||
|
91,Moxa,26
|
||||||
|
65,中国电信,25
|
||||||
|
83,Emerson,24
|
||||||
|
141,上海新华控制,24
|
||||||
|
12,大唐软件,24
|
||||||
|
18,国能智深,23
|
||||||
|
66,中国联通,23
|
||||||
|
132,科远智慧,21
|
||||||
|
24,华大电子,20
|
||||||
|
150,唯捷创芯,19
|
||||||
|
103,STMicroelectronics ,18
|
||||||
|
7,百望,18
|
||||||
|
69,紫光集团,18
|
||||||
|
28,金山云,18
|
||||||
|
36,龙芯中科,17
|
||||||
|
104,Infineon,17
|
||||||
|
44,圣邦微电子,17
|
||||||
|
167,中环股份,17
|
||||||
|
113,飞腾信息,16
|
||||||
|
101,Analog Devices,16
|
||||||
|
169,中芯国际,15
|
||||||
|
87,Texas Instruments,14
|
|
|
@ -0,0 +1,476 @@
|
||||||
|
id_firm,name_firm,id_product,name_product,count
|
||||||
|
170,Pseudo1,1,供给,1611
|
||||||
|
126,华为,1.4,工业互联网安全,1021
|
||||||
|
41,启明星辰,1.4.5,数据安全,696
|
||||||
|
142,深信服,1.4.2,控制安全,568
|
||||||
|
100,Synopsys,1.3.1,设计研发,505
|
||||||
|
29,京东工业品,1.3,工业软件,478
|
||||||
|
39,Autodesk,1.3.1,设计研发,477
|
||||||
|
93,Cadence,1.3.1,设计研发,473
|
||||||
|
106,阿里巴巴,1.3,工业软件,472
|
||||||
|
73,FANUC,2.1.3,工业物联网,461
|
||||||
|
142,深信服,1.4.3,网络安全,457
|
||||||
|
157,新华三,1.4.1,设备安全,445
|
||||||
|
75,IBM,1.3.3,生产制造,429
|
||||||
|
97,General Electric,1.3.3,生产制造,421
|
||||||
|
74,HoneyWell,2.1.3,工业物联网,418
|
||||||
|
99,Siemens,1.3.1,设计研发,410
|
||||||
|
148,腾讯,2.1.3,工业物联网,408
|
||||||
|
126,华为,2.1.3,工业物联网,405
|
||||||
|
108,百度,2.1.3,工业物联网,402
|
||||||
|
85,Dassault,1.3.1,设计研发,402
|
||||||
|
99,Siemens,1.3.3,生产制造,399
|
||||||
|
97,General Electric,2.1.3,工业物联网,393
|
||||||
|
106,阿里巴巴,2.1.3,工业物联网,387
|
||||||
|
0,360科技,1.4.4,平台安全,369
|
||||||
|
99,Siemens,2.1,PaaS,345
|
||||||
|
40,奇安信,1.4.4,平台安全,340
|
||||||
|
79,PTC,2.1.4.1,工业大数据存储,338
|
||||||
|
80,Salesforce,2.1.1,开发工具,335
|
||||||
|
85,Dassault,2.1.1,开发工具,316
|
||||||
|
58,用友,2.1.2,工业模型库,299
|
||||||
|
81,SAP,2.1.4.1,工业大数据存储,288
|
||||||
|
106,阿里巴巴,2.1.1,开发工具,286
|
||||||
|
148,腾讯,2.1.1,开发工具,279
|
||||||
|
79,PTC,2.1.2,工业模型库,271
|
||||||
|
81,SAP,2.1.2,工业模型库,263
|
||||||
|
159,徐工集团,2.1.2,工业模型库,254
|
||||||
|
84,Bosch,2.1.2,工业模型库,237
|
||||||
|
77,Oracle,1.3.4,企业运营管理,222
|
||||||
|
98,Microsoft Azure,2,工业互联网平台,211
|
||||||
|
97,General Electric,1.2,工业互联网网络,209
|
||||||
|
80,Salesforce,1.3.4,企业运营管理,205
|
||||||
|
102,Amazon AWS,2,工业互联网平台,200
|
||||||
|
81,SAP,1.3.4,企业运营管理,198
|
||||||
|
84,Bosch,2.3,边缘层,198
|
||||||
|
126,华为,2.3,边缘层,194
|
||||||
|
79,PTC,2.1.4.2,工业大数据管理,192
|
||||||
|
86,Dell EMC,1.1,工业自动化,191
|
||||||
|
99,Siemens,2.3,边缘层,191
|
||||||
|
155,小米,2.3,边缘层,189
|
||||||
|
95,Schneider,2.3,边缘层,189
|
||||||
|
67,中国移动,1.2,工业互联网网络,189
|
||||||
|
124,海尔,2.3,边缘层,185
|
||||||
|
106,阿里巴巴,1.1,工业自动化,184
|
||||||
|
105,Intel,1.1,工业自动化,180
|
||||||
|
106,阿里巴巴,1.2,工业互联网网络,180
|
||||||
|
94,Mitsubishi,1.1,工业自动化,173
|
||||||
|
81,SAP,2.1.4.2,工业大数据管理,172
|
||||||
|
126,华为,1.2,工业互联网网络,163
|
||||||
|
126,华为,1.1,工业自动化,151
|
||||||
|
115,富士康,2.1.4,工业大数据,150
|
||||||
|
84,Bosch,2.1.4,工业大数据,140
|
||||||
|
130,金蝶,1.3.5,仓储物流,127
|
||||||
|
102,Amazon AWS,2.1.4,工业大数据,102
|
||||||
|
58,用友,1.3.2,采购供应,85
|
||||||
|
130,金蝶,1.3.2,采购供应,85
|
||||||
|
53,天融信,1.4.2.3,工控漏洞扫描,50
|
||||||
|
63,长扬科技,1.4.4.5,安全态势感知,50
|
||||||
|
140,山石网科,1.4.5.1,恶意代码检测系统,50
|
||||||
|
135,浪潮,1.3.2.1,供应链管理SCM,50
|
||||||
|
53,天融信,1.4.3.6,沙箱类设备,50
|
||||||
|
23,和利时,1.4.2.7,工控原生安全,50
|
||||||
|
53,天融信,1.4.5.8,数据加密,50
|
||||||
|
41,启明星辰,1.4.3.2,流量检测,50
|
||||||
|
79,PTC,2.1.3.4,应用管理服务,47
|
||||||
|
43,神舟软件,1.3.1.5,产品数据管理PDM,45
|
||||||
|
13,东方国信,2.1.3.2,平台基础服务,45
|
||||||
|
79,PTC,2.1.3.1,物联网服务,45
|
||||||
|
138,启明信息,1.3.1.5,产品数据管理PDM,44
|
||||||
|
13,东方国信,2.1.3.4,应用管理服务,44
|
||||||
|
13,东方国信,2.1.3.5,容器服务,44
|
||||||
|
55,威努特,1.4.4.4,工业应用行为监控,44
|
||||||
|
53,天融信,1.4.4.4,工业应用行为监控,44
|
||||||
|
135,浪潮,2.1.3.7,制造类API,44
|
||||||
|
27,江南天安,1.4.4.2,密钥管理,44
|
||||||
|
37,绿盟,1.4.4.3,接入认证,44
|
||||||
|
54,网御星云,1.4.4.3,接入认证,44
|
||||||
|
11,北信源,1.4.4.2,密钥管理,44
|
||||||
|
90,Mentor Graphics,1.3.1.7,电子设计自动化EDA,43
|
||||||
|
76,MasterCAM,1.3.1.3,计算机辅助制造CAM,43
|
||||||
|
135,浪潮,2.1.3.5,容器服务,43
|
||||||
|
135,浪潮,2.1.3.3,工业引擎服务,43
|
||||||
|
68,中望软件,1.3.1.3,计算机辅助制造CAM,43
|
||||||
|
135,浪潮,2.1.3.1,物联网服务,43
|
||||||
|
152,卫士通,1.4.4.1,身份鉴别与访问控制,43
|
||||||
|
13,东方国信,2.1.3.7,制造类API,43
|
||||||
|
79,PTC,2.1.3.3,工业引擎服务,43
|
||||||
|
22,航天云网,2.1.3.4,应用管理服务,43
|
||||||
|
50,索为系统,1.3.1.5,产品数据管理PDM,43
|
||||||
|
79,PTC,2.1.3.7,制造类API,42
|
||||||
|
135,浪潮,2.1.3.4,应用管理服务,42
|
||||||
|
13,东方国信,2.1.3.1,物联网服务,42
|
||||||
|
22,航天云网,2.1.3.7,制造类API,42
|
||||||
|
56,芯愿景,1.3.1.7,电子设计自动化EDA,42
|
||||||
|
22,航天云网,2.1.3.3,工业引擎服务,42
|
||||||
|
22,航天云网,2.1.3.2,平台基础服务,42
|
||||||
|
21,Hexagon,1.3.1.3,计算机辅助制造CAM,42
|
||||||
|
79,PTC,2.1.3.5,容器服务,41
|
||||||
|
58,用友,1.3.4.2,客户关系管理CRM,41
|
||||||
|
13,东方国信,2.1.3.3,工业引擎服务,41
|
||||||
|
130,金蝶,1.3.4.3,人力资源管理HRM,41
|
||||||
|
22,航天云网,2.1.3.5,容器服务,41
|
||||||
|
72,ANSYS,1.3.1.2,计算机辅助工程CAE,41
|
||||||
|
14,东华软件,1.3.4.3,人力资源管理HRM,41
|
||||||
|
79,PTC,2.1.3.2,平台基础服务,41
|
||||||
|
116,概伦电子,1.3.1.7,电子设计自动化EDA,40
|
||||||
|
135,浪潮,2.1.3.2,平台基础服务,40
|
||||||
|
114,富勒科技,1.3.5.1,仓储物流管理WMS,40
|
||||||
|
42,山大华天,1.3.1.3,计算机辅助制造CAM,40
|
||||||
|
22,航天云网,2.1.3.1,物联网服务,40
|
||||||
|
158,信大捷安,1.4.4.1,身份鉴别与访问控制,40
|
||||||
|
79,PTC,2.1.3.6,微服务,40
|
||||||
|
5,安华金和,1.4.5.9,数据防火墙,39
|
||||||
|
5,安华金和,1.4.5.5,敏感数据发现与监控,39
|
||||||
|
52,天空卫士,1.4.5.5,敏感数据发现与监控,39
|
||||||
|
5,安华金和,1.4.5.4,数据脱敏,39
|
||||||
|
162,壹进制,1.4.5.7,数据恢复,39
|
||||||
|
53,天融信,1.4.5.7,数据恢复,39
|
||||||
|
162,壹进制,1.4.5.6,数据容灾备份,39
|
||||||
|
53,天融信,1.4.5.2,数据防泄漏系统,39
|
||||||
|
53,天融信,1.4.5.6,数据容灾备份,39
|
||||||
|
37,绿盟,1.4.5.2,数据防泄漏系统,39
|
||||||
|
140,山石网科,1.4.5.4,数据脱敏,39
|
||||||
|
88,HPE,1.1.3,工业服务器,39
|
||||||
|
140,山石网科,1.4.5.9,数据防火墙,39
|
||||||
|
26,寄云科技,2.1.3.7,制造类API,39
|
||||||
|
130,金蝶,1.3.4.2,客户关系管理CRM,39
|
||||||
|
139,容知日新,1.3.3.7,故障预测与健康管理PHM,39
|
||||||
|
135,浪潮,2.1.3.6,微服务,38
|
||||||
|
45,石化盈科,1.3.4.2,客户关系管理CRM,38
|
||||||
|
13,东方国信,2.1.3.6,微服务,38
|
||||||
|
119,广联达,1.3.1.1,计算机辅助设计CAD,38
|
||||||
|
26,寄云科技,2.1.3.1,物联网服务,38
|
||||||
|
48,曙光信息,1.2.2,标识解析,38
|
||||||
|
3,艾克斯特,1.3.1.6,产品生命周期管理PLM,38
|
||||||
|
22,航天云网,2.1.3.6,微服务,38
|
||||||
|
41,启明星辰,1.4.3.1,网络漏洞扫描和补丁管理,37
|
||||||
|
41,启明星辰,1.4.3.5,负载均衡,37
|
||||||
|
156,芯禾科技,1.3.1.7,电子设计自动化EDA,37
|
||||||
|
40,奇安信,1.4.2.5,安全日志与审计,37
|
||||||
|
9,北京航天测控,1.3.3.7,故障预测与健康管理PHM,37
|
||||||
|
30,可信华泰,1.4.2.6,隐私计算,37
|
||||||
|
122,国民技术,1.4.2.6,隐私计算,37
|
||||||
|
37,绿盟,1.4.2.2,工控主机卫士,37
|
||||||
|
41,启明星辰,1.4.3.4,攻击溯源,37
|
||||||
|
55,威努特,1.4.2.2,工控主机卫士,37
|
||||||
|
151,唯智信息,1.3.5.1,仓储物流管理WMS,37
|
||||||
|
79,PTC,2.3.3,协议转换,37
|
||||||
|
23,和利时,2.1.3.6,微服务,37
|
||||||
|
26,寄云科技,2.1.3.2,平台基础服务,37
|
||||||
|
59,优特捷,1.4.2.5,安全日志与审计,37
|
||||||
|
58,用友,1.3.4.3,人力资源管理HRM,37
|
||||||
|
53,天融信,1.4.3.4,攻击溯源,37
|
||||||
|
146,苏州浩辰,1.3.1.1,计算机辅助设计CAD,37
|
||||||
|
3,艾克斯特,1.3.1.5,产品数据管理PDM,37
|
||||||
|
53,天融信,1.4.3.5,负载均衡,37
|
||||||
|
37,绿盟,1.4.3.1,网络漏洞扫描和补丁管理,37
|
||||||
|
26,寄云科技,2.1.3.3,工业引擎服务,36
|
||||||
|
25,华大九天,1.3.1.7,电子设计自动化EDA,36
|
||||||
|
71,Altair,1.3.1.2,计算机辅助工程CAE,36
|
||||||
|
58,用友,1.3.1.6,产品生命周期管理PLM,36
|
||||||
|
107,安恒信息,1.4.3.3,APT检测,36
|
||||||
|
112,东华测试,1.3.3.7,故障预测与健康管理PHM,36
|
||||||
|
79,PTC,1.3.1.4,计算机辅助工艺过程设计CAPP,36
|
||||||
|
20,海基科技,1.3.1.2,计算机辅助工程CAE,36
|
||||||
|
49,数码大方,1.3.1.4,计算机辅助工艺过程设计CAPP,35
|
||||||
|
145,思普软件,1.3.1.4,计算机辅助工艺过程设计CAPP,35
|
||||||
|
10,北京英贝思,1.3.3.5,企业资产管理系统EAM,35
|
||||||
|
13,东方国信,2.3.1,工业数据接入,35
|
||||||
|
13,东方国信,2.3.3,协议转换,35
|
||||||
|
79,PTC,2.3.1,工业数据接入,35
|
||||||
|
160,亚信科技,1.4.1.3,防毒墙,35
|
||||||
|
26,寄云科技,2.1.3.5,容器服务,35
|
||||||
|
16,东土科技,2.3.1,工业数据接入,34
|
||||||
|
168,中控技术,2.3.3,协议转换,34
|
||||||
|
4,爱创科技,1.2.2,标识解析,34
|
||||||
|
164,震坤行,1.3.3.6,运维保障系统MRO,34
|
||||||
|
79,PTC,1.3.1.1,计算机辅助设计CAD,34
|
||||||
|
16,东土科技,2.3.2,边缘数据处理,34
|
||||||
|
22,航天云网,2.3.3,协议转换,33
|
||||||
|
26,寄云科技,2.1.3.4,应用管理服务,33
|
||||||
|
64,中电智科,1.1.2,工业控制器,33
|
||||||
|
2,706所,1.1.3,工业服务器,33
|
||||||
|
46,适创科技,1.3.1.2,计算机辅助工程CAE,33
|
||||||
|
111,鼎捷软件,1.3.1.6,产品生命周期管理PLM,33
|
||||||
|
110,晨科软件,1.3.3.5,企业资产管理系统EAM,33
|
||||||
|
47,首自信,2.1.3.6,微服务,33
|
||||||
|
8,梆梆安全,1.4.1.1,工业防火墙,33
|
||||||
|
123,海得控制,1.1.2,工业控制器,33
|
||||||
|
134,朗坤智慧,1.3.3.5,企业资产管理系统EAM,33
|
||||||
|
161,研华科技,2.3.2,边缘数据处理,33
|
||||||
|
133,蓝盾股份,1.4.4.1,身份鉴别与访问控制,33
|
||||||
|
13,东方国信,2.3.2,边缘数据处理,33
|
||||||
|
15,东软集团,1.3.3.5,企业资产管理系统EAM,33
|
||||||
|
13,东方国信,1.2.2,标识解析,32
|
||||||
|
92,Omron,1.3.3.4,可编程逻揖控制系统PLC,32
|
||||||
|
120,广州数控,1.2.3,数据互通,32
|
||||||
|
47,首自信,2.1.2.2,业务流程模型,32
|
||||||
|
79,PTC,1.3.1.6,产品生命周期管理PLM,32
|
||||||
|
68,中望软件,1.3.1.1,计算机辅助设计CAD,32
|
||||||
|
3,艾克斯特,1.3.1.4,计算机辅助工艺过程设计CAPP,32
|
||||||
|
42,山大华天,1.3.1.4,计算机辅助工艺过程设计CAPP,32
|
||||||
|
43,神舟软件,1.3.1.6,产品生命周期管理PLM,32
|
||||||
|
144,树根互联,2.1.2.4,行业机理模型,32
|
||||||
|
51,天地和兴,1.4.2.1,工控安全监测与审计,32
|
||||||
|
19,国泰网信,1.4.2.1,工控安全监测与审计,32
|
||||||
|
34,力控科技,1.3.3.3,数据采集与监视控制系统SCADA,31
|
||||||
|
42,山大华天,1.3.1.1,计算机辅助设计CAD,31
|
||||||
|
61,元年科技,1.3.3.3,数据采集与监视控制系统SCADA,31
|
||||||
|
58,用友,1.2.2,标识解析,31
|
||||||
|
6,安世亚太,2.1.2.1,数据算法模型,31
|
||||||
|
68,中望软件,1.3.1.2,计算机辅助工程CAE,31
|
||||||
|
82,Uptake,2.1.2.1,数据算法模型,31
|
||||||
|
121,广州智臣,1.4.2.4,安全隔离与信息交换系统,31
|
||||||
|
161,研华科技,2.3.3,协议转换,31
|
||||||
|
118,工邦邦,1.3.3.6,运维保障系统MRO,31
|
||||||
|
168,中控技术,2.3.1,工业数据接入,31
|
||||||
|
17,国保金泰,1.4.2.4,安全隔离与信息交换系统,31
|
||||||
|
115,富士康,1.1.3,工业服务器,30
|
||||||
|
49,数码大方,1.3.1.6,产品生命周期管理PLM,30
|
||||||
|
149,天泽智云,2.1.2.2,业务流程模型,30
|
||||||
|
33,蓝谷信息,2.1.2.2,业务流程模型,30
|
||||||
|
57,亚控科技,2.3.3,协议转换,30
|
||||||
|
168,中控技术,2.3.2,边缘数据处理,30
|
||||||
|
16,东土科技,2.3.3,协议转换,30
|
||||||
|
128,华伍股份,1.1.2,工业控制器,30
|
||||||
|
153,武汉开目,1.3.1.4,计算机辅助工艺过程设计CAPP,30
|
||||||
|
53,天融信,1.4.5.3,数据审计系统,30
|
||||||
|
6,安世亚太,2.1.2.2,业务流程模型,30
|
||||||
|
23,和利时,2.3.2,边缘数据处理,30
|
||||||
|
6,安世亚太,1.3.1.2,计算机辅助工程CAE,30
|
||||||
|
1,51WORLD,2.1.1.5,数字孪生建模工具,29
|
||||||
|
23,和利时,2.3.3,协议转换,29
|
||||||
|
62,云道智造,2.1.2.4,行业机理模型,29
|
||||||
|
47,首自信,2.1.1.4,组态建模工具,29
|
||||||
|
82,Uptake,2.1.2.3,研发仿真模型,29
|
||||||
|
140,山石网科,1.4.1.4,入侵检测系统,29
|
||||||
|
33,蓝谷信息,2.1.2.4,行业机理模型,29
|
||||||
|
166,中国电子科技网络信息安全,1.2.3,数据互通,29
|
||||||
|
109,宝信软件,1.3.3.1,制造执行系统MES,29
|
||||||
|
149,天泽智云,2.1.2.4,行业机理模型,29
|
||||||
|
23,和利时,2.3.1,工业数据接入,29
|
||||||
|
26,寄云科技,2.1.3.6,微服务,29
|
||||||
|
35,凌昊智能,1.1.3,工业服务器,28
|
||||||
|
49,数码大方,2.1.2.4,行业机理模型,28
|
||||||
|
144,树根互联,2.1.2.3,研发仿真模型,28
|
||||||
|
149,天泽智云,2.1.2.1,数据算法模型,28
|
||||||
|
38,牛刀,2.1.1.4,组态建模工具,28
|
||||||
|
32,兰光创新,1.2.3,数据互通,28
|
||||||
|
161,研华科技,2.3.1,工业数据接入,28
|
||||||
|
41,启明星辰,1.4.1.2,下一代防火墙,28
|
||||||
|
49,数码大方,1.3.1.1,计算机辅助设计CAD,28
|
||||||
|
57,亚控科技,2.3.2,边缘数据处理,28
|
||||||
|
47,首自信,2.1.2.4,行业机理模型,28
|
||||||
|
22,航天云网,1.2.2,标识解析,28
|
||||||
|
9,北京航天测控,1.3.3.6,运维保障系统MRO,28
|
||||||
|
6,安世亚太,2.1.2.3,研发仿真模型,28
|
||||||
|
165,智能云科,2.1.2.3,研发仿真模型,28
|
||||||
|
125,华数机器人,1.2.3,数据互通,28
|
||||||
|
62,云道智造,2.1.2.3,研发仿真模型,27
|
||||||
|
62,云道智造,2.1.2.1,数据算法模型,27
|
||||||
|
70,ABB,1.3.3.4,可编程逻揖控制系统PLC,27
|
||||||
|
47,首自信,2.1.2.1,数据算法模型,27
|
||||||
|
147,拓邦股份,1.1.2,工业控制器,27
|
||||||
|
47,首自信,2.1.1.3,流程开发工具,27
|
||||||
|
143,沈阳自动化研究所,2.1.1.3,流程开发工具,27
|
||||||
|
111,鼎捷软件,1.3.4.1,企业资源计划ERP,27
|
||||||
|
22,航天云网,2.1.1.1,算法建模工具,27
|
||||||
|
82,Uptake,2.1.2.4,行业机理模型,27
|
||||||
|
79,PTC,2.3.2,边缘数据处理,27
|
||||||
|
127,华为海思,1.1.3,工业服务器,27
|
||||||
|
49,数码大方,2.1.2.2,业务流程模型,27
|
||||||
|
165,智能云科,2.1.2.4,行业机理模型,27
|
||||||
|
45,石化盈科,1.3.4.1,企业资源计划ERP,26
|
||||||
|
22,航天云网,2.3.1,工业数据接入,26
|
||||||
|
91,Moxa,1.2.1,网络互联,26
|
||||||
|
22,航天云网,2.3.2,边缘数据处理,26
|
||||||
|
53,天融信,1.4.1.5,统一威胁管理系统,26
|
||||||
|
23,和利时,1.3.3.4,可编程逻揖控制系统PLC,26
|
||||||
|
23,和利时,1.3.3.3,数据采集与监视控制系统SCADA,26
|
||||||
|
55,威努特,1.4.1.2,下一代防火墙,26
|
||||||
|
49,数码大方,2.1.2.1,数据算法模型,26
|
||||||
|
62,云道智造,2.1.2.2,业务流程模型,26
|
||||||
|
38,牛刀,2.1.1.1,算法建模工具,26
|
||||||
|
130,金蝶,1.3.4.1,企业资源计划ERP,26
|
||||||
|
47,首自信,2.1.1.1,算法建模工具,26
|
||||||
|
40,奇安信,1.4.3.3,APT检测,26
|
||||||
|
22,航天云网,2.1.1.4,组态建模工具,26
|
||||||
|
135,浪潮,1.1.3,工业服务器,26
|
||||||
|
117,格创东智,2.1.1.2,低代码开发工具,26
|
||||||
|
136,美的,1.2.1,网络互联,26
|
||||||
|
78,OutSystems,2.1.1.3,流程开发工具,26
|
||||||
|
57,亚控科技,2.3.1,工业数据接入,26
|
||||||
|
38,牛刀,2.1.1.2,低代码开发工具,26
|
||||||
|
82,Uptake,2.1.2.2,业务流程模型,26
|
||||||
|
47,首自信,2.1.2.3,研发仿真模型,25
|
||||||
|
144,树根互联,2.1.2.2,业务流程模型,25
|
||||||
|
33,蓝谷信息,2.1.2.1,数据算法模型,25
|
||||||
|
60,宇动源,2.1.1.4,组态建模工具,25
|
||||||
|
41,启明星辰,1.4.1.5,统一威胁管理系统,25
|
||||||
|
126,华为,2.1.1.5,数字孪生建模工具,25
|
||||||
|
165,智能云科,2.1.2.2,业务流程模型,25
|
||||||
|
6,安世亚太,2.1.2.4,行业机理模型,25
|
||||||
|
33,蓝谷信息,2.1.2.3,研发仿真模型,25
|
||||||
|
62,云道智造,1.3.1.2,计算机辅助工程CAE,25
|
||||||
|
65,中国电信,1.2.1,网络互联,25
|
||||||
|
149,天泽智云,2.1.2.3,研发仿真模型,24
|
||||||
|
22,航天云网,2.1.1.2,低代码开发工具,24
|
||||||
|
131,九物互联,2.1.1.1,算法建模工具,24
|
||||||
|
153,武汉开目,1.3.1.1,计算机辅助设计CAD,24
|
||||||
|
12,大唐软件,1.2.1,网络互联,24
|
||||||
|
143,沈阳自动化研究所,2.1.1.1,算法建模工具,24
|
||||||
|
3,艾克斯特,1.3.4.1,企业资源计划ERP,24
|
||||||
|
83,Emerson,1.3.3.2,分布式控制系统DCS,24
|
||||||
|
5,安华金和,1.4.5.3,数据审计系统,24
|
||||||
|
37,绿盟,1.4.1.4,入侵检测系统,24
|
||||||
|
140,山石网科,1.4.5.3,数据审计系统,24
|
||||||
|
78,OutSystems,2.1.1.1,算法建模工具,24
|
||||||
|
141,上海新华控制,1.3.3.2,分布式控制系统DCS,24
|
||||||
|
57,亚控科技,1.3.3.3,数据采集与监视控制系统SCADA,23
|
||||||
|
78,OutSystems,2.1.1.2,低代码开发工具,23
|
||||||
|
77,Oracle,1.3.3.6,运维保障系统MRO,23
|
||||||
|
14,东华软件,1.3.3.4,可编程逻揖控制系统PLC,23
|
||||||
|
60,宇动源,2.1.1.3,流程开发工具,23
|
||||||
|
168,中控技术,1.3.3.4,可编程逻揖控制系统PLC,23
|
||||||
|
140,山石网科,1.4.1.5,统一威胁管理系统,23
|
||||||
|
143,沈阳自动化研究所,2.1.1.4,组态建模工具,23
|
||||||
|
95,Schneider,1.2.3,数据互通,23
|
||||||
|
58,用友,1.3.4.1,企业资源计划ERP,23
|
||||||
|
144,树根互联,2.1.2.1,数据算法模型,23
|
||||||
|
66,中国联通,1.2.1,网络互联,23
|
||||||
|
143,沈阳自动化研究所,2.1.1.2,低代码开发工具,23
|
||||||
|
168,中控技术,1.1.2,工业控制器,23
|
||||||
|
18,国能智深,1.3.3.2,分布式控制系统DCS,23
|
||||||
|
53,天融信,1.4.3.3,APT检测,23
|
||||||
|
154,西格数据,2.1.4.2.2,数据安全管理,22
|
||||||
|
131,九物互联,2.1.1.3,流程开发工具,22
|
||||||
|
49,数码大方,2.1.2.3,研发仿真模型,22
|
||||||
|
89,Rockwell,1.3.3.1,制造执行系统MES,22
|
||||||
|
22,航天云网,1.3.3.6,运维保障系统MRO,22
|
||||||
|
129,华中数控,1.1.2,工业控制器,22
|
||||||
|
31,昆仑数据,1.3.3.3,数据采集与监视控制系统SCADA,22
|
||||||
|
60,宇动源,2.1.1.1,算法建模工具,22
|
||||||
|
96,Cisco,1.2.3,数据互通,22
|
||||||
|
45,石化盈科,2.1.4.2.1,数据质量管理,22
|
||||||
|
99,Siemens,1.1.2,工业控制器,22
|
||||||
|
143,沈阳自动化研究所,2.1.1.5,数字孪生建模工具,22
|
||||||
|
129,华中数控,1.2.3,数据互通,21
|
||||||
|
132,科远智慧,1.3.3.2,分布式控制系统DCS,21
|
||||||
|
135,浪潮,1.3.4.1,企业资源计划ERP,21
|
||||||
|
53,天融信,1.4.1.4,入侵检测系统,21
|
||||||
|
111,鼎捷软件,1.3.3.1,制造执行系统MES,21
|
||||||
|
78,OutSystems,2.1.1.4,组态建模工具,21
|
||||||
|
45,石化盈科,1.3.3.1,制造执行系统MES,21
|
||||||
|
38,牛刀,2.1.1.5,数字孪生建模工具,20
|
||||||
|
13,东方国信,2.1.4.2.2,数据安全管理,20
|
||||||
|
117,格创东智,2.1.1.4,组态建模工具,20
|
||||||
|
37,绿盟,1.4.1.2,下一代防火墙,20
|
||||||
|
154,西格数据,2.1.4.2.1,数据质量管理,20
|
||||||
|
38,牛刀,2.1.1.3,流程开发工具,20
|
||||||
|
163,优也科技,2.1.4.1.3,实时数据库,20
|
||||||
|
24,华大电子,1.1.1,工业计算芯片,20
|
||||||
|
47,首自信,2.1.1.2,低代码开发工具,20
|
||||||
|
165,智能云科,2.1.2.1,数据算法模型,20
|
||||||
|
89,Rockwell,1.1.2,工业控制器,19
|
||||||
|
22,航天云网,2.1.1.3,流程开发工具,19
|
||||||
|
137,美林数据,2.1.4.1.4,时序数据库,19
|
||||||
|
163,优也科技,2.1.4.1.2,分布式数据库,19
|
||||||
|
131,九物互联,2.1.1.2,低代码开发工具,19
|
||||||
|
70,ABB,1.3.3.2,分布式控制系统DCS,19
|
||||||
|
131,九物互联,2.1.1.4,组态建模工具,19
|
||||||
|
13,东方国信,2.1.4.2.1,数据质量管理,19
|
||||||
|
150,唯捷创芯,1.1.1,工业计算芯片,19
|
||||||
|
16,东土科技,1.1.3,工业服务器,19
|
||||||
|
45,石化盈科,2.1.4.1.1,关系型数据库,19
|
||||||
|
45,石化盈科,2.1.4.1.3,实时数据库,19
|
||||||
|
103,STMicroelectronics ,1.1.1,工业计算芯片,18
|
||||||
|
40,奇安信,1.4.2.1,工控安全监测与审计,18
|
||||||
|
23,和利时,1.3.3.1,制造执行系统MES,18
|
||||||
|
7,百望,2.2,IaaS,18
|
||||||
|
22,航天云网,2.1.4.2.1,数据质量管理,18
|
||||||
|
69,紫光集团,1.1.1,工业计算芯片,18
|
||||||
|
117,格创东智,2.1.1.1,算法建模工具,18
|
||||||
|
22,航天云网,2.1.1.5,数字孪生建模工具,18
|
||||||
|
117,格创东智,2.1.1.3,流程开发工具,18
|
||||||
|
154,西格数据,2.1.4.1.3,实时数据库,18
|
||||||
|
168,中控技术,1.3.3.1,制造执行系统MES,18
|
||||||
|
60,宇动源,2.1.1.2,低代码开发工具,18
|
||||||
|
28,金山云,2.2,IaaS,18
|
||||||
|
13,东方国信,2.1.4.1.1,关系型数据库,18
|
||||||
|
104,Infineon,1.1.1,工业计算芯片,17
|
||||||
|
36,龙芯中科,1.1.1,工业计算芯片,17
|
||||||
|
96,Cisco,1.2.1,网络互联,17
|
||||||
|
163,优也科技,2.1.4.1.4,时序数据库,17
|
||||||
|
31,昆仑数据,2.1.4.2.1,数据质量管理,17
|
||||||
|
78,OutSystems,2.1.1.5,数字孪生建模工具,17
|
||||||
|
13,东方国信,2.1.4.1.4,时序数据库,17
|
||||||
|
31,昆仑数据,2.1.4.1.1,关系型数据库,17
|
||||||
|
167,中环股份,1.1.1,工业计算芯片,17
|
||||||
|
154,西格数据,2.1.4.1.1,关系型数据库,17
|
||||||
|
23,和利时,1.1.2,工业控制器,17
|
||||||
|
117,格创东智,2.1.4.1.4,时序数据库,17
|
||||||
|
44,圣邦微电子,1.1.1,工业计算芯片,17
|
||||||
|
45,石化盈科,2.1.4.1.2,分布式数据库,17
|
||||||
|
137,美林数据,2.1.4.2.2,数据安全管理,17
|
||||||
|
101,Analog Devices,1.1.1,工业计算芯片,16
|
||||||
|
113,飞腾信息,1.1.1,工业计算芯片,16
|
||||||
|
22,航天云网,2.1.4.1.3,实时数据库,16
|
||||||
|
140,山石网科,1.4.1.1,工业防火墙,16
|
||||||
|
142,深信服,1.4.1.1,工业防火墙,16
|
||||||
|
137,美林数据,2.1.4.1.2,分布式数据库,16
|
||||||
|
137,美林数据,2.1.4.1.1,关系型数据库,16
|
||||||
|
99,Siemens,1.2.1,网络互联,15
|
||||||
|
117,格创东智,2.1.1.5,数字孪生建模工具,15
|
||||||
|
55,威努特,1.4.1.3,防毒墙,15
|
||||||
|
137,美林数据,2.1.4.2.1,数据质量管理,15
|
||||||
|
169,中芯国际,1.1.1,工业计算芯片,15
|
||||||
|
131,九物互联,2.1.1.5,数字孪生建模工具,15
|
||||||
|
63,长扬科技,1.4.2.4,安全隔离与信息交换系统,15
|
||||||
|
89,Rockwell,1.2.1,网络互联,15
|
||||||
|
49,数码大方,1.3.3.1,制造执行系统MES,15
|
||||||
|
31,昆仑数据,2.1.4.1.4,时序数据库,15
|
||||||
|
31,昆仑数据,2.1.4.1.3,实时数据库,15
|
||||||
|
22,航天云网,2.1.4.1.2,分布式数据库,14
|
||||||
|
22,航天云网,2.1.4.1.4,时序数据库,14
|
||||||
|
87,Texas Instruments,1.1.1,工业计算芯片,14
|
||||||
|
133,蓝盾股份,1.4.1.3,防毒墙,14
|
||||||
|
53,天融信,1.4.2.4,安全隔离与信息交换系统,14
|
||||||
|
117,格创东智,2.1.4.1.3,实时数据库,13
|
||||||
|
31,昆仑数据,2.1.4.1.2,分布式数据库,13
|
||||||
|
154,西格数据,2.1.4.1.2,分布式数据库,13
|
||||||
|
31,昆仑数据,2.1.4.2.2,数据安全管理,13
|
||||||
|
154,西格数据,2.1.4.1.4,时序数据库,13
|
||||||
|
117,格创东智,2.1.4.2.2,数据安全管理,13
|
||||||
|
54,网御星云,1.4.1.3,防毒墙,13
|
||||||
|
108,百度,2.2,IaaS,13
|
||||||
|
137,美林数据,2.1.4.1.3,实时数据库,13
|
||||||
|
163,优也科技,2.1.4.1.1,关系型数据库,13
|
||||||
|
54,网御星云,1.4.2.4,安全隔离与信息交换系统,12
|
||||||
|
127,华为海思,1.1.1,工业计算芯片,12
|
||||||
|
163,优也科技,2.1.4.2.2,数据安全管理,12
|
||||||
|
168,中控技术,1.3.3.2,分布式控制系统DCS,12
|
||||||
|
22,航天云网,2.1.4.1.1,关系型数据库,12
|
||||||
|
117,格创东智,2.1.4.1.2,分布式数据库,12
|
||||||
|
45,石化盈科,2.1.4.2.2,数据安全管理,12
|
||||||
|
13,东方国信,2.1.4.1.3,实时数据库,12
|
||||||
|
45,石化盈科,2.1.4.1.4,时序数据库,12
|
||||||
|
74,HoneyWell,1.3.3.2,分布式控制系统DCS,11
|
||||||
|
23,和利时,1.3.3.2,分布式控制系统DCS,11
|
||||||
|
22,航天云网,2.1.4.2.2,数据安全管理,11
|
||||||
|
55,威努特,1.4.1.1,工业防火墙,11
|
||||||
|
55,威努特,1.4.2.1,工控安全监测与审计,11
|
||||||
|
56,芯愿景,1.1.1,工业计算芯片,11
|
||||||
|
13,东方国信,2.1.4.1.2,分布式数据库,10
|
||||||
|
163,优也科技,2.1.4.2.1,数据质量管理,10
|
||||||
|
60,宇动源,2.1.1.5,数字孪生建模工具,10
|
||||||
|
63,长扬科技,1.4.1.1,工业防火墙,10
|
||||||
|
53,天融信,1.4.1.3,防毒墙,10
|
||||||
|
117,格创东智,2.1.4.2.1,数据质量管理,10
|
||||||
|
148,腾讯,2.2,IaaS,9
|
||||||
|
124,海尔,1.2.1,网络互联,8
|
||||||
|
117,格创东智,2.1.4.1.1,关系型数据库,8
|
||||||
|
22,航天云网,1.2.1,网络互联,7
|
||||||
|
106,阿里巴巴,2.2,IaaS,6
|
||||||
|
126,华为,2.2,IaaS,6
|
||||||
|
135,浪潮,2.2,IaaS,5
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
id_product,Name,count
|
||||||
|
2.1.3,工业物联网,2874
|
||||||
|
1.3.1,设计研发,2267
|
||||||
|
1,供给,1611
|
||||||
|
2.1.2,工业模型库,1324
|
||||||
|
1.3.3,生产制造,1249
|
||||||
|
2.1.1,开发工具,1216
|
||||||
|
2.3,边缘层,1146
|
||||||
|
1.4,工业互联网安全,1021
|
||||||
|
1.3,工业软件,950
|
||||||
|
1.1,工业自动化,879
|
||||||
|
1.2,工业互联网网络,741
|
||||||
|
1.4.4,平台安全,709
|
||||||
|
1.4.5,数据安全,696
|
||||||
|
2.1.4.1,工业大数据存储,626
|
||||||
|
1.3.4,企业运营管理,625
|
||||||
|
1.4.2,控制安全,568
|
||||||
|
1.4.3,网络安全,457
|
||||||
|
1.4.1,设备安全,445
|
||||||
|
2,工业互联网平台,411
|
||||||
|
2.1.4,工业大数据,392
|
||||||
|
2.1.4.2,工业大数据管理,364
|
||||||
|
2.1,PaaS,345
|
||||||
|
2.3.3,协议转换,259
|
||||||
|
2.1.2.4,行业机理模型,254
|
||||||
|
2.1.3.6,微服务,253
|
||||||
|
2.1.2.2,业务流程模型,251
|
||||||
|
2.3.1,工业数据接入,244
|
||||||
|
2.3.2,边缘数据处理,241
|
||||||
|
2.1.2.1,数据算法模型,238
|
||||||
|
2.1.2.3,研发仿真模型,236
|
||||||
|
1.3.1.2,计算机辅助工程CAE,232
|
||||||
|
1.1.1,工业计算芯片,227
|
||||||
|
1.1.2,工业控制器,226
|
||||||
|
1.3.1.1,计算机辅助设计CAD,224
|
||||||
|
2.1.3.7,制造类API,210
|
||||||
|
2.1.3.4,应用管理服务,209
|
||||||
|
2.1.3.1,物联网服务,208
|
||||||
|
2.1.3.2,平台基础服务,205
|
||||||
|
2.1.3.3,工业引擎服务,205
|
||||||
|
2.1.3.5,容器服务,204
|
||||||
|
1.1.3,工业服务器,202
|
||||||
|
1.3.1.6,产品生命周期管理PLM,201
|
||||||
|
1.3.1.4,计算机辅助工艺过程设计CAPP,200
|
||||||
|
1.3.1.7,电子设计自动化EDA,198
|
||||||
|
2.1.1.1,算法建模工具,191
|
||||||
|
2.1.1.4,组态建模工具,191
|
||||||
|
1.2.1,网络互联,186
|
||||||
|
1.2.3,数据互通,183
|
||||||
|
2.1.1.3,流程开发工具,182
|
||||||
|
2.1.1.2,低代码开发工具,179
|
||||||
|
2.1.1.5,数字孪生建模工具,171
|
||||||
|
1.3.2,采购供应,170
|
||||||
|
1.3.1.5,产品数据管理PDM,169
|
||||||
|
1.3.1.3,计算机辅助制造CAM,168
|
||||||
|
1.2.2,标识解析,163
|
||||||
|
1.3.4.1,企业资源计划ERP,147
|
||||||
|
1.3.3.2,分布式控制系统DCS,145
|
||||||
|
1.3.3.1,制造执行系统MES,144
|
||||||
|
1.3.3.6,运维保障系统MRO,138
|
||||||
|
1.3.3.5,企业资产管理系统EAM,134
|
||||||
|
1.3.3.3,数据采集与监视控制系统SCADA,133
|
||||||
|
1.3.3.4,可编程逻揖控制系统PLC,131
|
||||||
|
2.1.4.2.1,数据质量管理,131
|
||||||
|
1.3.5,仓储物流,127
|
||||||
|
2.1.4.1.3,实时数据库,126
|
||||||
|
2.1.4.1.4,时序数据库,124
|
||||||
|
2.1.4.1.1,关系型数据库,120
|
||||||
|
2.1.4.2.2,数据安全管理,120
|
||||||
|
1.3.4.3,人力资源管理HRM,119
|
||||||
|
1.3.4.2,客户关系管理CRM,118
|
||||||
|
1.4.4.1,身份鉴别与访问控制,116
|
||||||
|
2.1.4.1.2,分布式数据库,114
|
||||||
|
1.3.3.7,故障预测与健康管理PHM,112
|
||||||
|
1.4.2.4,安全隔离与信息交换系统,103
|
||||||
|
1.4.2.1,工控安全监测与审计,93
|
||||||
|
1.4.4.4,工业应用行为监控,88
|
||||||
|
1.4.4.3,接入认证,88
|
||||||
|
1.4.4.2,密钥管理,88
|
||||||
|
1.4.1.3,防毒墙,87
|
||||||
|
1.4.1.1,工业防火墙,86
|
||||||
|
1.4.3.3,APT检测,85
|
||||||
|
1.4.5.3,数据审计系统,78
|
||||||
|
1.4.5.9,数据防火墙,78
|
||||||
|
1.4.5.7,数据恢复,78
|
||||||
|
1.4.5.6,数据容灾备份,78
|
||||||
|
1.4.5.5,敏感数据发现与监控,78
|
||||||
|
1.4.5.4,数据脱敏,78
|
||||||
|
1.4.5.2,数据防泄漏系统,78
|
||||||
|
1.3.5.1,仓储物流管理WMS,77
|
||||||
|
2.2,IaaS,75
|
||||||
|
1.4.2.6,隐私计算,74
|
||||||
|
1.4.1.2,下一代防火墙,74
|
||||||
|
1.4.1.4,入侵检测系统,74
|
||||||
|
1.4.1.5,统一威胁管理系统,74
|
||||||
|
1.4.2.2,工控主机卫士,74
|
||||||
|
1.4.2.5,安全日志与审计,74
|
||||||
|
1.4.3.1,网络漏洞扫描和补丁管理,74
|
||||||
|
1.4.3.5,负载均衡,74
|
||||||
|
1.4.3.4,攻击溯源,74
|
||||||
|
1.4.2.7,工控原生安全,50
|
||||||
|
1.4.2.3,工控漏洞扫描,50
|
||||||
|
1.4.5.8,数据加密,50
|
||||||
|
1.4.3.2,流量检测,50
|
||||||
|
1.4.3.6,沙箱类设备,50
|
||||||
|
1.4.4.5,安全态势感知,50
|
||||||
|
1.3.2.1,供应链管理SCM,50
|
||||||
|
1.4.5.1,恶意代码检测系统,50
|
|
Binary file not shown.
After ![]() (image error) Size: 1.1 MiB |
Binary file not shown.
After ![]() (image error) Size: 1.0 MiB |
Binary file not shown.
After ![]() (image error) Size: 2.5 MiB |
|
@ -0,0 +1,25 @@
|
||||||
|
import agentpy as ap
|
||||||
|
|
||||||
|
|
||||||
|
class ProductAgent(ap.Agent):
|
||||||
|
def setup(self, code, name):
|
||||||
|
self.product_network = self.model.product_network
|
||||||
|
|
||||||
|
self.code = code
|
||||||
|
self.name = name
|
||||||
|
|
||||||
|
def a_successors(self):
|
||||||
|
# find successors of a product, return in AgentList (ProductAgent)
|
||||||
|
nodes = self.product_network.graph.successors(
|
||||||
|
self.product_network.positions[self])
|
||||||
|
return ap.AgentList(
|
||||||
|
self.model,
|
||||||
|
[ap.AgentIter(self.model, node).to_list()[0] for node in nodes])
|
||||||
|
|
||||||
|
def a_predecessors(self):
|
||||||
|
# find predecessors of a product, return in AgentList (ProductAgent)
|
||||||
|
nodes = self.product_network.graph.predecessors(
|
||||||
|
self.product_network.positions[self])
|
||||||
|
return ap.AgentList(
|
||||||
|
self.model,
|
||||||
|
[ap.AgentIter(self.model, node).to_list()[0] for node in nodes])
|
|
@ -0,0 +1,54 @@
|
||||||
|
agentpy==0.1.5
|
||||||
|
alabaster==0.7.13
|
||||||
|
Babel==2.12.1
|
||||||
|
certifi @ file:///C:/b/abs_85o_6fm0se/croot/certifi_1671487778835/work/certifi
|
||||||
|
charset-normalizer==3.0.1
|
||||||
|
colorama==0.4.6
|
||||||
|
cycler==0.11.0
|
||||||
|
decorator==5.1.1
|
||||||
|
dill==0.3.6
|
||||||
|
docutils==0.19
|
||||||
|
greenlet==2.0.2
|
||||||
|
idna==3.4
|
||||||
|
imagesize==1.4.1
|
||||||
|
importlib-metadata==6.0.0
|
||||||
|
Jinja2==3.1.2
|
||||||
|
joblib==1.2.0
|
||||||
|
kiwisolver==1.4.4
|
||||||
|
MarkupSafe==2.1.2
|
||||||
|
matplotlib==3.3.4
|
||||||
|
matplotlib-inline==0.1.6
|
||||||
|
multiprocess==0.70.14
|
||||||
|
mysqlclient==2.1.1
|
||||||
|
networkx==2.5
|
||||||
|
numpy==1.20.3
|
||||||
|
numpydoc==1.1.0
|
||||||
|
packaging==23.0
|
||||||
|
pandas==1.4.1
|
||||||
|
pandas-stubs==1.2.0.39
|
||||||
|
Pillow==9.4.0
|
||||||
|
Pygments==2.14.0
|
||||||
|
pygraphviz @ file:///C:/Users/ASUS/Downloads/pygraphviz-1.9-cp38-cp38-win_amd64.whl
|
||||||
|
pyparsing==3.0.9
|
||||||
|
python-dateutil==2.8.2
|
||||||
|
pytz==2022.7.1
|
||||||
|
PyYAML==6.0
|
||||||
|
requests==2.28.2
|
||||||
|
SALib==1.4.7
|
||||||
|
scipy==1.10.1
|
||||||
|
six==1.16.0
|
||||||
|
snowballstemmer==2.2.0
|
||||||
|
Sphinx==6.1.3
|
||||||
|
sphinxcontrib-applehelp==1.0.4
|
||||||
|
sphinxcontrib-devhelp==1.0.2
|
||||||
|
sphinxcontrib-htmlhelp==2.0.1
|
||||||
|
sphinxcontrib-jsmath==1.0.1
|
||||||
|
sphinxcontrib-qthelp==1.0.3
|
||||||
|
sphinxcontrib-serializinghtml==1.1.5
|
||||||
|
SQLAlchemy==2.0.5.post1
|
||||||
|
traitlets==5.9.0
|
||||||
|
typing_extensions==4.5.0
|
||||||
|
urllib3==1.26.14
|
||||||
|
wincertstore==0.2
|
||||||
|
yapf @ file:///tmp/build/80754af9/yapf_1615749224965/work
|
||||||
|
zipp==3.15.0
|
|
@ -0,0 +1,9 @@
|
||||||
|
agentpy==0.1.5
|
||||||
|
matplotlib==3.3.4
|
||||||
|
matplotlib-inline==0.1.6
|
||||||
|
networkx==2.5
|
||||||
|
numpy==1.20.3
|
||||||
|
numpydoc==1.1.0
|
||||||
|
pandas==1.4.1
|
||||||
|
pandas-stubs==1.2.0.39
|
||||||
|
pygraphviz==1.9
|
|
@ -0,0 +1,8 @@
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
count = pd.read_csv("output_result\\risk\\count.csv",
|
||||||
|
dtype={'s_id': str, 'id_firm': str})
|
||||||
|
print(count)
|
||||||
|
print(len(count['s_id'].unique()))
|
||||||
|
count_max_ts = count.groupby('s_id')['ts'].max()
|
||||||
|
print(count_max_ts.value_counts())
|
|
@ -0,0 +1,102 @@
|
||||||
|
import pandas as pd
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import networkx as nx
|
||||||
|
|
||||||
|
plt.rcParams['font.sans-serif'] = 'SimHei'
|
||||||
|
|
||||||
|
# count firm category
|
||||||
|
count_firm = pd.read_csv("output_result\\risk\\count_firm.csv")
|
||||||
|
print(count_firm.describe())
|
||||||
|
|
||||||
|
count_dcp = pd.read_csv("output_result\\risk\\count_dcp.csv",
|
||||||
|
dtype={
|
||||||
|
'up_id_firm': str,
|
||||||
|
'down_id_firm': str
|
||||||
|
})
|
||||||
|
# print(count_dcp)
|
||||||
|
count_dcp = count_dcp[count_dcp['count'] > 35]
|
||||||
|
|
||||||
|
list_firm = count_dcp['up_id_firm'].tolist(
|
||||||
|
) + count_dcp['down_id_firm'].tolist()
|
||||||
|
list_firm = list(set(list_firm))
|
||||||
|
|
||||||
|
# init graph firm
|
||||||
|
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", "Name", "Type_Region", "Revenue_Log"]]
|
||||||
|
firm_product = []
|
||||||
|
for _, row in Firm.loc[:, '1':].iterrows():
|
||||||
|
firm_product.append(row[row == 1].index.to_list())
|
||||||
|
Firm_attr.loc[:, 'Product_Code'] = firm_product
|
||||||
|
Firm_attr.set_index('Code', inplace=True)
|
||||||
|
|
||||||
|
G_firm = nx.MultiDiGraph()
|
||||||
|
G_firm.add_nodes_from(list_firm)
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
count_max = count_dcp['count'].max()
|
||||||
|
count_min = count_dcp['count'].min()
|
||||||
|
k = 5 / (count_max - count_min)
|
||||||
|
for _, row in count_dcp.iterrows():
|
||||||
|
# print(row)
|
||||||
|
lst_add_edge = [(
|
||||||
|
row['up_id_firm'],
|
||||||
|
row['down_id_firm'],
|
||||||
|
{
|
||||||
|
'up_id_product': row['up_id_product'],
|
||||||
|
'up_name_product': row['up_name_product'],
|
||||||
|
'down_id_product': row['down_id_product'],
|
||||||
|
'down_name_product': row['down_name_product'],
|
||||||
|
'edge_label': f"{row['up_id_product']} - {row['down_id_product']}",
|
||||||
|
'edge_width': k * (row['count'] - count_min),
|
||||||
|
'count': row['count']
|
||||||
|
})]
|
||||||
|
G_firm.add_edges_from(lst_add_edge)
|
||||||
|
|
||||||
|
# dcp_networkx
|
||||||
|
pos = nx.nx_agraph.graphviz_layout(G_firm, prog="dot", args="")
|
||||||
|
node_label = nx.get_node_attributes(G_firm, 'Name')
|
||||||
|
# node_degree = dict(G_firm.out_degree())
|
||||||
|
# desensitize
|
||||||
|
node_label = {
|
||||||
|
# key: f"{node_label[key]} {node_degree[key]}"
|
||||||
|
# key: f"{node_label[key]}"
|
||||||
|
key: key
|
||||||
|
for key in node_label.keys()
|
||||||
|
}
|
||||||
|
node_size = list(nx.get_node_attributes(G_firm, 'Revenue_Log').values())
|
||||||
|
node_size = list(map(lambda x: x**2, node_size))
|
||||||
|
edge_label = nx.get_edge_attributes(G_firm, "edge_label")
|
||||||
|
edge_label = {(n1, n2): label for (n1, n2, _), label in edge_label.items()}
|
||||||
|
edge_width = nx.get_edge_attributes(G_firm, "edge_width")
|
||||||
|
edge_width = [w for (n1, n2, _), w in edge_width.items()]
|
||||||
|
colors = nx.get_edge_attributes(G_firm, "count")
|
||||||
|
colors = [w for (n1, n2, _), w in colors.items()]
|
||||||
|
vmin = min(colors)
|
||||||
|
vmax = max(colors)
|
||||||
|
cmap = plt.cm.Blues
|
||||||
|
fig = plt.figure(figsize=(10, 8), dpi=300)
|
||||||
|
nx.draw(G_firm,
|
||||||
|
pos,
|
||||||
|
node_size=node_size,
|
||||||
|
labels=node_label,
|
||||||
|
font_size=8,
|
||||||
|
width=3,
|
||||||
|
edge_color=colors,
|
||||||
|
edge_cmap=cmap,
|
||||||
|
edge_vmin=vmin,
|
||||||
|
edge_vmax=vmax)
|
||||||
|
nx.draw_networkx_edge_labels(G_firm, pos, edge_label, font_size=6)
|
||||||
|
sm = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(vmin=vmin, vmax=vmax))
|
||||||
|
sm._A = []
|
||||||
|
position = fig.add_axes([0.95, 0.05, 0.01, 0.3])
|
||||||
|
cb = plt.colorbar(sm, fraction=0.01, cax=position)
|
||||||
|
cb.ax.tick_params(labelsize=10)
|
||||||
|
cb.outline.set_visible(False)
|
||||||
|
plt.savefig("output_result\\risk\\count_dcp_network")
|
||||||
|
plt.close()
|
|
@ -0,0 +1,157 @@
|
||||||
|
import pandas as pd
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import networkx as nx
|
||||||
|
|
||||||
|
plt.rcParams['font.sans-serif'] = 'SimHei'
|
||||||
|
|
||||||
|
count_prod = pd.read_csv("output_result\\risk\\count_prod.csv")
|
||||||
|
print(count_prod)
|
||||||
|
|
||||||
|
# category
|
||||||
|
print(count_prod.describe())
|
||||||
|
|
||||||
|
# prod_networkx
|
||||||
|
BomNodes = pd.read_csv('input_data\\BomNodes.csv', index_col=0)
|
||||||
|
BomNodes.set_index('Code', inplace=True)
|
||||||
|
BomCateNet = pd.read_csv('input_data\\BomCateNet.csv', index_col=0)
|
||||||
|
BomCateNet.fillna(0, inplace=True)
|
||||||
|
|
||||||
|
G = nx.from_pandas_adjacency(BomCateNet.T, create_using=nx.MultiDiGraph())
|
||||||
|
|
||||||
|
labels_dict = {}
|
||||||
|
for code in G.nodes:
|
||||||
|
node_attr = BomNodes.loc[code].to_dict()
|
||||||
|
index_list = count_prod[count_prod['id_product'] == code].index.tolist()
|
||||||
|
index = index_list[0] if len(index_list) == 1 else -1
|
||||||
|
node_attr['count'] = count_prod['count'].get(index, 0)
|
||||||
|
node_attr['node_size'] = count_prod['count'].get(index, 0)
|
||||||
|
node_attr['node_color'] = count_prod['count'].get(index, 0)
|
||||||
|
labels_dict[code] = node_attr
|
||||||
|
nx.set_node_attributes(G, labels_dict)
|
||||||
|
# print(labels_dict)
|
||||||
|
|
||||||
|
pos = nx.nx_agraph.graphviz_layout(G, prog="twopi", args="")
|
||||||
|
dict_node_name = nx.get_node_attributes(G, 'Name')
|
||||||
|
node_labels = {}
|
||||||
|
for node in nx.nodes(G):
|
||||||
|
node_labels[node] = f"{node} {str(dict_node_name[node])}"
|
||||||
|
# node_labels[node] = f"{str(dict_node_name[node])}"
|
||||||
|
colors = list(nx.get_node_attributes(G, 'node_color').values())
|
||||||
|
vmin = min(colors)
|
||||||
|
vmax = max(colors)
|
||||||
|
cmap = plt.cm.Blues
|
||||||
|
fig = plt.figure(figsize=(10, 10), dpi=300)
|
||||||
|
nx.draw(G,
|
||||||
|
pos,
|
||||||
|
node_size=list(nx.get_node_attributes(G, 'node_size').values()),
|
||||||
|
labels=node_labels,
|
||||||
|
font_size=6,
|
||||||
|
node_color=colors,
|
||||||
|
cmap=cmap,
|
||||||
|
vmin=vmin,
|
||||||
|
vmax=vmax,
|
||||||
|
edge_color='grey')
|
||||||
|
sm = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(vmin=vmin, vmax=vmax))
|
||||||
|
sm._A = []
|
||||||
|
position = fig.add_axes([0.01, 0.05, 0.01, 0.3])
|
||||||
|
cb = plt.colorbar(sm, fraction=0.01, cax=position)
|
||||||
|
cb.ax.tick_params(labelsize=8)
|
||||||
|
cb.outline.set_visible(False)
|
||||||
|
plt.savefig("output_result\\risk\\count_prod_network")
|
||||||
|
plt.close()
|
||||||
|
|
||||||
|
# dcp_prod
|
||||||
|
count_dcp = pd.read_csv("output_result\\risk\\count_dcp.csv",
|
||||||
|
dtype={
|
||||||
|
'up_id_firm': str,
|
||||||
|
'down_id_firm': str
|
||||||
|
})
|
||||||
|
count_dcp_prod = count_dcp.groupby(
|
||||||
|
['up_id_product',
|
||||||
|
'up_name_product',
|
||||||
|
'down_id_product',
|
||||||
|
'down_name_product'])['count'].sum()
|
||||||
|
count_dcp_prod = count_dcp_prod.reset_index()
|
||||||
|
count_dcp_prod.sort_values('count', inplace=True, ascending=False)
|
||||||
|
count_dcp_prod.to_csv('output_result\\risk\\count_dcp_prod.csv',
|
||||||
|
index=False,
|
||||||
|
encoding='utf-8-sig')
|
||||||
|
count_dcp_prod = count_dcp_prod[count_dcp_prod['count'] > 50]
|
||||||
|
# print(count_dcp_prod)
|
||||||
|
|
||||||
|
list_prod = count_dcp_prod['up_id_product'].tolist(
|
||||||
|
) + count_dcp['down_id_product'].tolist()
|
||||||
|
list_prod = list(set(list_prod))
|
||||||
|
|
||||||
|
# init graph bom
|
||||||
|
|
||||||
|
BomNodes = pd.read_csv('input_data\\BomNodes.csv', index_col=0)
|
||||||
|
BomNodes.set_index('Code', inplace=True)
|
||||||
|
|
||||||
|
g_bom = nx.MultiDiGraph()
|
||||||
|
g_bom.add_nodes_from(list_prod)
|
||||||
|
|
||||||
|
bom_labels_dict = {}
|
||||||
|
for code in list_prod:
|
||||||
|
dct_attr = BomNodes.loc[code].to_dict()
|
||||||
|
bom_labels_dict[code] = dct_attr
|
||||||
|
nx.set_node_attributes(g_bom, bom_labels_dict)
|
||||||
|
|
||||||
|
|
||||||
|
count_max = count_dcp_prod['count'].max()
|
||||||
|
count_min = count_dcp_prod['count'].min()
|
||||||
|
k = 5 / (count_max - count_min)
|
||||||
|
for _, row in count_dcp_prod.iterrows():
|
||||||
|
# print(row)
|
||||||
|
lst_add_edge = [(
|
||||||
|
row['up_id_product'],
|
||||||
|
row['down_id_product'],
|
||||||
|
{
|
||||||
|
'count': row['count']
|
||||||
|
})]
|
||||||
|
g_bom.add_edges_from(lst_add_edge)
|
||||||
|
|
||||||
|
# dcp_networkx
|
||||||
|
pos = nx.nx_agraph.graphviz_layout(g_bom, prog="dot", args="")
|
||||||
|
node_labels = nx.get_node_attributes(g_bom, 'Name')
|
||||||
|
# rename node 1
|
||||||
|
node_labels['1'] = '解决方案'
|
||||||
|
temp = {}
|
||||||
|
for key, value in node_labels.items():
|
||||||
|
temp[key] = key + " " + value
|
||||||
|
node_labels = temp
|
||||||
|
colors = nx.get_edge_attributes(g_bom, "count")
|
||||||
|
colors = [w for (n1, n2, _), w in colors.items()]
|
||||||
|
vmin = min(colors)
|
||||||
|
vmax = max(colors)
|
||||||
|
cmap = plt.cm.Blues
|
||||||
|
|
||||||
|
pos_new = {}
|
||||||
|
for node, p in pos.items():
|
||||||
|
pos_new[node] = (p[1], p[0])
|
||||||
|
|
||||||
|
fig = plt.figure(figsize=(6, 10), dpi=300)
|
||||||
|
# plt.subplots_adjust(right=0.7)
|
||||||
|
nx.draw(g_bom,
|
||||||
|
pos_new,
|
||||||
|
node_size=50,
|
||||||
|
labels=node_labels,
|
||||||
|
font_size=5,
|
||||||
|
width=1.5,
|
||||||
|
edge_color=colors,
|
||||||
|
edge_cmap=cmap,
|
||||||
|
edge_vmin=vmin,
|
||||||
|
edge_vmax=vmax)
|
||||||
|
plt.axis('off')
|
||||||
|
axis = plt.gca()
|
||||||
|
axis.set_xlim([1.2*x for x in axis.get_xlim()])
|
||||||
|
axis.set_ylim([1.2*y for y in axis.get_ylim()])
|
||||||
|
|
||||||
|
sm = plt.cm.ScalarMappable(cmap=cmap, norm=plt.Normalize(vmin=vmin, vmax=vmax))
|
||||||
|
sm._A = []
|
||||||
|
position = fig.add_axes([0.75, 0.1, 0.01, 0.2])
|
||||||
|
cb = plt.colorbar(sm, fraction=0.01, cax=position)
|
||||||
|
cb.ax.tick_params(labelsize=8)
|
||||||
|
cb.outline.set_visible(False)
|
||||||
|
plt.savefig("output_result\\risk\\count_dcp_prod_network")
|
||||||
|
plt.close()
|
|
@ -0,0 +1,188 @@
|
||||||
|
from orm import engine
|
||||||
|
import pandas as pd
|
||||||
|
import networkx as nx
|
||||||
|
import json
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
# prep data
|
||||||
|
Firm = pd.read_csv("input_data\\Firm_amended.csv")
|
||||||
|
Firm['Code'] = Firm['Code'].astype('string')
|
||||||
|
Firm.fillna(0, inplace=True)
|
||||||
|
BomNodes = pd.read_csv('input_data\\BomNodes.csv', index_col=0)
|
||||||
|
|
||||||
|
with open('SQL_analysis_risk.sql', 'r') as f:
|
||||||
|
str_sql = f.read()
|
||||||
|
result = pd.read_sql(sql=str_sql,
|
||||||
|
con=engine)
|
||||||
|
result.to_csv('output_result\\risk\\count.csv',
|
||||||
|
index=False,
|
||||||
|
encoding='utf-8-sig')
|
||||||
|
print(result)
|
||||||
|
|
||||||
|
# G bom
|
||||||
|
plt.rcParams['font.sans-serif'] = 'SimHei'
|
||||||
|
|
||||||
|
exp_id = 1
|
||||||
|
G_bom_str = pd.read_sql(
|
||||||
|
sql=f'select g_bom from iiabmdb.without_exp_experiment '
|
||||||
|
f'where id = {exp_id};',
|
||||||
|
con=engine)['g_bom'].tolist()[0]
|
||||||
|
G_bom = nx.adjacency_graph(json.loads(G_bom_str))
|
||||||
|
pos = nx.nx_agraph.graphviz_layout(G_bom, prog="twopi", args="")
|
||||||
|
node_labels = nx.get_node_attributes(G_bom, 'Name')
|
||||||
|
# rename node 1
|
||||||
|
node_labels['1'] = '解决方案'
|
||||||
|
plt.figure(figsize=(12, 12), dpi=300)
|
||||||
|
nx.draw_networkx_nodes(G_bom, pos)
|
||||||
|
nx.draw_networkx_edges(G_bom, pos)
|
||||||
|
nx.draw_networkx_labels(G_bom, pos, labels=node_labels, font_size=6)
|
||||||
|
# plt.show()
|
||||||
|
plt.savefig(f"output_result\\risk\\g_bom_exp_id_{exp_id}.png")
|
||||||
|
plt.close()
|
||||||
|
|
||||||
|
# G firm
|
||||||
|
plt.rcParams['font.sans-serif'] = 'SimHei'
|
||||||
|
|
||||||
|
sample_id = 1
|
||||||
|
G_firm_str = pd.read_sql(
|
||||||
|
sql=f'select g_firm from iiabmdb.without_exp_sample where id = {exp_id};',
|
||||||
|
con=engine)['g_firm'].tolist()[0]
|
||||||
|
G_firm = nx.adjacency_graph(json.loads(G_firm_str))
|
||||||
|
pos = nx.nx_agraph.graphviz_layout(G_firm, prog="twopi", args="")
|
||||||
|
node_label = nx.get_node_attributes(G_firm, 'Name')
|
||||||
|
# desensitize
|
||||||
|
node_label = {
|
||||||
|
key: key
|
||||||
|
for key in node_label.keys()
|
||||||
|
}
|
||||||
|
node_size = list(nx.get_node_attributes(G_firm, 'Revenue_Log').values())
|
||||||
|
node_size = list(map(lambda x: x**2, node_size))
|
||||||
|
edge_label = nx.get_edge_attributes(G_firm, "Product")
|
||||||
|
edge_label = {(n1, n2): label for (n1, n2, _), label in edge_label.items()}
|
||||||
|
plt.figure(figsize=(12, 12), dpi=300)
|
||||||
|
nx.draw(G_firm, pos, node_size=node_size, labels=node_label, font_size=6)
|
||||||
|
nx.draw_networkx_edge_labels(G_firm, pos, edge_label, font_size=4)
|
||||||
|
# plt.show()
|
||||||
|
plt.savefig(f"output_result\\risk\\g_firm_sample_id_{exp_id}_de.png")
|
||||||
|
plt.close()
|
||||||
|
|
||||||
|
# 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_firm_prod = pd.merge(count_firm_prod,
|
||||||
|
Firm[['Code', 'Name']],
|
||||||
|
how='left',
|
||||||
|
left_on='id_firm',
|
||||||
|
right_on='Code')
|
||||||
|
count_firm_prod.drop('Code', axis=1, inplace=True)
|
||||||
|
count_firm_prod.rename(columns={'Name': 'name_firm'}, inplace=True)
|
||||||
|
count_firm_prod = pd.merge(count_firm_prod,
|
||||||
|
BomNodes[['Code', 'Name']],
|
||||||
|
how='left',
|
||||||
|
left_on='id_product',
|
||||||
|
right_on='Code')
|
||||||
|
count_firm_prod.drop('Code', axis=1, inplace=True)
|
||||||
|
count_firm_prod.rename(columns={'Name': 'name_product'}, inplace=True)
|
||||||
|
count_firm_prod = count_firm_prod[[
|
||||||
|
'id_firm', 'name_firm', 'id_product', 'name_product', 'count'
|
||||||
|
]]
|
||||||
|
count_firm_prod.to_csv('output_result\\risk\\count_firm_prod.csv',
|
||||||
|
index=False,
|
||||||
|
encoding='utf-8-sig')
|
||||||
|
print(count_firm_prod)
|
||||||
|
|
||||||
|
# count firm
|
||||||
|
count_firm = count_firm_prod.groupby('id_firm')['count'].sum()
|
||||||
|
count_firm = count_firm.to_frame().reset_index()
|
||||||
|
count_firm = pd.merge(count_firm,
|
||||||
|
Firm[['Code', 'Name']],
|
||||||
|
how='left',
|
||||||
|
left_on='id_firm',
|
||||||
|
right_on='Code')
|
||||||
|
count_firm.drop('Code', axis=1, inplace=True)
|
||||||
|
count_firm.sort_values('count', inplace=True, ascending=False)
|
||||||
|
count_firm = count_firm[['id_firm', 'Name', 'count']]
|
||||||
|
count_firm.to_csv('output_result\\risk\\count_firm.csv',
|
||||||
|
index=False,
|
||||||
|
encoding='utf-8-sig')
|
||||||
|
print(count_firm)
|
||||||
|
|
||||||
|
# count product
|
||||||
|
count_prod = count_firm_prod.groupby('id_product')['count'].sum()
|
||||||
|
count_prod = count_prod.to_frame().reset_index()
|
||||||
|
count_prod = pd.merge(count_prod,
|
||||||
|
BomNodes[['Code', 'Name']],
|
||||||
|
how='left',
|
||||||
|
left_on='id_product',
|
||||||
|
right_on='Code')
|
||||||
|
count_prod.drop('Code', axis=1, inplace=True)
|
||||||
|
count_prod.sort_values('count', inplace=True, ascending=False)
|
||||||
|
count_prod = count_prod[['id_product', 'Name', 'count']]
|
||||||
|
count_prod.to_csv('output_result\\risk\\count_prod.csv',
|
||||||
|
index=False,
|
||||||
|
encoding='utf-8-sig')
|
||||||
|
print(count_prod)
|
||||||
|
|
||||||
|
# DCP disruption causing probability
|
||||||
|
result_disrupt_ts_above_0 = result[result['ts'] > 0]
|
||||||
|
print(result_disrupt_ts_above_0)
|
||||||
|
result_dcp = pd.DataFrame(columns=[
|
||||||
|
's_id', 'up_id_firm', 'up_id_product', 'down_id_firm', 'down_id_product'
|
||||||
|
])
|
||||||
|
for sid, group in result.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():
|
||||||
|
row = [sid]
|
||||||
|
row += up_row.tolist()
|
||||||
|
row += down_row.tolist()
|
||||||
|
result_dcp.loc[len(result_dcp.index)] = row
|
||||||
|
ts_end -= 1
|
||||||
|
ts_start -= 1
|
||||||
|
count_dcp = result_dcp.value_counts(
|
||||||
|
subset=['up_id_firm', 'up_id_product', 'down_id_firm', 'down_id_product'])
|
||||||
|
count_dcp.name = 'count'
|
||||||
|
count_dcp = count_dcp.to_frame().reset_index()
|
||||||
|
count_dcp = pd.merge(count_dcp,
|
||||||
|
Firm[['Code', 'Name']],
|
||||||
|
how='left',
|
||||||
|
left_on='up_id_firm',
|
||||||
|
right_on='Code')
|
||||||
|
count_dcp.drop('Code', axis=1, inplace=True)
|
||||||
|
count_dcp.rename(columns={'Name': 'up_name_firm'}, inplace=True)
|
||||||
|
count_dcp = pd.merge(count_dcp,
|
||||||
|
BomNodes[['Code', 'Name']],
|
||||||
|
how='left',
|
||||||
|
left_on='up_id_product',
|
||||||
|
right_on='Code')
|
||||||
|
count_dcp.drop('Code', axis=1, inplace=True)
|
||||||
|
count_dcp.rename(columns={'Name': 'up_name_product'}, inplace=True)
|
||||||
|
count_dcp = pd.merge(count_dcp,
|
||||||
|
Firm[['Code', 'Name']],
|
||||||
|
how='left',
|
||||||
|
left_on='down_id_firm',
|
||||||
|
right_on='Code')
|
||||||
|
count_dcp.drop('Code', axis=1, inplace=True)
|
||||||
|
count_dcp.rename(columns={'Name': 'down_name_firm'}, inplace=True)
|
||||||
|
count_dcp = pd.merge(count_dcp,
|
||||||
|
BomNodes[['Code', 'Name']],
|
||||||
|
how='left',
|
||||||
|
left_on='down_id_product',
|
||||||
|
right_on='Code')
|
||||||
|
count_dcp.drop('Code', axis=1, inplace=True)
|
||||||
|
count_dcp.rename(columns={'Name': 'down_name_product'}, inplace=True)
|
||||||
|
count_dcp = count_dcp[[
|
||||||
|
'up_id_firm', 'up_name_firm', 'up_id_product', 'up_name_product',
|
||||||
|
'down_id_firm', 'down_name_firm', 'down_id_product', 'down_name_product',
|
||||||
|
'count'
|
||||||
|
]]
|
||||||
|
count_dcp.to_csv('output_result\\risk\\count_dcp.csv',
|
||||||
|
index=False, encoding='utf-8-sig')
|
||||||
|
print(count_dcp)
|
Loading…
Reference in New Issue