kNa)Ivf_6$sURX8U#J2pda880xdvVlG*x@vt)TP_p_i6vJaRg
zC2W;MS()fOk2=A{V!D5auPo*6Z06~2k&j`EBXVy`^+QsIFk%Wneo=Gy{W+5(uUm2w^Q9Ttj
z0HQ>BEV6fviA=l9oDknTkn{0)B_y-}N(S_~QAEyqEorRY@Fr00rTufLpvH(NZUU&g>;m>wv<5#^Y#7nLmYA2J{Uy
z8Cc5f7tiQtj39Zz)U}mED>)|vhbOywcljR2DT{?!J_2jjbz5a_t5-f!^`LXwt+IdA
z9oi)Ke&FHqK>mA2YaOpF%rUkB1I`~xdwPe5rz8G4qXovXq_P72lWWpm=;C6;R$(OD
zDd@vg%o^amsg4?2tUgRw$6cdgNPhCANdEIAr%3WA_4I42?;eoQRSoG8ejAQ5wjS~u
zCE2?5fP|pC>d;{zAxMm9Jz%g0(e|PtB40fji$=m2Yh2hugU{meI1$Cg
z1_*}wa~3TGqebdZAJX!aeoZ`kgh)L!Vc-Jp64vx;JEwMbhKok0vDdTU7ezknyRw^}2Be7xmq^bT_o?LmClZIrQSiQ6SfZOP}s=NdTnf?ylETA+NcKD!R
z3LdkkEBALpXqFviMbGW)HrPdm
zMVS2ta##?FG%R&N%|h)2ZJo>(f%8o?8(ZH3c2VsfPeWWdan36rk)GGTTOA?MPr#N`<+_u2PKLiOk|s!H+WC+TKz1
zM0U-`koy`QkFr{W8C@hN>f6A7*6_VL|EBkHY^%tHe1r?1*=XN9a8_)azIg^-vqM76
z(GrMl9eA-~1(jj9L^cCFXt7+Zx-Q;q#DySYSUa>olKoW7%kZ4Rm9LyloKC=UNyYtM
z&*J&Yn8ovoSUhR=8?$&OWTcH2PX-oGc7w%}adIOTPhLj5g2f{eP^_97m*2--wIR?OCJ8mNO7!<;Ly0V#HXUxhBd*QvsnS`_{uD-pz
zKMKc{N5XMsQj3S!&QR2>i5Rlr8`w_2ARj{P2!)>JOv0T*4f`DwjWOPuopjZx;uQso
z`UFNABhN8OLSO&QS$~QyBJDh3%YiH#xAR11`~^X$7NSf{zcx1aTe8#?g9NIB1c(w#
zX+q|vMo=E>#&Py{C>mNN8>W5p=9!|$qmCmP7-hq0uVj?{{phs!sgvv+AlU!`ak9Y@
zgSoAbTVkrm5oBpEGWVOq&mndEGm5Uf(y`6`1<4a?;?tb_g^d9GD*+hQdkgck>x{rK
z=^(J}x{+%-vUj^GWm6m5Ru)QVo9pcux^ca#n4;B
zmF&|y(d1irynB&oFzSjh_#y>Ugo>Fp*BgB~D4(=hGWbp!IdhR_8B9SQq|%H#e1ewIS(X}z%pjF>ODH49VmKDAc2t7^D!&o9rP+rV
zP8|W&xIP)MrG=I$$tCti7NvQPfY?#t0*=7}J5N|A*Olc_
zR$NzB@TcOH;XD-U!%1i`0h2ZpWP@Cg4+>84T(*bMG1fUL>wM9f;(6uj-tvRPW2bU-
zbW_IBm)N;5Z=1AvY34>JFXhKXUP}NuOgzZQqy&Cn`Oeo~`S$02^tE$8`sR0|gG+0H
z=arV4#2%{yNW$s(^e8^Yi;j@SOCzc6I%AYVnLHGZ+wmd#V1`a&ooj{bFcuGR(BvYH
z^t-Lv3PRU7@QQXsfpjY^#xDhX_4aQe)~NbZ3Y`95=WM
zm3G(1aZ5PqxJ{t5veK=#{F;AKJ%EPd;LlIkS)Py}8qQd|omFwHz0qC{Ct4MErCY;M
zTbQrP0d73B`YQYXHfPfhhWaC+zJFo9BnLARDiBmh@#W<4YNN{-aE)>B{5aa9&jG#_
zMP)caYgpD8Nvb`Z>cgy=q)G#z@tNR3iKznRZDGV@Qj2zxnby@6RI}!}r^T#1!l5P0U65aS&GQYa@s$?-n
zvs^SEk#65ZrUqjed@H9EkZungGR|snV|mB}i6>G8rZHSxn8@mO_<*>j(SldlGf(Rh
zCa%Sx)ng)P%h&9k+N)J2_`G#p}%reBH|MZV+$NJl&I3yA~$5pQRg)>
z75ZosGoq?8ud8Ettuv9zPy|CR%xJ5(T>;%AhsjrDMcT!03Dyn4#6IDRgocnK%&cr2
zY2lrPbujN<2Xp$7ND7o!^Dy6i8tzm8~D7Pi(_jIK`mSc&{wAhOBqVRF(R5kQyRzu{qG|)
zIE{jn%L8U`OV5y;oZd^$k|SW)9~IO!E&P9hrpbeT{1Kh*Q1mehl?rXr-<09ni>76^>kw
z85KrRN3jY7%J`)GrROd^{bz3pO7%U=tNxP7Ix7BalsyQ@)ZZW@c!3dybN3i8(Z~M*
zFRwr2`v)_^g}H}N-HQZ*O9*4#o`#90tCn5$INLqJgyA~%$4veRN$dsTb|f!$9gN@m
z-<2u|ciR&_P9nKBGstEle
zO$ftg7rIwqu=v{58}Mtyek0<3$Xt<`4ho^?b@}BpKYsetLuR6Yi;8fYV{GL>=<9OQ
z>r>3*1BzKw=2yE$wvmGb&`W1te)Z}8kh%$IRP_G~=!XV?;=aT^m?OHku|~X%rK_(a
z8JtQF3)Yk2yV2+%M)RhT5i*R)Z$Nmf@HUJ>*(jv>hlkX#@upXxHDttvu@UbY
z84)*x<9YVLx*W{Id&79>tEvDa;@CU7nzRzEEUi3&V{iE0r{K@y*u2zB!vDrRy!qy&
zpvR&)zuMz*Iz03GU?oqE%p0%7fmbYd;<%C@j?N!Lbz^U0v^1CiRCvzoUMb-HjtQ<5
zq1n>P5B&^+%4s={PvZ_Va!&e~bzWD8oD85!1G7br*3S=neR$;`gA`gkEn|FtZ5{C%
zw!;d*<*j;QIM#XepX9w@%y~X;RUmfz#kln4l|O`6kinD1`g3^lcnWxU#S8m;-Z=aN
z*^enebXTt!6y?UYUN0Tf0n2}4zD-fttk#e1I@ez8&B|J5c?%LV{sd2m=gW9r46^a;AII!lxjyvxNN+CK+TR+?t()Cc_XU$9
zvro!?ndePa4kpp>-rhCAHMoI3C(z;cc^!OG-*$?}7CSNiw%)bDwXzG_?7`~*RMs-+j={K9rf+V?e3L>ve5E%c;kL&Z)dO_@LU({jPQz{
z-^TM&z}9#6c3}i!;O5@$V7Kh;E~du}K>Smb@CN@brn4Hq1d5-c|7FaMd+i%$-xKVS
z*>Av`v)>q8kJ)bsZj5KQR&GCUt=t@3FSE~MgdH;bO~Fkv`+PjRrCKQA?DO&L_`>Yg
zN(+wzDlg03c)fpJ{N5Q;{pA2!lv3yp=#+{n$}YE{UWRyk^)>vdKVc5S6Jb+N{3W}{
zQ@GK)>yO1DCVEHry-Fi*eploKd>eW7r%dP+*`@eKJ5T3%{duwL*~P&~_z)*6OyE*C
z%oIkW6$gvFDv1a`&CgRv>`C0OKUS&YCb-w-bv=8I&YD7$#+6$UaN2nKA056Ijw0sM
zU}#6G?b2eyt+pyh+@-bxAhfk5ieZ~xMcL+~6(ykz^;ewk8BRAX(+w2;V9qV^xWn?n
z1e@dLi$`lM7dI?p7-xs=2NiLL&|Ix`LSz4}HZFeRR%WH9Bm%>zianv+B^bCzVUi8A
z``5CM%)c%2t*U4oTC_HJZMf=pz0mMII~6;xcB&OE)z0Gw1kpWtt~`!x6P@gfZH^GS
zrGpFSM{#Fp=#L08J$rVfVz3VJZ|(dL5e!Dzg=Te7FW+03R>m>Oj`r+m#h{DSq`mGD
z{89sh%@I{K-WeKBG6>??*NoH+x(_R-hV40G1jB)BBK5rf1SQ#dh6`ngYJ3ITdy;-l{#*QE9ICUOQ{7RZM)M;><+G$b;2~%g;?2Mgt?6q@e
zY$ayRmNe8hjRWYQ7E(%W=*tpCsw{*EMTkFC!qy<{7&nXtby?OVSH}3uF>fdg@efRq7cb|VB4g{~EkRJqF69vX@@G&!!cG45$
zlZQtj7<#hKl_yPC=T^#0rtN80OWDrlN#sAA85_%{crTm}O|nk76FLzWT>9`VE@a$;
zy_3)t9*D}=Q?ZfesPT<(YuB7K%uLnvUDfBMQQuMN1vbkZZONaLMwJ{}mYF1MqV@Bm
zxQRbWa0CHf3Lb112YrP|Pa&)@ewO+LC3rs$9c;FSph+@*GY8?r=ne=cLU210*l+0k
zB<*>I;1odv!PgL6UnXl>mv|WwzK&qX;wlDVB3jlc4*3R62_5%hZw#9qMUdnmi^)+1
z{uDhPuVo~|5}Q{>J7lUsJh&xD;5HW)-9bXVskQ
zgmTIY?1IW)_Ik4_&V>12=9CA9%PC~G1xc7v^GqoW>BE(g(P&P|sir^YGxbGvR?Egb
zYQiI%fkkCjn`3kGuxtiRAE?EKFN9tghPL9K=rPoWKaTJ*sv$vjVQ14l$!k|+
z-bf1uz5WUOaRZawGLyp@K8}lo>lW?0-JuX1DXE0N
zmNXa9rWNKY_S86@asoLZTtNYL@)IM2IoTC(Nm|
zlT0INgJ010A7U#A&~KD@_e`32I-P-gvBt=AIClNcM3MxDvTdi)#YeYgo9IA8<>R#6
zCLlNS)D`~FhQmwnzis7mwX#|kZ(}N167u0vxK+`9096v6EX*rZRk*Mo%erhD9c{S4
zQ>Z3*lGMxaVd?3RtC}e%#l@9)EIYctO*_QmE7(I8B$gYSvaMvn6rX2@H{iWQJTy(a
zy}N|liPGjXG^S8+^^|EQEpx;&0-k>B>gFL-HuS(0g1j#F95E1L=dgDJ7R#*oiw}pw
z)1Z|%u|{~bygPqyfgDyh{c8c?!+_AgARyk^6cG1BKm<(ns=g^8f<&2@9twyM21Iyc
zK*U8rgv`i>fQZ7s%6G6LsIJ(_YN5BH)mMz6Q35j+of|K-qh+)8@p^?hX2}SfFYsMx
zsXQM24oy&4@pA}kVO75;O%xLW8F;~DPo>i$nD_|IZRYhG_9sRZ=zgbOmvPInCmIx`o
zAl5#>RpN!xB#nio@Mrx-`IdNdHPag5mgVJN;eOjmnt1|>LVih->LtF5x|azO1T6$J
z1m7fBfW0-{n#eleg~^)EI(HO4`BGa6IjF1lr^YRV@gf}H
zds_+1b=wc%n6eh;=D<`ob8*T_W=wPh;jX^ah?RA4N=-Qq-{P$w!GG!w!J+!bQrDlx
zoRmph{0ZbFUJ^rt@%pNKB$XVq9h?+to8O@69}~Qa&~F5J6%7UnbObj*$w?f_D~Q-k
zAiSlQrX%zWCAno!OmRHTkF>QcHt0`{B*jDFe{k4OBrG+y9O<&tgF(T>J4D3RD|CqP
zjCSn(8JqnGf+QzcjD^(%i_69IDPdV=SaUE9KkU)>Z!NG|*U--P2~P9|t=WzbQ6G&e
zPWznq>Qf1>H0HgMXXC!ty?vpLb`#8ngy(VgzY=sbb@{QLajbD0?53`!r;*IRN>EMP
z{a#_?bCPD-8T63|HXnl9P36sK6^YXsUcktFnfgB?5C?Q%?-L24&F}6O{ODT5HK1N1
zm|iA=5NKVh*N_&4zc=qWMHK)wswV8i2vjPWY#FP-5eWl^Ey*SZjH#IF2$e>PNx>oE
zJO>@TbI8^^|*&s6^mNf-P$9M_L@;Je#U~i3OR;
zsu})MaKB||5s}Crh2kz-eY5ozYtEr9Mp4yHtcj9}P$<;Te~!yO{tW;48`$ILV49IY)x!_
zIDX&S8|ehys;ouSk%En(DNl1`3NJS@1TCVRDNXH!A)z^M=Epy~-3zPFF}+Lrk+cS0
zOj)*igZ*$2VdBLej#x+%pOXK#emLaGfRbh|Z6VjmjQBpH`wSXp`SchaRSjrtNkCB@
z%|r!cAxky&^a(v%a6LiHP7l;Z1sqlu$O`SC&trJH_ApO;pK=~DUU}4}Et#+k2`d5vq?{h3{n+
zU=sj6uo}Px$f|X)`vJ%FA;BoHLAi#JgmKB`83Jj(Q)8wXr
dh3s1hfM~;xG7bXI(&zg5XL5-bWEEm4HwQReM_+Ne_&RB(
z)}0lhQB;#>=pu};!h+=!)vRXOW5sBe@`l#(y8J*l0a!&{gJly(_U#up(0qxwCqM1u
z4iubdP~KIZi87f_i@~1!wQmRe(1O7fDfm3Cl9I*`Y*q?wZbHv^+rUhKA5&2!2@_(@
zg)g6+)wxmZfMQp}5-GpnEM*(bIsm- 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)
-