diff --git a/.idea/csv-editor.xml b/.idea/csv-editor.xml
index f5b85e2..29b9e5e 100644
--- a/.idea/csv-editor.xml
+++ b/.idea/csv-editor.xml
@@ -66,6 +66,13 @@
+
+
+
+
+
+
+
@@ -73,6 +80,13 @@
+
+
+
+
+
+
+
@@ -101,7 +115,14 @@
-
+
+
+
+
+
+
+
+
diff --git a/__pycache__/firm.cpython-38.pyc b/__pycache__/firm.cpython-38.pyc
index aac9f35..662cb56 100644
Binary files a/__pycache__/firm.cpython-38.pyc and b/__pycache__/firm.cpython-38.pyc differ
diff --git a/__pycache__/my_model.cpython-38.pyc b/__pycache__/my_model.cpython-38.pyc
index 2a5336d..c0d5712 100644
Binary files a/__pycache__/my_model.cpython-38.pyc and b/__pycache__/my_model.cpython-38.pyc differ
diff --git a/__pycache__/product.cpython-38.pyc b/__pycache__/product.cpython-38.pyc
index 6bd52dd..b0e95d7 100644
Binary files a/__pycache__/product.cpython-38.pyc and b/__pycache__/product.cpython-38.pyc differ
diff --git a/firm.py b/firm.py
index 567e7ec..c8425e7 100644
--- a/firm.py
+++ b/firm.py
@@ -3,7 +3,7 @@ from mesa import Agent
class FirmAgent(Agent):
def __init__(self, unique_id, model, type_region, revenue_log, n_equip_c, a_lst_product,
- production_output, demand_quantity, c_price, R, P, C):
+ production_output, demand_quantity, R, P, C):
# 调用超类的 __init__ 方法
super().__init__(unique_id, model)
@@ -30,11 +30,13 @@ class FirmAgent(Agent):
# 产品库存信息 库存产品,库存量 ID 数量
self.P = P
# 包括 产品时间
- self.P1={0:P}
+ self.P1 = {0: P}
# 企业i的供应商
- self.upper_i = [u for u, v in self.firm_network.in_edges(self.unique_id)]
+ self.upper_i = [agent for u, v in self.firm_network.in_edges(self.unique_id)
+ for agent in self.model.company_agents if agent.unique_id == u]
# 企业i的客户
- self.downer_i = [u for u, v in self.firm_network.out_edges(self.unique_id)]
+ self.downer_i = [agent for u, v in self.firm_network.out_edges(self.unique_id)
+ for agent in self.model.company_agents if agent.unique_id == u]
# 设备c的数量 (总量) 使用这个来判断设备数量
self.n_equip_c = n_equip_c
# 设备c产量 更具设备量进行估算
@@ -42,7 +44,7 @@ class FirmAgent(Agent):
# 消耗材料量 根据设备量进行估算
self.c_consumption = demand_quantity
# 设备c购买价格(初始值)
- self.c_price = c_price
+ # self.c_price = c_price
# 资源r补货库存阈值
self.s_r = 40
self.S_r = 120
@@ -241,8 +243,8 @@ class FirmAgent(Agent):
if sub_list[0] == material_type:
upper_i_material.append(firm)
# 没有 上游 没有 材料的情况,也就是紊乱的情况
- # if len(upper_i_material)==0:
-
+ if len(upper_i_material) == 0:
+ return -1
if self.is_prf_conn:
for firm in upper_i_material:
if self.firm_network.has_edge(self.unique_id, firm.unique_id) or self.firm_network.has_edge(
@@ -273,8 +275,8 @@ class FirmAgent(Agent):
if sub_list[0] == machinery_type:
upper_i_machinery.append(firm)
# 没有 上游 没有 材料的情况,也就是紊乱的情况
- # if len(upper_i_machinery)==0:
-
+ if len(upper_i_machinery) == 0:
+ return -1
if self.is_prf_conn:
for firm in upper_i_machinery:
if self.firm_network.has_edge(self.unique_id, firm.unique_id) or self.firm_network.has_edge(
@@ -297,15 +299,15 @@ class FirmAgent(Agent):
select_alt_supply = self.random.choice(lst_firm_machinery_connect)
return select_alt_supply
- def handle_material_request(self, material_list):
- for list in self.P:
- if list[0] == material_list[0]:
- list[1] -= material_list[1]
+ def handle_material_request(self, mater_list):
+ for list_P in self.P:
+ if list_P[0] == mater_list[0]:
+ list_P[1] -= mater_list[1]
- def handle_machinery_request(self, machinery_list):
- for list in self.C:
- if list[0] == machinery_list[0]:
- list[1] -= machinery_list[1]
+ def handle_machinery_request(self, machi_list):
+ for list_C in self.C:
+ if list_C[0] == machi_list[0]:
+ list_C[1] -= machi_list[1]
def refresh_R(self):
self.R1[self.model.t] = self.R
diff --git a/input_data/firm_industry_relation.csv b/input_data/firm_industry_relation.csv
index 3dcc5e8..1d59cd1 100644
--- a/input_data/firm_industry_relation.csv
+++ b/input_data/firm_industry_relation.csv
@@ -473,4 +473,4 @@ Firm_Code,Product_Code
168,2.3.2
168,2.3.3
169,1.1.1
-170,1
+170,1
\ No newline at end of file
diff --git a/input_data/测试 BomNodes.csv b/input_data/测试 BomNodes.csv
index 157bf18..75e96a3 100644
--- a/input_data/测试 BomNodes.csv
+++ b/input_data/测试 BomNodes.csv
@@ -1,107 +1,107 @@
Index,Code,Level,Name,产业种类
0,1,0,工业互联网,0
-1,1.1,1,工业自动化硬件,1
-2,1.1.1,2,工业计算芯片,0
+1,1.1,1,工业自动化硬件,0
+2,1.1.1,2,工业计算芯片,1
3,1.1.2,2,工业控制器,0
4,1.1.3,2,工业服务器,0
5,1.2,1,工业互联网网络,1
6,1.2.1,2,网络互联服务,0
7,1.2.2,2,标识解析服务,0
-8,1.2.3,2,数据互通服务,0
-9,1.3,1,工业软件,1
+8,1.2.3,2,数据互通服务,1
+9,1.3,1,工业软件,0
10,1.3.1,2,设计研发软件,0
11,1.3.1.1,3,计算机辅助设计CAD,0
-12,1.3.1.2,3,计算机辅助工程CAE,0
+12,1.3.1.2,3,计算机辅助工程CAE,1
13,1.3.1.3,3,计算机辅助制造CAM,0
-14,1.3.1.4,3,计算机辅助工艺过程设计CAPP,0
+14,1.3.1.4,3,计算机辅助工艺过程设计CAPP,1
15,1.3.1.5,3,产品数据管理PDM,1
-16,1.3.1.6,3,产品生命周期管理PLM,1
-17,1.3.1.7,3,电子设计自动化EDA,1
-18,1.3.2,2,采购供应软件,1
+16,1.3.1.6,3,产品生命周期管理PLM,0
+17,1.3.1.7,3,电子设计自动化EDA,0
+18,1.3.2,2,采购供应软件,0
19,1.3.2.1,3,供应链管理SCM,1
20,1.3.3,2,生产制造软件,1
-21,1.3.3.1,3,制造执行系统MES,1
-22,1.3.3.2,3,分布式控制系统DCS,0
+21,1.3.3.1,3,制造执行系统MES,0
+22,1.3.3.2,3,分布式控制系统DCS,1
23,1.3.3.3,3,数据采集与监视控制系统SCADA,1
-24,1.3.3.4,3,可编程逻揖控制系统PLC,1
+24,1.3.3.4,3,可编程逻揖控制系统PLC,0
25,1.3.3.5,3,企业资产管理系统EAM,1
26,1.3.3.6,3,运维保障系统MRO,1
27,1.3.3.7,3,故障预测与健康管理PHM,1
-28,1.3.4,2,企业运营管理软件,1
+28,1.3.4,2,企业运营管理软件,0
29,1.3.4.1,3,企业资源计划ERP,1
30,1.3.4.2,3,客户关系管理CRM,1
-31,1.3.4.3,3,人力资源管理HRM,1
+31,1.3.4.3,3,人力资源管理HRM,0
32,1.3.5,2,仓储物流软件,0
33,1.3.5.1,3,仓储物流管理WMS,1
34,1.4,1,工业互联网安全管理,1
35,1.4.1,2,设备安全,1
36,1.4.1.1,3,工业防火墙,1
-37,1.4.1.2,3,下一代防火墙,0
+37,1.4.1.2,3,下一代防火墙,1
38,1.4.1.3,3,防毒墙,1
-39,1.4.1.4,3,入侵检测系统,1
-40,1.4.1.5,3,统一威胁管理系统,1
+39,1.4.1.4,3,入侵检测系统,0
+40,1.4.1.5,3,统一威胁管理系统,0
41,1.4.2,2,控制安全,1
-42,1.4.2.1,3,工控安全监测与审计,1
+42,1.4.2.1,3,工控安全监测与审计,0
43,1.4.2.2,3,工控主机卫士,1
-44,1.4.2.3,3,工控漏洞扫描,0
+44,1.4.2.3,3,工控漏洞扫描,1
45,1.4.2.4,3,安全隔离与信息交换系统,1
46,1.4.2.5,3,安全日志与审计,1
47,1.4.2.6,3,隐私计算,1
-48,1.4.2.7,3,工控原生安全,1
+48,1.4.2.7,3,工控原生安全,0
49,1.4.3,2,网络安全,1
50,1.4.3.1,3,网络漏洞扫描和补丁管理,0
51,1.4.3.2,3,流量检测,1
-52,1.4.3.3,3,APT检测,0
+52,1.4.3.3,3,APT检测,1
53,1.4.3.4,3,攻击溯源,0
54,1.4.3.5,3,负载均衡,1
-55,1.4.3.6,3,沙箱类设备,0
-56,1.4.4,2,平台安全,1
-57,1.4.4.1,3,身份鉴别与访问控制,0
+55,1.4.3.6,3,沙箱类设备,1
+56,1.4.4,2,平台安全,0
+57,1.4.4.1,3,身份鉴别与访问控制,1
58,1.4.4.2,3,密钥管理,0
59,1.4.4.3,3,接入认证,0
-60,1.4.4.4,3,工业应用行为监控,1
+60,1.4.4.4,3,工业应用行为监控,0
61,1.4.4.5,3,安全态势感知,0
62,1.4.5,2,数据安全,0
-63,1.4.5.1,3,恶意代码检测系统,1
-64,1.4.5.2,3,数据防泄漏系统,1
-65,1.4.5.3,3,数据审计系统,0
-66,1.4.5.4,3,数据脱敏,1
-67,1.4.5.5,3,敏感数据发现与监控,0
-68,1.4.5.6,3,数据容灾备份,0
+63,1.4.5.1,3,恶意代码检测系统,0
+64,1.4.5.2,3,数据防泄漏系统,0
+65,1.4.5.3,3,数据审计系统,1
+66,1.4.5.4,3,数据脱敏,0
+67,1.4.5.5,3,敏感数据发现与监控,1
+68,1.4.5.6,3,数据容灾备份,1
69,1.4.5.7,3,数据恢复,1
70,1.4.5.8,3,数据加密,1
-71,1.4.5.9,3,数据防火墙,0
-72,2,0,工业互联网平台,1
-73,2.1,1,PaaS,0
-74,2.1.1,2,开发工具,1
+71,1.4.5.9,3,数据防火墙,1
+72,2,0,工业互联网平台,0
+73,2.1,1,PaaS,1
+74,2.1.1,2,开发工具,0
75,2.1.1.1,3,算法建模工具,1
76,2.1.1.2,3,低代码开发工具,0
-77,2.1.1.3,3,流程开发工具,1
+77,2.1.1.3,3,流程开发工具,0
78,2.1.1.4,3,组态建模工具,1
79,2.1.1.5,3,数字孪生建模工具,1
80,2.1.2,2,工业模型库,1
81,2.1.2.1,3,数据算法模型,0
-82,2.1.2.2,3,业务流程模型,0
-83,2.1.2.3,3,研发仿真模型,0
+82,2.1.2.2,3,业务流程模型,1
+83,2.1.2.3,3,研发仿真模型,1
84,2.1.2.4,3,行业机理模型,1
85,2.1.3,2,工业物联网,1
86,2.1.3.1,3,物联网服务,0
-87,2.1.3.2,3,平台基础服务,1
+87,2.1.3.2,3,平台基础服务,0
88,2.1.3.3,3,工业引擎服务,1
89,2.1.3.4,3,应用管理服务,1
90,2.1.3.5,3,容器服务,1
91,2.1.3.6,3,微服务,1
92,2.1.3.7,3,制造类API,0
-93,2.1.4,2,工业大数据,1
+93,2.1.4,2,工业大数据,0
94,2.1.4.1,3,工业大数据存储,1
95,2.1.4.1.1,4,关系型数据库,0
96,2.1.4.1.2,4,分布式数据库,1
-97,2.1.4.1.3,4,实时数据库,0
+97,2.1.4.1.3,4,实时数据库,1
98,2.1.4.1.4,4,时序数据库,0
99,2.1.4.2,3,工业大数据管理,0
100,2.1.4.2.1,4,数据质量管理,1
101,2.1.4.2.2,4,数据安全管理,1
-102,2.2,1,IaaS,0
+102,2.2,1,IaaS,1
103,2.3,1,边缘层,0
104,2.3.1,2,工业数据接入,0
105,2.3.2,2,边缘数据处理,0
diff --git a/input_data/测试 Firm_amended 170.csv b/input_data/测试 Firm_amended 170.csv
index a8bd955..7d5e882 100644
--- a/input_data/测试 Firm_amended 170.csv
+++ b/input_data/测试 Firm_amended 170.csv
@@ -1,171 +1,171 @@
-Code,Company Name,原材料,库存商品,设备数量,Revenue,Total Employees (People),Type_Region,Self-supply Business (Yes/No),Revenue_Log,production_output,demand_quantity
-1,Company_1,284.02,982.67,452.15,29692.44,963,Suburban,Yes,10.298647746934053,204.215,481.402
-2,Company_2,591.75,232.7,597.47,37552.56,222,Urban,No,10.533496830634064,553.747,253.175
-3,Company_3,514.2,466.73,388.52,23557.62,355,Urban,No,10.067204613987071,227.852,377.42
-4,Company_4,893.84,633.71,580.73,89135.78,496,Urban,No,11.397916104118977,221.073,483.384
-5,Company_5,306.54,844.63,474.67,60818.82,117,Suburban,Yes,11.015654559530484,391.467,209.654
-6,Company_6,830.89,831.11,177.37,73695.09,279,Rural,No,11.207691454519859,372.737,473.089
-7,Company_7,483.95,603.67,603.02,73826.05,832,Rural,Yes,11.209466929335226,186.302,485.395
-8,Company_8,483.1,525.24,116.64,83568.26,242,Rural,Yes,11.333419061909991,437.664,500.31
-9,Company_9,958.73,267.31,682.18,36015.98,351,Suburban,No,10.491718007837608,433.217,460.873
-10,Company_10,946.82,215.02,393.99,26255.05,324,Suburban,No,10.175613630469309,472.399,381.682
-11,Company_11,454.76,689.55,232.49,84782.37,81,Suburban,Yes,11.3478428992222,243.249,260.476
-12,Company_12,323.83,177.09,624.04,26639.31,170,Suburban,No,10.19014322341799,321.404,148.382
-13,Company_13,425.17,396.05,274.2,31290.59,265,Rural,No,10.351072692349652,287.42,490.517
-14,Company_14,109.55,739.42,406.11,87814.36,788,Suburban,No,11.38298031978054,148.611,401.955
-15,Company_15,202.82,923.13,100.91,43238.15,487,Suburban,No,10.674478486379028,210.091,336.282
-16,Company_16,160.02,615.97,486.87,32433.19,658,Urban,No,10.386937560174536,327.687,459.002
-17,Company_17,292.47,762.76,981.28,22436.39,755,Rural,Yes,10.018439473254828,433.128,232.247
-18,Company_18,331.51,800.32,145.21,65352.83,631,Rural,Yes,11.087556023393986,388.521,358.151
-19,Company_19,508.01,104.76,862.05,67955.82,579,Rural,No,11.126613067125563,576.205,465.801
-20,Company_20,484.81,906.52,943.38,70611.44,692,Urban,No,11.164947450014383,325.33799999999997,513.481
-21,Company_21,769.67,739.38,736.02,76562.51,383,Suburban,Yes,11.245862810333419,455.602,197.96699999999998
-22,Company_22,533.36,234.46,657.71,38283.05,722,Urban,No,10.552762518463977,416.771,354.336
-23,Company_23,641.84,872.33,487.84,42673.07,791,Suburban,Yes,10.661323321098049,183.784,208.184
-24,Company_24,700.51,197.06,621.79,66410.79,503,Urban,No,11.10361482226283,257.179,341.051
-25,Company_25,628.84,292.82,571.1,72622.08,997,Urban,No,11.19302428680546,240.11,317.884
-26,Company_26,653.23,970.24,221.15,81298.66,667,Suburban,No,11.305884813235249,382.115,371.323
-27,Company_27,747.52,130.58,938.29,73435.38,990,Urban,No,11.204161114818818,214.829,339.752
-28,Company_28,878.41,322.67,211.96,77726.12,556,Rural,No,11.260946644601198,438.196,371.841
-29,Company_29,758.14,433.16,956.4,33200.84,568,Suburban,No,10.410330455789328,458.64,510.81399999999996
-30,Company_30,916.25,613.21,455.27,43485.34,347,Rural,No,10.680179148781386,252.527,267.625
-31,Company_31,900.34,969.81,394.83,50244.63,433,Rural,No,10.824658954539137,373.483,322.034
-32,Company_32,996.22,755.3,640.05,33162.77,550,Urban,No,10.409183140139199,514.005,450.622
-33,Company_33,515.17,844.15,161.39,57032.93,853,Rural,Yes,10.951384099299384,272.139,470.517
-34,Company_34,540.93,578.49,650.09,74078.09,806,Suburban,Yes,11.21287508605031,236.00900000000001,334.093
-35,Company_35,366.24,940.41,849.01,19617.56,483,Rural,Yes,9.884180362490643,519.901,169.624
-36,Company_36,405.22,450.03,380.13,11929.17,371,Rural,No,9.386741940165397,290.013,425.522
-37,Company_37,760.77,517.35,208.94,86851.29,464,Suburban,No,11.371952624754107,145.894,425.077
-38,Company_38,818.17,404.74,315.82,78053.26,201,Suburban,Yes,11.265146693168688,265.582,258.817
-39,Company_39,586.03,697.5,155.23,42210.17,931,Suburban,No,10.650416466250073,158.523,523.603
-40,Company_40,814.27,687.38,477.47,18756.58,673,Urban,Yes,9.839299903169191,295.747,192.427
-41,Company_41,872.52,234.9,598.33,33207.98,178,Urban,No,10.410545487468179,269.833,469.252
-42,Company_42,318.98,744.42,671.43,45471.87,404,Rural,No,10.72484917199056,178.143,350.898
-43,Company_43,453.11,750.88,926.15,99013.81,875,Suburban,No,11.503014614337706,490.615,434.311
-44,Company_44,130.39,274.92,629.0,13707.42,384,Urban,Yes,9.525692571040127,474.9,479.039
-45,Company_45,578.76,368.08,890.9,26604.81,901,Rural,No,10.188847305490215,324.09000000000003,202.876
-46,Company_46,265.4,987.58,137.93,39924.26,335,Suburban,No,10.594739438158781,349.793,331.54
-47,Company_47,743.33,304.14,867.21,90417.33,567,Urban,Yes,11.412191231547315,371.721,453.33299999999997
-48,Company_48,873.08,651.74,589.46,49837.92,599,Urban,Yes,10.816531419043114,371.946,299.308
-49,Company_49,797.72,610.35,866.25,71390.29,680,Urban,Yes,11.17591714468184,317.625,432.772
-50,Company_50,173.31,403.93,398.59,19134.31,577,Rural,No,9.859238337632949,383.859,427.331
-51,Company_51,713.05,943.63,786.47,33400.45,814,Suburban,No,10.416324651927923,242.647,554.305
-52,Company_52,769.5,939.62,827.64,15891.9,622,Urban,No,9.673564824440492,500.764,351.95
-53,Company_53,424.01,131.65,979.59,68631.67,998,Rural,Yes,11.13650936898853,240.959,315.401
-54,Company_54,923.68,474.15,214.87,18889.97,631,Suburban,Yes,9.84638637235242,403.487,459.368
-55,Company_55,671.6,928.96,584.73,93556.96,965,Suburban,No,11.446325727652052,191.473,350.15999999999997
-56,Company_56,740.88,450.42,624.08,75711.44,741,Rural,Yes,11.234684550861001,524.408,318.08799999999997
-57,Company_57,409.56,660.05,574.35,30617.71,416,Rural,No,10.32933387869449,211.435,536.956
-58,Company_58,436.2,294.82,599.98,78445.43,977,Urban,Yes,11.270158502799614,276.998,387.62
-59,Company_59,516.54,770.6,290.97,37174.96,441,Suburban,Yes,10.523390695335847,419.097,475.654
-60,Company_60,721.93,305.6,412.97,98848.66,842,Urban,Yes,11.501345272614115,316.297,280.193
-61,Company_61,712.26,395.66,391.41,92570.96,996,Urban,No,11.435730764537892,151.14100000000002,496.226
-62,Company_62,498.75,142.06,747.78,71608.94,917,Rural,Yes,11.178975205489529,536.778,380.875
-63,Company_63,623.33,901.33,397.15,23513.3,567,Suburban,Yes,10.065321497485543,362.715,297.333
-64,Company_64,263.36,133.88,830.99,20195.09,241,Urban,Yes,9.913194784536234,392.099,319.336
-65,Company_65,479.22,672.42,688.79,41600.33,951,Suburban,No,10.635863378910198,528.879,334.922
-66,Company_66,586.48,947.72,733.06,13215.54,624,Rural,Yes,9.489148688859606,487.306,478.648
-67,Company_67,145.29,158.54,178.11,64118.35,910,Rural,Yes,11.068485873391767,260.811,258.529
-68,Company_68,267.7,992.49,846.41,83839.88,127,Urban,No,11.336664068256136,552.641,188.77
-69,Company_69,207.33,621.93,942.4,54187.36,793,Suburban,Yes,10.900202949897876,349.24,518.733
-70,Company_70,107.17,406.95,154.29,15249.9,383,Suburban,Yes,9.632328224637009,506.429,294.717
-71,Company_71,835.06,230.35,568.8,91044.0,294,Rural,No,11.419098185126074,318.88,291.506
-72,Company_72,149.12,861.62,775.5,97301.35,155,Urban,No,11.485568142692438,360.55,156.912
-73,Company_73,385.5,741.6,846.34,19971.89,201,Rural,Yes,9.902081063894537,205.63400000000001,445.55
-74,Company_74,363.13,524.32,314.91,46296.94,763,Rural,Yes,10.742831147177496,255.491,284.313
-75,Company_75,647.69,363.06,973.17,77340.29,460,Urban,No,11.25597031483101,381.317,278.769
-76,Company_76,439.41,498.97,944.89,30625.18,754,Rural,Yes,10.329577825380776,526.489,258.94100000000003
-77,Company_77,466.64,397.98,979.11,86794.57,418,Rural,Yes,11.371299341087946,417.911,347.664
-78,Company_78,641.64,202.48,850.07,29307.04,807,Urban,No,10.285583039181757,259.007,379.164
-79,Company_79,732.01,600.48,239.65,93479.02,864,Rural,Yes,11.445492305071953,246.965,195.201
-80,Company_80,922.97,177.28,277.08,83955.43,883,Urban,Yes,11.33804134177189,500.70799999999997,222.297
-81,Company_81,627.27,621.58,542.03,87676.13,277,Urban,No,11.38140496343402,546.203,518.727
-82,Company_82,165.15,637.29,220.57,35181.96,313,Urban,Yes,10.468288730213176,371.057,246.515
-83,Company_83,819.04,221.6,785.02,16422.34,471,Urban,No,9.706397881988158,424.502,273.904
-84,Company_84,495.01,235.24,793.64,18346.41,797,Suburban,No,9.817189194015675,465.36400000000003,229.501
-85,Company_85,189.98,626.37,530.14,49793.11,669,Suburban,No,10.815631900027373,492.014,420.998
-86,Company_86,786.61,983.8,224.61,27511.88,420,Urban,No,10.222373190369527,296.461,200.661
-87,Company_87,775.36,813.93,242.21,94867.05,336,Rural,Yes,11.460231716720575,458.221,433.536
-88,Company_88,316.03,569.38,505.27,31548.83,265,Suburban,Yes,10.35929178328807,307.527,299.603
-89,Company_89,411.42,968.1,873.75,17001.83,274,Suburban,No,9.741076264303647,220.375,534.142
-90,Company_90,360.91,720.1,917.41,33781.07,582,Suburban,Yes,10.427655865407793,473.741,252.091
-91,Company_91,358.16,611.27,878.08,94174.16,361,Urban,Yes,11.452901112955821,500.808,146.816
-92,Company_92,353.58,598.11,973.92,46314.41,797,Suburban,No,10.743208422753485,540.392,251.358
-93,Company_93,796.81,261.4,254.01,36160.77,589,Suburban,No,10.495730108527182,202.401,310.681
-94,Company_94,479.78,168.81,256.88,40033.55,561,Rural,No,10.597473131541856,467.688,210.978
-95,Company_95,500.33,585.43,362.28,58187.29,708,Urban,No,10.971422224990354,253.228,302.033
-96,Company_96,267.69,499.92,214.82,79427.15,318,Suburban,No,11.282595528333824,179.482,373.769
-97,Company_97,755.05,985.95,179.24,82469.43,673,Suburban,Yes,11.320182958199297,140.924,446.505
-98,Company_98,302.62,320.94,594.75,51363.17,367,Suburban,No,10.84667665764297,510.475,362.262
-99,Company_99,714.96,972.27,684.7,26131.27,620,Rural,No,10.170887960471719,552.47,208.496
-100,Company_100,945.42,505.3,509.87,57539.11,222,Urban,Yes,10.960220169485046,174.987,338.54200000000003
-101,Company_101,160.02,165.31,985.52,97438.02,772,Urban,Yes,11.486971762540222,329.552,243.002
-102,Company_102,445.92,108.59,838.78,65823.19,990,Rural,No,11.094727486834918,310.878,233.59199999999998
-103,Company_103,591.79,603.5,225.38,17043.42,511,Suburban,Yes,9.74351948447026,211.538,287.179
-104,Company_104,252.06,450.61,405.59,57402.73,571,Rural,No,10.95784714215228,316.55899999999997,462.206
-105,Company_105,165.62,951.39,306.5,45833.17,398,Rural,Yes,10.73276334377794,173.65,386.562
-106,Company_106,255.06,128.16,259.17,13244.48,616,Urban,No,9.491336140837323,395.91700000000003,362.506
-107,Company_107,447.35,180.41,643.05,70700.8,449,Rural,No,11.166212167237902,476.305,380.735
-108,Company_108,781.83,434.34,550.93,81277.04,720,Suburban,Yes,11.305618844826347,450.093,377.183
-109,Company_109,169.85,134.46,977.71,94591.41,473,Suburban,No,11.45732194753443,239.77100000000002,273.985
-110,Company_110,125.7,708.42,777.62,11615.85,473,Rural,Yes,9.360125823758061,452.762,334.57
-111,Company_111,866.33,981.73,892.43,14848.63,251,Suburban,Yes,9.605662884082752,436.243,392.63300000000004
-112,Company_112,725.77,590.82,558.44,15328.79,949,Urban,Yes,9.63748803854849,397.844,518.577
-113,Company_113,958.57,191.31,188.92,97104.67,310,Urban,Yes,11.483544747870583,305.892,306.85699999999997
-114,Company_114,729.39,511.32,120.71,69592.56,191,Urban,No,11.150412944056944,457.071,390.93899999999996
-115,Company_115,365.17,638.89,288.41,18567.32,982,Rural,Yes,9.829158325138039,372.841,401.517
-116,Company_116,265.79,429.39,476.28,86839.57,716,Urban,No,11.371817672344777,372.628,356.579
-117,Company_117,559.33,264.97,113.88,15724.66,744,Rural,Yes,9.66298545971327,444.388,394.933
-118,Company_118,781.96,443.32,862.47,74245.47,273,Rural,No,11.215132044702743,427.247,508.196
-119,Company_119,890.02,331.77,697.16,83693.72,772,Rural,Yes,11.334919223794108,531.716,428.002
-120,Company_120,358.86,588.14,768.94,84336.55,101,Urban,No,11.342570620606638,188.894,371.886
-121,Company_121,589.37,192.81,994.71,30198.07,651,Urban,Yes,10.315533294036035,451.471,426.937
-122,Company_122,808.28,297.7,455.05,30809.46,875,Urban,Yes,10.335577064660097,157.505,494.828
-123,Company_123,988.78,307.96,869.8,44511.43,310,Suburban,Yes,10.703501289105592,455.98,326.878
-124,Company_124,461.81,849.69,521.11,84053.28,549,Suburban,Yes,11.339206162465574,425.111,217.18099999999998
-125,Company_125,438.73,683.75,458.4,34747.89,771,Rural,Yes,10.455874129724979,386.84,305.873
-126,Company_126,791.33,299.04,650.17,84231.54,634,Urban,Yes,11.341324714414265,208.017,494.13300000000004
-127,Company_127,369.59,143.99,204.6,27639.11,536,Rural,Yes,10.22698707765262,338.46,479.959
-128,Company_128,524.05,885.87,431.91,22997.06,766,Suburban,Yes,10.04312166065388,507.19100000000003,410.405
-129,Company_129,677.07,490.74,311.48,21524.13,781,Rural,No,9.97692991036063,444.148,564.707
-130,Company_130,178.2,260.51,858.09,83651.2,562,Rural,No,11.334411051799224,185.809,333.82
-131,Company_131,691.31,398.92,644.53,87442.53,582,Rural,No,11.378737056558094,443.453,357.131
-132,Company_132,189.46,575.78,346.71,13257.65,284,Rural,Yes,9.492330023297646,296.671,473.946
-133,Company_133,488.33,731.67,953.18,26643.92,489,Rural,Yes,10.190316260976394,559.318,406.83299999999997
-134,Company_134,369.02,465.67,667.29,78924.61,793,Suburban,No,11.27624837201392,238.72899999999998,205.902
-135,Company_135,738.44,879.57,465.81,92477.88,609,Suburban,No,11.434724759768017,365.581,546.844
-136,Company_136,758.99,786.45,658.38,52134.69,989,Urban,Yes,10.861585841104548,218.838,231.899
-137,Company_137,464.53,270.67,133.65,25976.63,552,Suburban,Yes,10.164952566645338,168.365,274.453
-138,Company_138,580.02,793.08,931.46,40643.76,471,Rural,Yes,10.612600597657721,362.146,444.002
-139,Company_139,274.51,795.06,500.42,35139.32,233,Rural,Yes,10.46707601038709,281.04200000000003,458.451
-140,Company_140,959.71,868.21,107.06,49994.95,428,Rural,Yes,10.81967727930944,361.706,578.971
-141,Company_141,354.71,563.01,350.48,42908.83,610,Urban,No,10.666832911242361,272.048,357.471
-142,Company_142,396.03,603.89,128.42,39303.37,668,Urban,No,10.579065544817109,332.842,170.603
-143,Company_143,892.61,311.16,670.46,43027.27,864,Suburban,Yes,10.669589379711221,549.046,279.26099999999997
-144,Company_144,486.76,626.8,943.16,39879.69,50,Rural,No,10.593622450725602,318.31600000000003,189.676
-145,Company_145,917.34,288.69,643.88,55254.01,873,Suburban,Yes,10.919696195931778,281.38800000000003,371.73400000000004
-146,Company_146,435.58,284.0,802.41,14442.55,517,Suburban,Yes,9.577933989653928,362.241,241.558
-147,Company_147,202.67,381.12,247.09,64747.68,871,Rural,Yes,11.07825314880404,335.709,272.267
-148,Company_148,394.8,297.97,982.49,64826.8,825,Suburban,No,11.079474377086543,261.249,240.48000000000002
-149,Company_149,703.7,551.4,223.33,52703.5,186,Rural,No,10.872437145986403,325.333,248.37
-150,Company_150,271.26,639.62,669.86,54145.21,286,Urban,No,10.899424790529425,392.986,361.126
-151,Company_151,741.21,534.21,734.27,99208.27,649,Urban,Yes,11.504976656733618,459.427,365.121
-152,Company_152,946.16,900.51,456.7,12725.19,836,Rural,Yes,9.451338772544975,533.67,282.616
-153,Company_153,230.74,396.22,221.36,44064.93,469,Rural,No,10.693419506970148,279.136,139.074
-154,Company_154,390.33,162.83,592.72,41020.68,592,Urban,Yes,10.621831608768346,283.272,484.033
-155,Company_155,729.59,982.05,479.26,33549.17,191,Suburban,No,10.420767402898578,377.926,280.959
-156,Company_156,873.45,147.99,568.87,10530.31,621,Urban,No,9.262013044390788,262.887,409.345
-157,Company_157,799.45,990.69,784.19,76686.49,803,Rural,No,11.247480831032389,299.419,216.945
-158,Company_158,491.74,143.25,906.25,59283.77,370,Suburban,No,10.990090854439025,558.625,390.174
-159,Company_159,367.87,208.07,473.62,83903.97,372,Suburban,Yes,11.33742820957182,282.362,264.787
-160,Company_160,564.46,355.27,733.19,61663.32,609,Urban,No,11.029444543649397,275.319,363.446
-161,Company_161,607.02,300.46,718.76,99731.85,231,Suburban,No,11.510240363309093,538.876,257.702
-162,Company_162,363.2,676.84,915.1,81358.78,101,Urban,No,11.306624035526434,493.51,285.32
-163,Company_163,976.79,481.49,329.12,87221.77,246,Urban,No,11.37620923470151,221.912,377.679
-164,Company_164,738.36,396.44,379.5,95322.53,249,Rural,No,11.465021473034172,364.95,406.836
-165,Company_165,785.54,427.37,589.4,84393.08,683,Suburban,No,11.343240686701314,288.94,373.554
-166,Company_166,992.29,576.28,173.55,43056.45,352,Rural,No,10.670267324417088,470.355,363.229
-167,Company_167,346.54,528.08,728.16,68761.38,309,Rural,Yes,11.138397529103418,195.816,262.654
-168,Company_168,523.22,482.95,699.79,58914.32,735,Rural,No,10.983839464028723,344.979,293.322
-169,Company_169,891.58,418.18,511.08,28763.31,576,Urban,Yes,10.26685589561593,178.108,286.158
-170,Company_170,712.0,906.86,583.05,16881.59,957,Urban,Yes,9.73397895802674,309.305,519.2
+Code,原材料,库存商品,设备数量,Revenue,Total Employees (People),Type_Region,Self-supply Business (Yes/No),Revenue_Log,production_output,demand_quantity
+0,181.81,641.66,728.05,87929.36,201,Rural,Yes,11.384289043829558,375.805,273.181
+1,563.58,957.81,555.95,87873.23,953,Rural,Yes,11.383650486662598,501.595,232.358
+2,580.85,890.49,437.24,69639.0,578,Rural,Yes,11.151080034215557,478.724,188.085
+3,973.37,993.31,468.34,44580.21,997,Suburban,No,10.705045317561336,435.834,373.337
+4,241.84,285.02,483.51,21252.13,808,Urban,Yes,9.96421240462346,158.351,405.184
+5,368.0,315.75,525.42,94743.97,578,Urban,No,11.458933479758539,245.542,332.8
+6,889.86,353.18,223.03,67882.65,79,Rural,No,11.12553575806758,284.303,494.986
+7,203.75,914.91,971.29,55768.34,195,Urban,Yes,10.92896160383392,240.129,212.375
+8,243.51,639.94,849.47,74211.92,860,Suburban,Yes,11.21468006315341,248.947,135.351
+9,835.96,867.4,182.11,28603.45,850,Suburban,Yes,10.261282618903437,364.211,188.596
+10,689.06,935.11,679.15,81506.9,63,Rural,Yes,11.308442958221967,543.915,395.906
+11,729.56,823.94,570.66,39513.14,817,Urban,Yes,10.584388553798581,217.066,382.956
+12,743.22,796.77,994.43,35647.21,628,Suburban,No,10.481426161910335,335.443,259.322
+13,434.41,627.26,640.54,95550.17,312,Urban,Yes,11.467406728840045,521.054,465.44100000000003
+14,218.51,265.34,831.5,74163.89,575,Rural,Yes,11.214032653017249,336.15,349.851
+15,324.18,651.97,628.53,65263.67,976,Urban,No,11.086190805158187,277.853,474.418
+16,263.97,560.28,936.33,71442.85,281,Urban,Yes,11.176653108371672,423.63300000000004,356.397
+17,826.3,337.48,354.44,39720.11,636,Suburban,No,10.589612887540975,428.444,310.63
+18,157.45,801.45,438.72,53164.35,586,Suburban,No,10.881143337921856,440.872,342.745
+19,857.4,256.3,336.24,26539.89,962,Rural,No,10.186404163190344,193.624,348.74
+20,818.54,756.38,396.87,31441.28,520,Rural,Yes,10.355876958182606,502.687,570.854
+21,403.99,705.79,826.47,56932.63,390,Suburban,Yes,10.949623917962214,518.647,434.399
+22,685.33,651.77,178.3,84452.8,774,Rural,No,11.343948077399748,285.83,399.533
+23,822.29,347.16,496.38,39599.95,563,Rural,No,10.586583134615513,316.638,484.229
+24,974.83,177.56,867.46,40712.78,330,Suburban,No,10.614297327055466,225.746,440.483
+25,439.19,804.07,984.96,84754.7,164,Rural,Yes,11.347516480932141,350.496,198.91899999999998
+26,792.91,452.82,968.22,20146.61,937,Urban,No,9.910791315007794,260.822,471.291
+27,760.28,342.11,403.48,72939.31,272,Rural,Yes,11.19738300448793,395.348,563.028
+28,138.05,932.66,775.93,18503.91,344,Urban,Yes,9.825737340086217,444.59299999999996,196.805
+29,149.76,537.24,492.6,32927.81,570,Rural,Yes,10.402072868451919,215.26,185.976
+30,979.46,249.46,491.61,82109.54,129,Urban,No,11.315809488446245,268.161,231.946
+31,338.04,911.44,390.13,63876.58,147,Rural,Yes,11.064708063012214,445.013,336.804
+32,650.75,215.55,536.88,85274.44,583,Rural,No,11.353630040276132,270.688,561.075
+33,198.36,555.99,513.68,18940.55,820,Urban,Yes,9.849060405389194,256.368,445.836
+34,928.72,675.62,330.83,75800.87,320,Rural,No,11.235865049137155,256.08299999999997,216.872
+35,980.62,893.25,371.57,54696.03,854,Urban,Yes,10.909546408079658,439.157,382.062
+36,816.55,334.59,506.43,55963.31,690,Rural,Yes,10.932451576422585,428.64300000000003,375.655
+37,811.93,613.86,689.11,42557.86,823,Rural,Yes,10.658619840796458,276.911,537.193
+38,233.05,373.08,577.32,80566.43,530,Urban,Yes,11.296837340493292,277.732,518.305
+39,809.83,356.18,755.38,99458.16,457,Suburban,Yes,11.507492332198147,369.538,550.983
+40,621.2,522.25,595.01,87316.4,661,Suburban,No,11.37729358214565,526.501,367.12
+41,907.65,730.64,830.85,30436.2,310,Urban,No,10.323387968440548,203.085,361.765
+42,220.93,688.61,996.21,41344.79,794,Suburban,Yes,10.629701694931855,413.621,374.093
+43,117.81,576.3,264.84,15830.0,784,Rural,Yes,9.669662152875057,374.484,182.781
+44,830.95,800.85,102.52,13639.33,635,Rural,Yes,9.520712809956411,392.252,355.095
+45,675.16,304.52,977.42,47128.26,762,Urban,No,10.760628100076477,206.742,370.51599999999996
+46,361.35,271.19,922.51,62800.89,766,Suburban,Yes,11.047724524330391,504.251,534.135
+47,277.52,628.81,310.08,19127.61,666,Rural,No,9.858888119971708,422.008,183.752
+48,768.86,962.58,169.23,82513.95,709,Rural,No,11.320722648937608,324.923,553.886
+49,640.49,256.78,477.52,96026.28,989,Urban,Yes,11.472377182987278,228.752,202.049
+50,703.49,572.21,670.69,41241.23,374,Urban,No,10.627193763098349,467.069,490.349
+51,603.88,740.35,384.55,65698.37,790,Urban,Yes,11.092829394423687,170.45499999999998,362.388
+52,972.13,799.44,927.28,95157.56,935,Urban,Yes,11.463289323062517,397.728,491.21299999999997
+53,193.37,697.4,243.1,98193.26,605,Suburban,Yes,11.494692856549156,390.31,426.337
+54,849.98,196.48,927.78,83414.35,973,Suburban,Yes,11.33157563589593,293.778,382.998
+55,953.18,770.12,207.4,55392.45,498,Suburban,No,10.922198581859748,202.74,563.318
+56,381.56,998.22,860.09,62313.91,335,Suburban,Yes,11.039939954331839,382.009,207.156
+57,644.79,521.74,355.78,75289.45,713,Urban,No,11.229095297730488,402.578,291.479
+58,505.59,860.44,789.47,25900.97,585,Urban,Yes,10.162035698723782,182.947,406.55899999999997
+59,369.43,872.67,895.61,63241.28,675,Rural,No,11.05471253147278,416.56100000000004,423.943
+60,419.27,513.8,452.13,51223.88,838,Urban,No,10.843961108544011,309.213,205.927
+61,196.58,924.12,338.96,28298.88,859,Rural,No,10.250577506876448,457.896,364.658
+62,890.61,305.66,713.32,50412.81,282,Rural,Yes,10.828000588431252,299.332,397.06100000000004
+63,234.83,181.61,104.55,15073.36,361,Suburban,No,9.62068422629099,279.455,271.483
+64,889.35,562.21,116.14,77654.42,784,Rural,Yes,11.260023749043118,337.614,523.935
+65,179.85,369.62,180.93,69888.63,840,Suburban,Yes,11.15465825404697,422.093,247.985
+66,238.0,309.39,564.85,51633.14,940,Suburban,Yes,10.851918993378646,537.485,205.8
+67,178.8,934.8,898.22,45553.24,99,Rural,Yes,10.726637030784127,430.822,281.88
+68,705.91,321.96,196.64,34943.76,857,Suburban,Yes,10.461495190949123,241.664,257.591
+69,417.35,650.65,516.24,40390.81,873,Rural,Yes,10.606357562825298,329.624,242.735
+70,143.56,132.64,319.8,31165.9,509,Suburban,Yes,10.347079827375628,418.98,503.356
+71,636.49,620.16,375.48,35974.77,861,Urban,Yes,10.49057313840643,260.548,295.649
+72,356.74,585.65,467.6,32974.8,250,Rural,Yes,10.403498912366212,538.76,409.674
+73,647.81,566.75,659.68,37617.13,524,Suburban,No,10.535214810736983,263.96799999999996,300.781
+74,263.94,828.9,574.78,76153.93,410,Urban,Yes,11.240511965658731,438.478,361.394
+75,905.98,734.15,692.96,13377.47,651,Urban,Yes,9.501327227611464,363.296,469.598
+76,292.05,243.65,522.28,49923.72,529,Urban,Yes,10.81825151949766,482.228,350.205
+77,393.86,999.51,735.64,12433.38,415,Urban,No,9.42814007030796,535.564,303.386
+78,517.7,326.34,529.63,54028.27,874,Urban,Yes,10.89726270707692,230.963,504.77
+79,498.02,282.95,933.3,25192.21,482,Rural,No,10.134290098725792,280.33,480.802
+80,199.15,401.59,289.82,22092.58,672,Rural,No,10.002997084523999,486.98199999999997,202.915
+81,954.83,314.75,347.98,67309.26,972,Urban,Yes,11.117053099035545,248.798,465.483
+82,338.55,394.23,140.73,31921.77,182,Suburban,Yes,10.371043501154208,385.073,275.855
+83,120.84,244.32,962.47,37341.68,855,Suburban,Yes,10.527865408049326,263.247,117.084
+84,941.7,232.22,840.66,64891.57,371,Urban,Yes,11.08047300211371,269.06600000000003,476.17
+85,643.17,912.04,990.06,86883.99,914,Rural,Yes,11.372329059527587,355.006,411.317
+86,678.76,791.29,717.2,69956.18,334,Rural,Yes,11.155624325011686,384.72,515.876
+87,231.47,396.41,659.0,13992.44,602,Rural,No,9.546272462744886,549.9,495.147
+88,784.71,953.34,450.9,93706.25,760,Rural,No,11.447920168243213,519.09,365.471
+89,113.94,508.95,223.49,39526.07,935,Rural,Yes,10.584715733184998,353.349,172.394
+90,606.5,550.16,774.11,21875.64,57,Rural,Yes,9.99312896794069,516.4110000000001,309.65
+91,447.17,663.18,423.41,23303.28,170,Rural,Yes,10.056349402178457,240.341,366.717
+92,611.27,585.54,959.77,76513.0,513,Rural,No,11.245215940017895,440.977,300.127
+93,902.52,379.67,796.35,51981.86,591,Urban,Yes,10.858650090548744,281.635,361.252
+94,301.42,490.92,480.54,26329.43,179,Rural,Yes,10.178442603946115,409.054,406.142
+95,819.3,826.17,491.49,90948.99,995,Suburban,No,11.418054078881859,240.149,414.93
+96,911.38,265.66,592.57,20074.86,870,Rural,Yes,9.907223564942575,423.257,283.13800000000003
+97,779.57,543.64,929.73,14326.93,833,Rural,Yes,9.56989626200163,460.973,351.957
+98,153.96,660.67,354.21,83007.2,745,Urban,No,11.326682630004385,318.421,433.396
+99,932.37,892.01,202.12,60293.69,887,Urban,No,11.00698273379035,210.212,285.23699999999997
+100,126.64,832.47,671.04,96563.41,475,Urban,No,11.477955169978017,218.10399999999998,398.664
+101,270.89,706.51,300.61,90204.11,749,Suburban,No,11.409830270422843,311.061,477.089
+102,482.48,958.61,183.12,43168.79,593,Rural,No,10.67287305943306,471.312,325.248
+103,990.28,733.96,469.56,76332.37,994,Rural,No,11.242852373701297,227.95600000000002,261.028
+104,388.18,850.49,435.17,32055.5,785,Urban,Yes,10.375224054490317,485.517,453.818
+105,984.39,414.52,197.17,33821.73,736,Urban,Yes,10.428858774308102,402.717,293.43899999999996
+106,761.21,183.54,281.11,55013.96,260,Rural,Yes,10.915342250190042,481.111,388.121
+107,331.91,279.02,877.44,53710.83,362,Urban,No,10.891369936140743,244.744,530.191
+108,469.56,264.7,851.26,76110.9,575,Rural,No,11.239946766181669,251.126,345.956
+109,971.54,881.07,334.09,58867.43,578,Suburban,Yes,10.983043245557232,199.409,391.154
+110,517.61,616.48,893.11,72042.76,787,Rural,No,11.185015110604866,523.311,473.761
+111,400.81,368.37,725.7,23609.77,891,Suburban,Yes,10.069415888397208,366.57,175.08100000000002
+112,453.79,493.83,974.96,90456.84,167,Rural,Yes,11.412628109854797,411.496,427.379
+113,941.13,837.6,410.3,32438.24,520,Suburban,Yes,10.38709325275015,364.03,224.113
+114,748.24,400.21,504.45,41249.5,921,Urban,No,10.627394270477243,218.445,541.824
+115,133.89,994.03,956.81,87486.73,685,Rural,No,11.379242403701742,341.681,283.389
+116,215.17,615.03,922.44,57195.4,479,Suburban,No,10.954228754553641,340.244,150.517
+117,273.3,200.4,702.29,91578.5,282,Urban,Yes,11.424951806954867,468.229,389.33
+118,727.88,435.23,623.45,88235.21,802,Rural,No,11.387761368682435,467.345,246.788
+119,500.21,244.24,743.84,88539.28,213,Urban,Yes,11.391201574335291,198.38400000000001,289.021
+120,492.05,549.08,197.37,36497.09,698,Suburban,Yes,10.504987810364897,293.737,524.205
+121,242.04,645.31,338.0,15847.92,625,Suburban,No,9.670793540410068,288.8,503.204
+122,169.61,943.12,489.47,94776.28,339,Rural,No,11.459274445964661,396.947,284.961
+123,997.7,668.06,149.31,85691.25,924,Urban,No,11.358505999023217,249.931,254.77
+124,980.24,952.38,156.39,64771.22,488,Urban,Yes,11.078616647880379,249.639,320.024
+125,823.52,620.72,152.73,80077.4,167,Urban,Yes,11.290748945929552,183.273,482.352
+126,518.56,264.76,894.63,21886.95,544,Urban,Yes,9.99364584778038,392.46299999999997,459.856
+127,516.9,541.19,284.53,79221.17,481,Urban,Yes,11.279998840064575,168.453,416.69
+128,479.06,821.23,812.31,45671.01,578,Rural,Yes,10.729219021108582,574.231,207.906
+129,864.87,370.37,627.0,99571.15,335,Rural,No,11.508627742978986,166.7,538.487
+130,106.9,451.78,741.94,84024.35,712,Suburban,Yes,11.338861916770467,338.194,378.69
+131,480.63,972.01,956.7,30156.57,517,Suburban,Yes,10.31415808886406,558.67,243.063
+132,467.69,512.18,484.88,26439.75,636,Rural,No,10.18262383855027,458.488,496.769
+133,338.95,482.23,735.23,65016.58,500,Suburban,Yes,11.082397593274264,225.523,355.895
+134,396.97,167.31,970.9,16871.64,796,Urban,Yes,9.73338938480437,501.09000000000003,360.697
+135,443.34,726.96,811.81,19889.06,186,Suburban,Yes,9.89792511080162,528.181,533.334
+136,900.26,735.27,322.44,73358.44,674,Suburban,Yes,11.203112841709697,335.244,343.026
+137,298.84,960.18,833.89,32517.38,521,Rural,Yes,10.38952999461049,355.389,338.884
+138,514.11,138.94,403.06,73790.3,600,Rural,No,11.208982565635692,373.306,287.411
+139,563.71,895.07,230.42,35866.03,717,Rural,No,10.487545886954793,239.042,317.371
+140,233.85,759.24,700.57,65060.34,787,Rural,No,11.083070425958969,232.05700000000002,271.385
+141,931.02,738.56,668.2,77652.7,697,Urban,Yes,11.260001599382495,521.82,392.102
+142,212.83,695.04,321.17,18167.74,646,Rural,Yes,9.807402772806727,455.117,180.28300000000002
+143,924.34,205.86,558.88,52162.63,780,Suburban,Yes,10.86212161710854,425.888,415.43399999999997
+144,249.21,863.7,749.47,84617.29,62,Urban,No,11.34589389823535,207.947,349.921
+145,726.16,794.73,746.1,62798.43,763,Rural,No,11.047685352143786,310.61,533.616
+146,948.13,792.63,192.63,73034.29,730,Suburban,No,11.19868433587119,204.263,380.813
+147,270.83,206.89,219.69,13885.75,153,Urban,No,9.53861841340637,288.969,487.08299999999997
+148,272.47,649.86,407.02,58794.83,719,Suburban,No,10.981809204851006,230.702,388.247
+149,896.82,782.03,746.84,81132.02,590,Suburban,Yes,11.303832983390505,402.68399999999997,300.682
+150,589.6,665.02,990.66,34608.49,157,Urban,Yes,10.45185430666866,433.06600000000003,160.96
+151,643.56,747.96,727.56,70969.34,259,Urban,No,11.170003231771686,381.756,509.356
+152,197.82,825.05,703.02,82097.85,105,Urban,Yes,11.315667107521492,502.302,422.782
+153,894.06,451.21,306.92,74212.65,254,Urban,No,11.214689899799728,425.692,541.406
+154,543.93,974.84,140.75,83785.49,519,Urban,No,11.336015121119924,288.075,240.393
+155,319.43,298.48,775.91,45520.75,824,Rural,Yes,10.725923544938645,469.591,279.943
+156,233.39,615.17,724.77,90675.17,284,Rural,Yes,11.415038838977027,389.477,354.339
+157,928.81,981.92,359.93,92439.1,235,Urban,No,11.434305328295919,454.993,273.881
+158,704.18,559.39,182.05,44391.3,820,Rural,Yes,10.700798783274456,337.205,528.418
+159,154.02,251.18,865.35,98398.02,360,Suburban,No,11.496775960886676,291.53499999999997,364.402
+160,275.54,406.26,568.47,27050.68,69,Suburban,No,10.20546742259082,520.847,180.554
+161,398.32,919.29,546.25,98471.58,220,Rural,No,11.49752325760921,397.625,463.832
+162,276.07,251.64,777.77,36870.89,744,Suburban,Yes,10.515177629803139,387.777,477.60699999999997
+163,645.63,243.57,345.2,26267.46,334,Suburban,Yes,10.176086189767442,206.51999999999998,537.563
+164,869.89,779.5,694.12,33187.84,707,Suburban,Yes,10.40993882275291,174.412,486.98900000000003
+165,913.2,937.8,524.82,93834.24,397,Urban,Yes,11.449285100369293,527.482,406.32
+166,120.77,970.59,161.73,56121.04,791,Rural,Yes,10.935266065762434,349.173,405.077
+167,757.06,742.72,289.58,49173.87,459,Rural,No,10.80311766383716,447.95799999999997,499.706
+168,578.68,954.7,693.6,92161.91,99,Rural,No,11.431302200541351,563.36,531.8679999999999
+169,486.25,914.6,227.81,41215.88,401,Suburban,Yes,10.626578897969104,266.781,432.625
diff --git a/main.py b/main.py
index 781337f..902ddfa 100644
--- a/main.py
+++ b/main.py
@@ -52,7 +52,7 @@ if __name__ == '__main__':
parser.add_argument('--exp', type=str, default='without_exp')
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=True)
+ parser.add_argument('--reset_db', type=bool, default=False)
args = parser.parse_args()
# 几核参与进程
diff --git a/my_model.py b/my_model.py
index 891cb67..6b3d276 100644
--- a/my_model.py
+++ b/my_model.py
@@ -78,11 +78,11 @@ class MyModel(Model):
print(f"Failed to initialize product network: {e}")
# 赋予 产业的量
# 产业种类
- data = pd.read_csv('测试数据 products_materials_equipment.csv')
- self.type = data
+ data = pd.read_csv('input_data/测试 BomNodes.csv')
+ data['Code'] = data['Code'].astype('string')
+ self.type2 = data
# 设备c折旧比值
- device_salvage_values = pd.read_csv('测试数据 device_salvage_values.csv')
- self.device_salvage_values = device_salvage_values
+ ###
def initialize_firm_network(self):
# Read the firm data
@@ -121,6 +121,10 @@ class MyModel(Model):
self.G_FirmProd.add_nodes_from(firm_industry_relation.index)
# 为每个节点分配属性
+ grouped = firm_industry_relation.groupby('Firm_Code')
+
+ self.firm_prod_labels_dict = {code: group['Product_Code'].tolist() for code, group in grouped}
+
firm_prod_labels_dict = {code: firm_industry_relation.loc[code].to_dict() for code in
firm_industry_relation.index}
nx.set_node_attributes(self.G_FirmProd, firm_prod_labels_dict)
@@ -137,7 +141,8 @@ class MyModel(Model):
for pred_product_code in lst_pred_product_code:
# Get a list of firms producing the component (pred_product_code)
- lst_pred_firm = self.Firm['Code'][self.Firm[pred_product_code] == 1].to_list()
+ lst_pred_firm = [firm_code for firm_code, product in self.firm_prod_labels_dict.items() if
+ pred_product_code in product]
# Select multiple suppliers (multi-sourcing)
n_pred_firm = self.int_netw_prf_n
@@ -183,7 +188,8 @@ class MyModel(Model):
lst_succ_product_code = list(self.G_bom.successors(product_code))
for succ_product_code in lst_succ_product_code:
- lst_succ_firm = self.Firm['Code'][self.Firm[succ_product_code] == 1].to_list()
+ lst_succ_firm = [firm_code for firm_code, product in self.firm_prod_labels_dict.items() if
+ succ_product_code in product]
n_succ_firm = self.int_netw_prf_n
if n_succ_firm > len(lst_succ_firm):
@@ -214,40 +220,45 @@ class MyModel(Model):
def initialize_agents(self):
""" Initialize agents and add them to the model. """
+
for ag_node, attr in self.product_network.nodes(data=True):
# 产业种类
- type2 = self.type.loc[ag_node, '种类']
+ # 利用 测试 BomNodes.csv 转换产业 和 id 前提是 一个产业一个产品id 且一一对应
+ product_id = self.type2.loc[self.type2['Code'] == ag_node, 'Index']
- device_salvage_values = self.type.loc[ag_node, '设备残值']
+ type2 = self.type2.loc[product_id, '产业种类'].values[0]
- j_comp_data_consumed = self.data_consumed.loc[ag_node]
+ # depreciation ratio 折旧比值
+ product_id = product_id.iloc[0]
- j_comp_data_produced = self.data_consumed.loc[ag_node]
+ j_comp_data_consumed = self.data_consumed[product_id]
+
+ j_comp_data_produced = self.data_produced[product_id]
product = ProductAgent(ag_node, self, name=attr['Name'], type2=type2,
- device_salvage_values=device_salvage_values,
j_comp_data_consumed=j_comp_data_consumed,
- j_comp_data_produced=j_comp_data_produced, )
-
+ j_comp_data_produced=j_comp_data_produced,
+ )
self.add_agent(product)
# self.grid.place_agent(product, ag_node)
##print(f"Product agent created: {product.name}, ID: {product.unique_id}")
for ag_node, attr in self.firm_network.nodes(data=True):
a_lst_product = [agent for agent in self.product_agents if agent.unique_id in attr['Product_Code']]
+ firm_id = self.Firm['Code'] == ag_node
+ n_equip_c = self.Firm.loc[firm_id, '设备数量'].values[0]
- n_equip_c = self.Firm.loc[ag_node, '设备数量']
+ demand_quantity = self.Firm.loc[firm_id, 'production_output'].values[0]
- demand_quantity = self.Firm.loc[ag_node, 'production_output']
+ production_output = self.Firm.loc[firm_id, 'demand_quantity'].values[0]
- production_output = self.Firm.loc[ag_node, 'demand_quantity']
-
- c_price = self.Firm.loc[ag_node, 'c_price']
+ # c购买价格? 数据预处理
+ # c_price = self.Firm.loc[self.Firm['Code'] == ag_node, 'c_price'].values[0]
# 资源 资源库存信息 利用 firm_resource
- R = self.firm_resource_R.loc[ag_node]
- P = self.firm_resource_R.loc[ag_node]
- C = self.firm_resource_R.loc[ag_node]
+ R = self.firm_resource_R.loc[firm_id].to_list()[0]
+ P = self.firm_resource_P.loc[firm_id].to_list()[0]
+ C = self.firm_resource_C.loc[firm_id].to_list()[0]
firm_agent = FirmAgent(
ag_node, self,
@@ -257,7 +268,7 @@ class MyModel(Model):
a_lst_product=a_lst_product,
demand_quantity=demand_quantity,
production_output=production_output,
- c_price=c_price,
+ # c_price=c_price,
R=R,
P=P,
C=C
@@ -306,12 +317,18 @@ class MyModel(Model):
data_R = pd.read_csv("测试数据 companies_materials.csv")
data_C = pd.read_csv("测试数据 companies_devices.csv")
data_P = pd.read_csv("测试数据 companies_products.csv")
+ device_salvage_values = pd.read_csv('测试数据 device_salvage_values.csv')
+
+ self.device_salvage_values = device_salvage_values
+
+ data_merged_C = pd.merge(data_C, device_salvage_values, on='设备id', how='left')
+
firm_resource_R = (data_R.groupby('Firm_Code')[['材料id', '材料数量']]
.apply(lambda x: x.values.tolist()))
- firm_resource_C = (data_C.groupby('Firm_Code')[['材料id', '材料数量']]
+ firm_resource_C = (data_merged_C.groupby('Firm_Code')[['设备id', '设备数量', '设备残值']]
.apply(lambda x: x.values.tolist()))
- firm_resource_P = (data_P.groupby('Firm_Code')[['材料id', '材料数量']]
+ firm_resource_P = (data_P.groupby('Firm_Code')[['产品id', '产品数量']]
.apply(lambda x: x.values.tolist()))
self.firm_resource_R = firm_resource_R
@@ -321,9 +338,10 @@ class MyModel(Model):
def j_comp_consumed_produced(self):
data_consumed = pd.read_csv('测试数据 consumed_materials.csv')
data_produced = pd.read_csv('测试数据 produced_products.csv')
- data_consumed = (data_consumed.groupby('产业id')[['消耗材料id', '消耗材料数量']]
+
+ data_consumed = (data_consumed.groupby('产业id')[['消耗材料id', '消耗量']]
.apply(lambda x: x.values.tolist()))
- data_produced = (data_produced.groupby('产业id')[['制造产品id', '制造产品数量']]
+ data_produced = (data_produced.groupby('产业id')[['制造产品id', '制造量']]
.apply(lambda x: x.values.tolist()))
self.data_consumed = data_consumed
@@ -381,51 +399,57 @@ class MyModel(Model):
machinery_list = []
list_seek_material_firm = [] # 每一个收到请求的企业
list_seek_machinery_firm = [] # 每一个收到请求的企业
+
for firm in self.company_agents:
# 资源
for sub_list in firm.R:
if sub_list[1] <= firm.s_r:
required_material_quantity = firm.S_r - sub_list[1]
- (material_list
- .append([sub_list[0], required_material_quantity]))
- purchase_material_firms[firm] = material_list
+ (material_list.append([sub_list[0], required_material_quantity]))
+ purchase_material_firms[firm] = material_list
# 设备
for sub_list in firm.C:
# 对于设备的required_machinery_quantity 要有所改变 根据残值而言! 每一个周期固定减少残值值 x firm 里面定义
sub_list[2] -= firm.x
if sub_list[2] <= 0: # 残值小于等于 0 时
sub_list[1] -= 1
- required_machinery_quantity = firm.C1[0][1] - sub_list[1] # 补回原来的量 也就是 1
+ required_machinery_quantity = 1 # 补回原来的量 也就是 1
(machinery_list
.append([sub_list[0], required_machinery_quantity]))
- purchase_machinery_firms[firm] = machinery_list
+ purchase_machinery_firms[firm] = machinery_list
# 寻源并发送请求 决定是否接受供应 并更新
+ for material_firm_key, sub_list_values in purchase_material_firms.items():
+ for mater_list in sub_list_values:
+ result = material_firm_key.seek_material_supply(mater_list[0])
+ # 如果 result 不等于 0,才将其添加到 list_seek_material_firm 列表中
+ if result != -1:
+ list_seek_material_firm.append(result)
- for material_firm, sub_list in purchase_material_firms:
- for material_list in sub_list:
- (list_seek_material_firm
- .append(material_firm.seek_material_supply(material_list[0])))
if len(list_seek_material_firm) != 0:
for seek_material_firm in list_seek_material_firm:
- seek_material_firm.handle_material_request(material_list) # 更新产品
+ seek_material_firm.handle_material_request(mater_list) # 更新产品
for R_list in firm.R:
R_list[1] = firm.S_r
- for machinery_firm, sub_list in purchase_machinery_firms:
- for machinery_list in sub_list:
- (list_seek_machinery_firm
- .append(machinery_firm.seek_machinery_supply(machinery_list[0])))
+ for machinery_firm, sub_list in purchase_machinery_firms.items():
+ for machi_list in sub_list:
+ # 执行一次调用 machinery_firm.seek_machinery_supply(machinery_list[0])
+ result = machinery_firm.seek_machinery_supply(machi_list[0])
+ # 如果 result 不等于 0,才将其添加到 list_seek_machinery_firm 列表中
+ if result != -1:
+ list_seek_machinery_firm.append(result)
+
if len(list_seek_machinery_firm) != 0:
for seek_machinery_firm in list_seek_machinery_firm:
- seek_machinery_firm.handle_machinery_request(machinery_list)
+ seek_machinery_firm.handle_machinery_request(machi_list)
for C_list, C0_list in zip(firm.C, firm.C0):
C_list[1] = C0_list[1] # 赋值回去
C_list[2] = C0_list[2]
# 消耗资源过程
consumed_material = []
- for product in firm.a_lst_product:
+ for product in firm.indus_i:
for sub_list_data_consumed in product.j_comp_data_consumed:
consumed_material_id = sub_list_data_consumed[0]
consumed_material_num = sub_list_data_consumed[1]
@@ -436,7 +460,7 @@ class MyModel(Model):
sub_list_material[1] = sub_list_material[1] - sub_list_consumed_material[1]
# 生产产品过程
produced_products = []
- for product in firm.a_lst_product:
+ for product in firm.indus_i:
for sub_list_produced_products in product.j_comp_data_consumed:
produced_products_id = sub_list_produced_products[0]
produced_products_num = sub_list_produced_products[1]
diff --git a/product.py b/product.py
index 8d32c77..2d4f3c1 100644
--- a/product.py
+++ b/product.py
@@ -2,7 +2,7 @@ from mesa import Agent
class ProductAgent(Agent):
- def __init__(self, unique_id, model, name, type2, device_salvage_values, j_comp_data_consumed, j_comp_data_produced):
+ def __init__(self, unique_id, model, name, type2, j_comp_data_consumed, j_comp_data_produced):
# 调用超类的 __init__ 方法
super().__init__(unique_id, model)
@@ -13,7 +13,8 @@ class ProductAgent(Agent):
self.is_equip = True
else:
self.is_mater = True
- self.device_salvage_values = device_salvage_values
+ # depreciation ratio 折旧比值
+ # self.depreciation ratio
self.j_comp_data_produced = j_comp_data_produced
self.j_comp_data_consumed = j_comp_data_consumed
diff --git a/测试数据 产业 数据.py b/测试数据 产业 数据.py
index 70db33a..485edba 100644
--- a/测试数据 产业 数据.py
+++ b/测试数据 产业 数据.py
@@ -4,14 +4,25 @@ import numpy as np
# 设置随机种子
np.random.seed(42)
-# 生成企业和设备数据
-num_rows = 10 # 每个表的行数
+num_companies = 170 # 企业ID范围
-# 构造数据
-company_ids = np.random.randint(1000, 1100, size=num_rows)
-device_ids = np.random.randint(100, 200, size=num_rows)
-material_ids = np.random.randint(0, 100, size=num_rows)
-product_ids = np.random.randint(0, 200, size=num_rows)
+# 生成企业和设备数据
+num_rows = 220 # 每个表的行数
+
+company_ids = np.arange(num_companies)
+
+# 第二步:生成剩余的随机企业ID
+remaining_ids = np.random.randint(0, num_companies, size=num_rows - num_companies)
+
+# 合并两部分的企业ID
+all_company_ids = np.concatenate([company_ids, remaining_ids])
+
+# 第三步:对企业ID进行升序排序
+all_company_ids.sort()
+
+device_ids = np.random.randint(51, 107, size=num_rows)
+material_ids = np.random.randint(0, 51, size=num_rows)
+product_ids = np.random.randint(0, 107, size=num_rows)
device_quantities = np.random.randint(50, 200, size=num_rows)
material_quantities = np.random.randint(100,200, size=num_rows)
@@ -19,19 +30,19 @@ product_quantities = np.random.randint(20, 100, size=num_rows)
# 创建三个表格的数据框
df_devices = pd.DataFrame({
- '企业id': company_ids,
+ 'Firm_Code': all_company_ids,
'设备id': device_ids,
'设备数量': device_quantities
})
df_materials = pd.DataFrame({
- '企业id': company_ids,
+ 'Firm_Code': all_company_ids,
'材料id': material_ids,
'材料数量': material_quantities
})
df_products = pd.DataFrame({
- '企业id': company_ids,
+ 'Firm_Code': all_company_ids,
'产品id': product_ids,
'产品数量': product_quantities
})
diff --git a/测试数据 产业-原材料消耗-产品生产量.py b/测试数据 产业-原材料消耗-产品生产量.py
index 930c2cb..5b0b8e1 100644
--- a/测试数据 产业-原材料消耗-产品生产量.py
+++ b/测试数据 产业-原材料消耗-产品生产量.py
@@ -5,7 +5,7 @@ import numpy as np
np.random.seed(42)
# 定义产业数量
-num_industries = 10
+num_industries = 107
# 创建产业ID列表
industry_ids = [i for i in range(0, num_industries + 1)]
@@ -30,8 +30,8 @@ for industry in industry_ids:
produced_products_data.append([industry, product_id, production_quantity])
# 创建两个数据框
-df_consumed_materials = pd.DataFrame(consumed_materials_data, columns=['产业ID', '消耗材料ID', '消耗量'])
-df_produced_products = pd.DataFrame(produced_products_data, columns=['产业ID', '制造产品ID', '制造量'])
+df_consumed_materials = pd.DataFrame(consumed_materials_data, columns=['产业id', '消耗材料id', '消耗量'])
+df_produced_products = pd.DataFrame(produced_products_data, columns=['产业id', '制造产品id', '制造量'])
# 保存两个数据框为CSV文件
file_path_consumed = '测试数据 consumed_materials.csv'
diff --git a/测试数据 BomNodes.csv.py b/测试数据 BomNodes.csv.py
index 95ddd87..89dee30 100644
--- a/测试数据 BomNodes.csv.py
+++ b/测试数据 BomNodes.csv.py
@@ -3,13 +3,12 @@ import random
import numpy as np
# 生成170条测试数据的函数
-data=pd.read_csv('input_data/BomNodes.csv')
+data = pd.read_csv('input_data/BomNodes.csv')
# 生成数据
df = pd.DataFrame(data)
df['产业种类'] = [random.choice([0, 1]) for _ in range(107)]
# 显示前几行
-print(df.head())
# 保存数据到CSV文件
df.to_csv('input_data/测试 BomNodes.csv', index=False)
diff --git a/测试数据 Firm_amended.csv.py b/测试数据 Firm_amended.csv.py
index 016c029..ca85e3f 100644
--- a/测试数据 Firm_amended.csv.py
+++ b/测试数据 Firm_amended.csv.py
@@ -6,11 +6,10 @@ import numpy as np
# 生成170条测试数据的函数
def generate_test_data(num_rows=170):
data = {
- 'Company ID': [i for i in range(1, num_rows + 1)], # 生成1到170的公司ID
- 'Company Name': [f'Company_{i}' for i in range(1, num_rows + 1)], # 生成公司名称
+ 'Code': [i for i in range(0, num_rows)], # 生成0到170的公司ID
'原材料': [round(random.uniform(100, 1000), 2) for _ in range(num_rows)], # 原材料
'库存商品': [round(random.uniform(100, 1000), 2) for _ in range(num_rows)], # 库存商品
- '固定资产原值': [round(random.uniform(100, 1000), 2) for _ in range(num_rows)], # 固定资产原值
+ '设备数量': [round(random.uniform(100, 1000), 2) for _ in range(num_rows)], # 固定资产原值
'Revenue': [round(random.uniform(10000, 100000), 2) for _ in range(num_rows)], # Revenue
'Total Employees (People)': [random.randint(50, 1000) for _ in range(num_rows)], # 员工总数
'Type_Region': [random.choice(['Urban', 'Rural', 'Suburban']) for _ in range(num_rows)], # 区域类型
@@ -21,14 +20,13 @@ def generate_test_data(num_rows=170):
# 添加Revenue_Log列
df['Revenue_Log'] = np.log(df['Revenue'])
- df['production_output'] = df['固定资产原值'] / 10+np.random.randint(100, 500, size=len(df))
+ df['production_output'] = df['设备数量'] / 10+np.random.randint(100, 500, size=len(df))
df['demand_quantity'] = df['原材料'] / 10 +np.random.randint(100, 500, size=len(df))
return df
# 生成数据
df_test_data = generate_test_data()
-
# 显示前几行
print(df_test_data.head())
diff --git a/测试数据 companies_devices.csv b/测试数据 companies_devices.csv
index ae382cb..85f6250 100644
--- a/测试数据 companies_devices.csv
+++ b/测试数据 companies_devices.csv
@@ -1,11 +1,221 @@
-企业id,设备id,设备数量
-1051,187,104
-1092,199,113
-1014,123,180
-1071,102,100
-1060,121,184
-1020,152,70
-1082,101,122
-1086,187,67
-1074,129,181
-1074,137,138
+Firm_Code,设备id,设备数量
+0,70,140
+1,78,139
+1,97,68
+2,57,88
+3,94,175
+4,58,190
+5,97,175
+6,85,107
+7,64,197
+8,67,110
+8,86,176
+9,100,154
+10,90,50
+11,54,180
+12,52,141
+13,56,162
+13,104,105
+14,92,166
+14,54,183
+14,104,107
+15,79,93
+16,68,110
+17,76,96
+17,94,198
+18,84,129
+19,60,167
+20,86,196
+20,64,69
+20,81,195
+20,98,96
+21,65,98
+21,58,63
+22,64,192
+23,73,50
+24,90,166
+25,71,103
+26,66,167
+27,95,52
+28,68,193
+29,97,61
+30,103,123
+31,74,65
+32,76,151
+33,75,166
+34,95,57
+35,91,171
+36,79,141
+37,65,139
+37,95,185
+38,51,109
+39,75,77
+40,57,150
+41,59,90
+42,74,194
+43,51,190
+44,94,95
+45,58,84
+46,74,183
+47,61,131
+48,101,164
+48,67,96
+49,58,59
+50,85,105
+50,85,79
+50,83,158
+51,55,54
+52,92,168
+52,89,82
+52,91,167
+53,78,114
+54,57,195
+54,59,60
+55,58,134
+56,62,75
+57,84,112
+57,83,135
+58,98,108
+58,105,76
+59,73,147
+59,74,154
+60,87,148
+61,85,178
+62,94,198
+63,90,104
+63,72,55
+64,77,144
+65,85,182
+66,51,151
+67,85,52
+68,87,72
+69,97,102
+70,64,132
+71,53,194
+71,51,134
+72,55,127
+72,76,159
+73,105,50
+74,64,100
+74,89,53
+75,77,162
+76,59,81
+77,65,83
+78,65,141
+79,76,144
+80,92,121
+81,63,88
+82,101,167
+83,82,52
+84,89,172
+85,99,99
+86,102,61
+87,82,103
+87,54,182
+87,80,106
+88,87,194
+88,73,161
+88,89,96
+89,95,134
+89,65,191
+90,93,115
+91,79,124
+92,86,152
+92,63,87
+93,82,99
+94,57,147
+95,101,131
+96,72,79
+97,78,128
+98,52,140
+99,92,101
+99,95,128
+100,103,79
+101,56,155
+102,78,100
+102,78,130
+102,94,182
+103,94,78
+103,70,181
+104,80,187
+105,61,194
+106,105,123
+106,78,66
+107,75,133
+107,89,118
+108,83,83
+109,51,55
+110,77,102
+111,102,175
+112,63,92
+113,91,164
+114,53,160
+115,89,129
+116,56,144
+116,58,167
+117,77,193
+118,59,57
+119,87,181
+120,83,153
+121,101,181
+121,92,74
+122,94,145
+123,74,142
+124,65,110
+125,104,171
+126,82,100
+127,82,196
+128,74,70
+129,91,54
+129,102,141
+129,99,110
+130,99,71
+130,102,198
+130,62,119
+131,89,50
+131,52,182
+132,53,61
+133,99,139
+134,87,95
+134,99,83
+135,106,127
+136,67,94
+137,99,122
+138,52,75
+139,52,96
+140,78,170
+141,104,105
+142,73,143
+143,87,156
+144,82,112
+145,83,97
+146,51,110
+147,69,130
+148,52,75
+149,103,85
+149,94,50
+150,76,57
+151,82,162
+151,56,148
+152,82,96
+153,105,176
+154,54,105
+155,105,63
+156,61,77
+157,106,127
+157,67,179
+158,88,158
+159,74,63
+160,55,105
+160,102,164
+161,84,56
+162,56,52
+163,72,160
+164,61,156
+165,98,67
+166,66,87
+166,83,164
+167,59,64
+168,56,168
+169,66,77
+169,79,88
diff --git a/测试数据 companies_materials.csv b/测试数据 companies_materials.csv
index 7b42404..f0d3e58 100644
--- a/测试数据 companies_materials.csv
+++ b/测试数据 companies_materials.csv
@@ -1,11 +1,221 @@
-企业id,材料id,材料数量
-1051,1,159
-1092,63,113
-1014,59,108
-1071,20,189
-1060,32,152
-1020,75,101
-1082,57,183
-1086,21,191
-1074,88,159
-1074,48,170
\ No newline at end of file
+Firm_Code,材料id,材料数量
+0,2,156
+1,19,116
+1,35,185
+2,18,189
+3,25,143
+4,2,124
+5,18,116
+6,19,112
+7,31,183
+8,6,124
+8,40,167
+9,32,109
+10,39,166
+11,38,117
+12,17,199
+13,39,185
+13,0,133
+14,10,107
+14,27,139
+14,24,182
+15,49,141
+16,22,140
+17,30,105
+17,29,151
+18,41,125
+19,34,163
+20,6,197
+20,15,158
+20,25,155
+20,47,158
+21,48,169
+21,1,132
+22,0,152
+23,47,121
+24,11,120
+25,4,169
+26,36,169
+27,31,103
+28,8,193
+29,40,174
+30,34,161
+31,18,161
+32,47,193
+33,15,194
+34,2,123
+35,19,154
+36,23,108
+37,32,102
+37,23,130
+38,10,139
+39,48,135
+40,7,123
+41,35,194
+42,37,105
+43,39,165
+44,19,183
+45,34,191
+46,47,174
+47,24,103
+48,34,178
+48,24,105
+49,28,193
+50,17,150
+50,45,161
+50,17,156
+51,1,165
+52,34,178
+52,15,174
+52,40,107
+53,35,125
+54,32,150
+54,3,144
+55,32,143
+56,13,104
+57,20,169
+57,47,125
+58,19,167
+58,7,118
+59,6,183
+59,2,196
+60,16,119
+61,32,111
+62,47,146
+63,11,100
+63,50,189
+64,21,113
+65,21,163
+66,45,137
+67,29,136
+68,37,110
+69,37,199
+70,44,176
+71,50,102
+71,7,132
+72,26,105
+72,26,149
+73,33,109
+74,20,104
+74,29,122
+75,32,109
+76,27,143
+77,46,101
+78,32,112
+79,4,139
+80,47,101
+81,18,183
+82,3,164
+83,34,162
+84,48,172
+85,16,116
+86,43,108
+87,27,174
+87,29,114
+87,28,123
+88,45,137
+88,5,134
+88,34,193
+89,40,194
+89,36,148
+90,23,168
+91,28,161
+92,48,159
+92,45,149
+93,30,177
+94,34,174
+95,32,108
+96,20,133
+97,31,175
+98,22,198
+99,32,134
+99,2,100
+100,17,139
+101,24,163
+102,41,121
+102,30,159
+102,2,163
+103,39,192
+103,45,171
+104,23,110
+105,49,113
+106,31,159
+106,46,129
+107,21,134
+107,22,184
+108,1,136
+109,26,104
+110,41,182
+111,1,177
+112,25,125
+113,16,161
+114,39,103
+115,32,188
+116,8,141
+116,42,188
+117,47,117
+118,38,139
+119,28,171
+120,41,138
+121,25,113
+121,34,131
+122,49,150
+123,24,137
+124,23,196
+125,12,122
+126,6,162
+127,35,114
+128,44,196
+129,19,124
+129,0,116
+129,7,196
+130,45,165
+130,15,177
+130,13,152
+131,11,150
+131,50,138
+132,22,150
+133,14,169
+134,27,105
+134,33,166
+135,1,106
+136,31,150
+137,22,171
+138,21,141
+139,50,163
+140,24,114
+141,21,128
+142,21,132
+143,48,193
+144,41,126
+145,5,135
+146,14,128
+147,42,137
+148,36,156
+149,32,196
+149,7,126
+150,43,154
+151,43,132
+151,4,167
+152,38,185
+153,3,165
+154,5,109
+155,44,104
+156,31,173
+157,29,196
+157,46,137
+158,34,112
+159,39,130
+160,15,146
+160,12,199
+161,49,187
+162,41,151
+163,29,155
+164,18,114
+165,16,128
+166,18,107
+166,27,104
+167,25,128
+168,36,146
+169,25,167
+169,22,175
diff --git a/测试数据 companies_products.csv b/测试数据 companies_products.csv
index 725ee0b..02280d8 100644
--- a/测试数据 companies_products.csv
+++ b/测试数据 companies_products.csv
@@ -1,11 +1,221 @@
-企业id,产品id,产品数量
-1051,58,63
-1092,169,27
-1014,187,66
-1071,14,54
-1060,189,97
-1020,189,55
-1082,174,69
-1086,189,23
-1074,50,21
-1074,107,25
+Firm_Code,产品id,产品数量
+0,8,64
+1,11,21
+1,0,46
+2,57,55
+3,0,55
+4,33,45
+5,95,62
+6,47,46
+7,88,88
+8,103,39
+8,0,30
+9,15,93
+10,60,57
+11,102,25
+12,63,91
+13,62,42
+13,68,66
+14,21,65
+14,92,31
+14,66,32
+15,75,81
+16,25,79
+17,15,62
+17,50,95
+18,100,87
+19,85,24
+20,56,56
+20,28,91
+20,77,50
+20,91,28
+21,68,70
+21,46,48
+22,93,97
+23,61,59
+24,68,60
+25,75,30
+26,15,42
+27,89,20
+28,89,65
+29,47,40
+30,84,55
+31,38,73
+32,99,76
+33,32,20
+34,93,82
+35,100,73
+36,22,74
+37,9,59
+37,68,34
+38,99,40
+39,33,66
+40,51,92
+41,94,72
+42,9,28
+43,18,93
+44,57,71
+45,95,76
+46,0,45
+47,68,60
+48,3,54
+48,15,82
+49,23,44
+50,79,94
+50,1,57
+50,91,21
+51,31,26
+52,90,53
+52,83,36
+52,23,62
+53,11,78
+54,49,70
+54,34,73
+55,32,43
+56,32,44
+57,60,90
+57,50,71
+58,42,89
+58,100,52
+59,11,68
+59,66,48
+60,64,82
+61,32,41
+62,39,45
+63,73,47
+63,42,68
+64,43,90
+65,28,68
+66,12,39
+67,11,82
+68,94,80
+69,45,68
+70,1,90
+71,34,20
+71,86,32
+72,80,70
+72,89,75
+73,7,81
+74,92,51
+74,25,49
+75,73,48
+76,89,68
+77,33,64
+78,104,49
+79,6,35
+80,67,59
+81,57,38
+82,74,37
+83,28,20
+84,35,97
+85,88,66
+86,20,85
+87,35,57
+87,9,70
+87,100,82
+88,72,23
+88,23,20
+88,63,27
+89,98,48
+89,48,74
+90,98,22
+91,35,51
+92,81,29
+92,102,93
+93,95,53
+94,23,74
+95,22,51
+96,61,69
+97,95,26
+98,36,27
+99,11,84
+99,54,76
+100,12,86
+101,22,78
+102,88,91
+102,98,73
+102,104,86
+103,29,70
+103,16,27
+104,61,53
+105,83,54
+106,88,97
+106,85,51
+107,12,65
+107,58,35
+108,18,87
+109,48,56
+110,99,73
+111,11,33
+112,60,74
+113,104,67
+114,18,26
+115,75,93
+116,8,26
+116,70,52
+117,27,42
+118,77,38
+119,94,38
+120,51,55
+121,82,48
+121,15,79
+122,68,21
+123,98,20
+124,11,66
+125,24,88
+126,51,39
+127,84,30
+128,99,21
+129,52,86
+129,22,31
+129,15,39
+130,56,24
+130,38,56
+130,52,57
+131,41,28
+131,57,72
+132,38,63
+133,13,43
+134,94,93
+134,4,49
+135,34,78
+136,86,33
+137,92,28
+138,106,59
+139,74,85
+140,17,44
+141,75,92
+142,8,41
+143,73,23
+144,57,45
+145,16,77
+146,101,48
+147,6,56
+148,45,94
+149,12,89
+149,39,37
+150,41,61
+151,8,60
+151,49,57
+152,26,53
+153,65,36
+154,4,56
+155,28,44
+156,36,95
+157,37,46
+157,82,76
+158,7,50
+159,64,25
+160,85,59
+160,16,31
+161,70,72
+162,88,90
+163,44,29
+164,3,64
+165,35,36
+166,69,45
+166,30,81
+167,18,65
+168,60,83
+169,53,21
+169,38,73
diff --git a/测试数据 consumed_materials.csv b/测试数据 consumed_materials.csv
index 8348aef..e8e0691 100644
--- a/测试数据 consumed_materials.csv
+++ b/测试数据 consumed_materials.csv
@@ -1,4 +1,4 @@
-产业ID,消耗材料ID,消耗量
+产业id,消耗材料id,消耗量
0,51,398
0,14,156
0,71,238
@@ -22,3 +22,180 @@
9,61,345
10,52,329
10,25,266
+11,44,114
+11,88,376
+11,8,393
+12,10,130
+12,7,212
+12,34,338
+13,32,97
+13,22,111
+14,90,84
+14,64,276
+15,0,54
+15,89,304
+15,13,408
+16,50,112
+17,14,220
+17,28,85
+17,12,209
+18,61,490
+19,61,380
+19,91,280
+20,2,408
+21,96,356
+22,31,145
+22,87,282
+23,51,317
+23,38,435
+24,1,269
+24,53,392
+25,18,175
+26,31,296
+26,67,488
+27,97,247
+28,58,375
+29,35,452
+29,89,196
+29,19,401
+30,10,490
+31,93,347
+31,98,312
+31,15,395
+32,0,353
+32,11,86
+33,19,201
+33,53,169
+33,32,457
+34,88,148
+34,24,398
+34,17,433
+35,40,210
+36,66,450
+36,32,225
+36,75,492
+37,50,487
+37,7,332
+38,68,366
+39,92,95
+39,5,148
+40,45,230
+41,31,210
+42,23,163
+42,31,480
+43,89,322
+43,32,442
+44,24,457
+44,12,365
+45,7,449
+46,65,337
+46,86,496
+47,21,363
+47,57,391
+48,14,103
+48,59,150
+49,67,311
+50,46,404
+50,54,473
+51,62,324
+52,61,328
+53,95,175
+53,47,138
+54,63,496
+55,66,125
+55,25,193
+55,50,135
+56,46,143
+57,47,390
+57,38,149
+58,9,295
+58,68,149
+58,33,229
+59,3,65
+60,34,429
+60,32,466
+61,11,372
+62,42,93
+62,28,446
+63,25,139
+64,74,462
+64,35,266
+65,72,457
+66,95,86
+66,11,418
+67,61,133
+68,18,226
+68,99,445
+68,60,282
+69,15,422
+69,68,148
+69,11,74
+70,52,91
+70,57,472
+70,13,272
+71,74,195
+71,75,58
+71,73,491
+72,39,219
+73,65,54
+73,28,214
+74,70,266
+75,30,324
+75,60,413
+76,38,175
+76,66,222
+76,12,291
+77,38,50
+78,24,361
+79,57,93
+79,44,209
+80,79,423
+81,35,276
+82,30,50
+82,53,423
+82,2,193
+83,7,171
+84,40,277
+85,12,95
+86,55,335
+86,4,168
+87,48,316
+87,84,331
+87,62,266
+88,97,154
+89,4,407
+89,2,486
+89,22,102
+90,16,134
+90,77,415
+90,0,100
+91,64,418
+91,31,83
+92,2,428
+92,49,317
+93,93,271
+94,65,124
+94,50,152
+95,97,387
+95,29,384
+96,29,296
+96,50,130
+96,4,334
+97,33,311
+98,42,289
+98,74,420
+99,66,401
+100,4,141
+101,4,282
+102,44,460
+102,72,331
+103,55,399
+103,62,97
+104,7,162
+105,89,77
+105,86,127
+106,6,52
+106,22,287
+106,17,343
+107,38,490
+107,16,280
diff --git a/测试数据 device_salvage_values.csv b/测试数据 device_salvage_values.csv
index 47d1118..12287ba 100644
--- a/测试数据 device_salvage_values.csv
+++ b/测试数据 device_salvage_values.csv
@@ -1,11 +1,57 @@
设备id,设备残值
-151,97
-192,382
-114,109
-171,881
-160,673
-120,140
-182,671
-186,318
-174,779
-174,353
+51,112
+52,445
+53,870
+54,280
+55,116
+56,81
+57,710
+58,30
+59,624
+60,131
+61,476
+62,224
+63,340
+64,468
+65,97
+66,382
+67,109
+68,881
+69,673
+70,140
+71,671
+72,318
+73,779
+74,353
+75,501
+76,423
+77,815
+78,395
+79,201
+80,965
+81,286
+82,170
+83,469
+84,323
+85,31
+86,262
+87,757
+88,866
+89,570
+90,484
+91,68
+92,520
+93,691
+94,485
+95,709
+96,985
+97,792
+98,199
+99,967
+100,696
+101,967
+102,572
+103,885
+104,576
+105,253
+106,841
diff --git a/测试数据 material_device_product_ids.csv b/测试数据 material_device_product_ids.csv
index 53a9fc6..24bc18c 100644
--- a/测试数据 material_device_product_ids.csv
+++ b/测试数据 material_device_product_ids.csv
@@ -1,101 +1,171 @@
材料id,设备id,产品id
-51,192,14
-71,160,20
-82,186,74
-74,187,116
-99,123,130
-21,152,1
-87,129,37
-1,163,187
-20,132,57
-21,188,48
-90,158,169
-91,159,14
-61,161,174
-61,150,107
-54,163,130
-50,106,20
-72,138,17
-3,188,59
-13,108,89
-52,101,83
-91,159,198
-43,107,174
-34,177,80
-35,149,103
-3,101,133
-53,103,190
-17,189,43
-33,173,189
-99,113,94
-47,114,199
-77,186,189
-39,184,81
-52,123,153
-88,159,123
-40,128,14
-44,164,88
-70,108,87
-0,107,62
-10,180,135
-34,134,32
-4,140,27
-6,172,71
-11,133,32
-47,122,61
-87,136,98
-43,185,34
-64,198,100
-46,177,130
-0,104,141
-26,108,14
-89,141,123
-76,150,62
-95,151,131
-93,200,150
-14,142,28
-35,112,159
-70,158,85
-27,165,169
-44,161,184
-5,127,27
-43,183,29
-61,174,127
-91,188,189
-96,100,120
-26,161,120
-76,102,197
-71,126,136
-61,136,50
-43,123,58
-31,195,179
-61,157,51
-11,138,129
-2,200,112
-55,180,186
-1,101,53
-86,200,128
-18,101,52
-43,189,159
-69,131,67
-54,174,183
-16,137,23
-68,197,138
-15,196,200
-58,169,92
-2,119,186
-35,118,89
-66,118,147
-95,170,51
-32,139,127
-38,181,103
-0,110,184
-88,149,150
-30,193,41
-98,106,143
-89,159,112
-1,100,47
-11,168,36
-31,108,98
-18,147,130
-19,123,53
+39,102,92
+15,93,71
+21,89,82
+23,61,74
+24,103,99
+40,74,2
+22,103,1
+24,94,29
+38,52,63
+21,83,75
+22,94,88
+49,77,58
+42,78,59
+16,65,61
+47,101,54
+3,87,50
+7,71,72
+39,68,3
+25,64,8
+26,103,1
+20,78,59
+7,94,46
+35,64,80
+36,100,103
+4,52,5
+42,54,53
+29,68,89
+44,84,73
+36,64,94
+48,65,71
+14,73,61
+40,71,79
+45,68,52
+24,76,88
+45,91,28
+15,95,64
+25,57,8
+24,51,7
+24,61,80
+8,85,34
+33,55,105
+39,91,27
+7,59,71
+12,84,32
+48,105,22
+24,87,98
+44,90,85
+27,85,64
+35,87,46
+14,53,0
+5,76,13
+39,77,8
+15,65,89
+42,63,50
+32,89,51
+32,54,93
+37,73,102
+45,65,42
+29,86,12
+32,57,58
+22,78,65
+42,95,61
+6,78,27
+44,94,83
+30,61,91
+25,89,61
+33,51,26
+13,91,2
+39,56,71
+27,59,61
+37,83,50
+42,94,23
+15,104,31
+32,74,104
+49,99,57
+12,89,1
+3,99,100
+49,106,80
+49,52,1
+28,104,86
+37,82,96
+1,69,52
+44,76,31
+6,82,67
+11,106,16
+38,74,68
+34,56,85
+11,98,15
+33,59,58
+6,66,92
+3,70,58
+36,69,89
+3,69,19
+32,57,51
+41,83,39
+39,68,103
+1,61,91
+25,100,22
+31,80,41
+35,57,15
+26,98,59
+49,52,0
+48,62,68
+37,82,8
+41,85,18
+48,66,2
+20,74,53
+33,74,71
+36,88,103
+20,85,88
+35,75,92
+18,96,81
+2,104,34
+16,91,99
+33,54,32
+14,71,47
+20,106,7
+7,53,16
+33,98,75
+22,105,21
+46,80,37
+38,95,50
+8,77,26
+34,71,29
+33,78,63
+33,55,60
+48,69,3
+35,99,16
+44,78,29
+29,96,5
+35,91,36
+24,79,45
+31,85,59
+33,102,62
+21,82,86
+33,53,17
+25,92,94
+3,90,45
+24,100,31
+47,72,22
+2,77,105
+2,76,16
+40,83,8
+43,104,47
+39,79,41
+26,85,49
+25,74,12
+7,86,44
+20,51,7
+46,66,13
+12,101,86
+15,78,97
+2,82,86
+22,101,24
+22,72,48
+42,56,14
+43,87,96
+8,103,59
+44,94,4
+39,54,5
+45,82,93
+47,85,54
+40,102,15
+13,100,105
+30,69,16
+19,78,57
+26,87,89
+23,59,11
+1,51,33
+32,104,47
diff --git a/测试数据 produced_products.csv b/测试数据 produced_products.csv
index 8631620..4d2ec03 100644
--- a/测试数据 produced_products.csv
+++ b/测试数据 produced_products.csv
@@ -1,4 +1,4 @@
-产业ID,制造产品ID,制造量
+产业id,制造产品id,制造量
0,182,314
1,152,869
1,187,591
@@ -20,3 +20,197 @@
8,173,369
9,179,848
10,140,256
+11,107,571
+12,104,589
+12,140,127
+12,106,300
+13,198,783
+14,146,561
+15,108,306
+15,114,957
+15,141,991
+16,151,195
+16,103,833
+16,200,506
+17,158,342
+17,185,895
+17,165,781
+18,105,895
+19,196,484
+19,126,732
+20,171,510
+20,108,417
+21,143,763
+21,178,926
+22,161,596
+23,200,724
+23,155,180
+23,158,212
+24,195,324
+25,152,783
+25,189,771
+26,155,222
+26,116,866
+26,137,379
+27,110,610
+27,115,708
+28,102,759
+29,151,588
+29,132,739
+29,138,437
+30,149,250
+31,159,980
+32,108,332
+32,198,758
+32,147,307
+33,171,519
+33,137,203
+33,183,353
+34,181,805
+34,153,262
+35,113,376
+36,185,474
+36,121,849
+36,129,137
+37,197,376
+37,129,708
+37,127,978
+38,103,646
+38,163,148
+38,116,271
+39,136,379
+40,198,799
+40,196,215
+40,162,352
+41,117,892
+41,194,665
+41,157,422
+42,122,738
+42,126,589
+43,147,138
+43,192,781
+43,125,966
+44,106,924
+44,135,784
+45,175,982
+45,186,242
+46,150,764
+46,157,674
+47,151,781
+48,107,152
+49,195,983
+50,129,758
+51,154,445
+51,200,573
+52,108,740
+52,157,733
+52,100,850
+53,100,371
+54,121,960
+55,128,319
+56,161,552
+56,175,317
+57,193,456
+58,109,861
+58,118,541
+58,195,868
+59,101,596
+59,191,995
+59,131,574
+60,150,526
+61,132,267
+62,145,997
+62,134,826
+62,180,189
+63,133,214
+63,106,295
+64,135,493
+65,148,198
+65,135,195
+65,123,762
+66,112,378
+66,188,966
+66,129,372
+67,185,496
+68,175,364
+68,170,895
+68,177,834
+69,184,583
+69,152,250
+69,115,668
+70,104,262
+70,186,832
+71,106,273
+72,149,894
+73,182,747
+73,164,441
+74,103,903
+75,138,190
+75,173,957
+76,157,759
+76,191,555
+77,176,447
+77,161,604
+77,162,607
+78,137,216
+79,160,914
+80,174,863
+81,119,540
+81,117,146
+81,148,625
+82,156,111
+82,173,835
+82,115,457
+83,107,797
+83,159,277
+84,162,244
+84,172,823
+84,176,831
+85,105,693
+85,168,914
+85,124,549
+86,164,245
+87,158,894
+87,148,560
+88,100,504
+88,154,617
+88,191,808
+89,173,557
+90,176,871
+91,171,650
+91,125,349
+91,133,537
+92,153,335
+93,156,500
+93,146,306
+93,200,952
+94,163,863
+94,197,905
+95,150,546
+95,197,407
+95,137,580
+96,155,500
+96,173,884
+97,165,304
+98,122,282
+98,179,194
+98,174,473
+99,126,192
+99,131,160
+99,150,502
+100,160,633
+100,120,937
+101,145,645
+101,148,177
+102,146,220
+103,180,125
+104,151,818
+104,146,738
+104,155,825
+105,125,625
+105,158,411
+106,114,291
+106,188,730
+106,200,127
+107,189,225
+107,143,636
diff --git a/测试数据 products_materials_equipment.csv b/测试数据 products_materials_equipment.csv
index 0e5ae40..0a4cf90 100644
--- a/测试数据 products_materials_equipment.csv
+++ b/测试数据 products_materials_equipment.csv
@@ -49,17 +49,17 @@
48,材料
49,材料
50,材料
-51,材料
-52,材料
-53,材料
-54,材料
-55,材料
-56,材料
-57,材料
-58,材料
-59,材料
-60,材料
-61,材料
+51,设备
+52,设备
+53,设备
+54,设备
+55,设备
+56,设备
+57,设备
+58,设备
+59,设备
+60,设备
+61,设备
62,设备
63,设备
64,设备
@@ -99,3 +99,9 @@
98,设备
99,设备
100,设备
+101,设备
+102,设备
+103,设备
+104,设备
+105,设备
+106,设备
diff --git a/测试数据 产品通编码.py b/测试数据 产品通编码.py
index d7a4b31..16f4b89 100644
--- a/测试数据 产品通编码.py
+++ b/测试数据 产品通编码.py
@@ -2,13 +2,13 @@ import pandas as pd
import numpy as np
# 设置数据行数
-total_rows = 100 # 总共100行
-material_count = 61 # 前61行为材料
+total_rows = 106 # 总共100行
+material_count = 50 # 前61行为材料
# 生成产品id
product_ids = np.arange(1, total_rows + 1)
-# 生成种类,前61行是材料,后面是设备
+# 生成种类,前70行是材料,后面是设备
categories = ['材料'] * material_count + ['设备'] * (total_rows - material_count)
# 创建数据框
diff --git a/测试数据 材料设备产品.py b/测试数据 材料设备产品.py
index 1172cbf..93a20ca 100644
--- a/测试数据 材料设备产品.py
+++ b/测试数据 材料设备产品.py
@@ -5,7 +5,7 @@ import numpy as np
np.random.seed(42)
# 定义生成数据的行数
-num_rows = 100 # 生成 100 行数据
+num_rows = 170 # 生成 100 行数据
# 创建空列表来存储生成的ID
material_ids = []
@@ -14,12 +14,12 @@ product_ids = []
# 生成材料、设备、产品的ID,确保同一行内的ID不重复
for _ in range(num_rows):
- mat_id = np.random.randint(0, 100) # 材料ID范围 0-99
- dev_id = np.random.randint(100, 201) # 设备ID范围 100-199
+ mat_id = np.random.randint(1, 51) # 材料ID范围 0-99
+ dev_id = np.random.randint(51, 107) # 设备ID范围 100-199
# 确保产品ID在当前行与材料ID和设备ID不重复
while True:
- prod_id = np.random.randint(0, 201)
+ prod_id = np.random.randint(0, 107)
if prod_id != mat_id and prod_id != dev_id:
break
diff --git a/测试数据 设备id和设备残值.py b/测试数据 设备id和设备残值.py
index cb313e3..146515a 100644
--- a/测试数据 设备id和设备残值.py
+++ b/测试数据 设备id和设备残值.py
@@ -5,10 +5,10 @@ import numpy as np
np.random.seed(42)
# 定义行数,即生成多少个设备
-num_rows = 10
+num_rows = 56
# 生成设备id(例如100到200之间的设备ID)
-device_ids = np.random.randint(100, 200, size=num_rows)
+device_ids = (i for i in range(51, 107))
# 生成设备残值,假设范围在1000到10000之间
device_salvage_values = np.random.randint(10, 1000, size=num_rows)
@@ -22,4 +22,3 @@ df_devices = pd.DataFrame({
# 保存为CSV文件
file_path_devices = '测试数据 device_salvage_values.csv'
df_devices.to_csv(file_path_devices, index=False)
-