set to list
This commit is contained in:
parent
6d06bff9ec
commit
49d3c6791e
Binary file not shown.
Binary file not shown.
|
@ -76,7 +76,8 @@ class ControllerDB:
|
||||||
# list_dct = [{'2': ['1.1.3']}]
|
# list_dct = [{'2': ['1.1.3']}]
|
||||||
# list_dct = [{'135': ['1.3.2.1']}]
|
# list_dct = [{'135': ['1.3.2.1']}]
|
||||||
# list_dct = [{'79': ['2.1.3.4']}]
|
# list_dct = [{'79': ['2.1.3.4']}]
|
||||||
list_dct = [{'99': ['1.3.3']}]
|
# list_dct = [{'99': ['1.3.3']}]
|
||||||
|
list_dct = [{'41': ['1.4.5']}]
|
||||||
|
|
||||||
# fill g_bom
|
# fill g_bom
|
||||||
BomNodes = pd.read_csv('BomNodes.csv', index_col=0)
|
BomNodes = pd.read_csv('BomNodes.csv', index_col=0)
|
||||||
|
|
25
model.py
25
model.py
|
@ -71,14 +71,13 @@ class Model(ap.Model):
|
||||||
for product_code in G_Firm.nodes[node]['Product_Code']:
|
for product_code in G_Firm.nodes[node]['Product_Code']:
|
||||||
lst_pred_product_code += list(G_bom.predecessors(product_code))
|
lst_pred_product_code += list(G_bom.predecessors(product_code))
|
||||||
lst_pred_product_code = list(set(lst_pred_product_code))
|
lst_pred_product_code = list(set(lst_pred_product_code))
|
||||||
|
# to generate consistant graph
|
||||||
lst_pred_product_code = list(sorted(lst_pred_product_code))
|
lst_pred_product_code = list(sorted(lst_pred_product_code))
|
||||||
# print(lst_pred_product_code)
|
|
||||||
for pred_product_code in lst_pred_product_code:
|
for pred_product_code in lst_pred_product_code:
|
||||||
# for each product predecessor (component) the firm need
|
# for each product predecessor (component) the firm need
|
||||||
# get a list of firm producing this component
|
# get a list of firm producing this component
|
||||||
lst_pred_firm = \
|
lst_pred_firm = \
|
||||||
Firm['Code'][Firm[pred_product_code] == 1].to_list()
|
Firm['Code'][Firm[pred_product_code] == 1].to_list()
|
||||||
print(lst_pred_firm)
|
|
||||||
lst_pred_firm_size_damp = \
|
lst_pred_firm_size_damp = \
|
||||||
[G_Firm.nodes[pred_firm]['Revenue_Log'] **
|
[G_Firm.nodes[pred_firm]['Revenue_Log'] **
|
||||||
self.flt_netw_sply_prf_size
|
self.flt_netw_sply_prf_size
|
||||||
|
@ -100,21 +99,21 @@ class Model(ap.Model):
|
||||||
# graph firm prod
|
# graph firm prod
|
||||||
set_node_prod_code = set(G_Firm.nodes[node]['Product_Code'])
|
set_node_prod_code = set(G_Firm.nodes[node]['Product_Code'])
|
||||||
set_pred_succ_code = set(G_bom.successors(pred_product_code))
|
set_pred_succ_code = set(G_bom.successors(pred_product_code))
|
||||||
set_use_pred_prod_code = \
|
lst_use_pred_prod_code = list(
|
||||||
set_node_prod_code & set_pred_succ_code
|
set_node_prod_code & set_pred_succ_code)
|
||||||
for pred_firm in lst_choose_firm:
|
for pred_firm in lst_choose_firm:
|
||||||
pred_node = [n for n, v in G_FirmProd.nodes(data=True)
|
pred_node = [n for n, v in G_FirmProd.nodes(data=True)
|
||||||
if v['Firm_Code'] == pred_firm and
|
if v['Firm_Code'] == pred_firm and
|
||||||
v['Product_Code'] == pred_product_code][0]
|
v['Product_Code'] == pred_product_code][0]
|
||||||
for use_pred_prod_code in set_use_pred_prod_code:
|
for use_pred_prod_code in lst_use_pred_prod_code:
|
||||||
current_node = \
|
current_node = \
|
||||||
[n for n, v in G_FirmProd.nodes(data=True)
|
[n for n, v in G_FirmProd.nodes(data=True)
|
||||||
if v['Firm_Code'] == node and
|
if v['Firm_Code'] == node and
|
||||||
v['Product_Code'] == use_pred_prod_code][0]
|
v['Product_Code'] == use_pred_prod_code][0]
|
||||||
G_FirmProd.add_edge(pred_node, current_node)
|
G_FirmProd.add_edge(pred_node, current_node)
|
||||||
|
|
||||||
nx.to_pandas_adjacency(G_Firm).to_csv('adj_g_firm.csv')
|
# nx.to_pandas_adjacency(G_Firm).to_csv('adj_g_firm.csv')
|
||||||
nx.to_pandas_adjacency(G_FirmProd).to_csv('adj_g_firm_prod.csv')
|
# nx.to_pandas_adjacency(G_FirmProd).to_csv('adj_g_firm_prod.csv')
|
||||||
# unconnected node
|
# unconnected node
|
||||||
# for node in nx.nodes(G_Firm):
|
# for node in nx.nodes(G_Firm):
|
||||||
# if node.
|
# if node.
|
||||||
|
@ -284,17 +283,17 @@ class Model(ap.Model):
|
||||||
'Product': di_supp_prod.code
|
'Product': di_supp_prod.code
|
||||||
})
|
})
|
||||||
])
|
])
|
||||||
print(f"proactive add {select_cand.code} to "
|
# print(f"proactive add {select_cand.code} to "
|
||||||
f"{pro_firm.code} "
|
# f"{pro_firm.code} "
|
||||||
f"for {di_supp_node['Firm_Code']} "
|
# f"for {di_supp_node['Firm_Code']} "
|
||||||
f"{di_supp_node['Product_Code']}")
|
# f"{di_supp_node['Product_Code']}")
|
||||||
# change capacity
|
# change capacity
|
||||||
select_cand.dct_prod_capacity[di_supp_prod] -= 1
|
select_cand.dct_prod_capacity[di_supp_prod] -= 1
|
||||||
break
|
break
|
||||||
|
|
||||||
nx.to_pandas_adjacency(G_Firm).to_csv('adj_g_firm_proactive.csv')
|
# nx.to_pandas_adjacency(G_Firm).to_csv('adj_g_firm_proactive.csv')
|
||||||
# draw network
|
# draw network
|
||||||
# self.draw_network()
|
self.draw_network()
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
self.a_lst_total_firms.clean_before_time_step()
|
self.a_lst_total_firms.clean_before_time_step()
|
||||||
|
|
BIN
network.png
BIN
network.png
Binary file not shown.
Before Width: | Height: | Size: 961 KiB After Width: | Height: | Size: 2.4 MiB |
Loading…
Reference in New Issue