new repo
|
@ -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;
|
|
@ -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
|
|
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 184 KiB |
After Width: | Height: | Size: 188 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 162 KiB |
After Width: | Height: | 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
|
|
After Width: | Height: | 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
|
|
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | 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)
|