diff --git a/__pycache__/controller_db.cpython-38.pyc b/__pycache__/controller_db.cpython-38.pyc index 1996abc..eff0ada 100644 Binary files a/__pycache__/controller_db.cpython-38.pyc and b/__pycache__/controller_db.cpython-38.pyc differ diff --git a/__pycache__/model.cpython-38.pyc b/__pycache__/model.cpython-38.pyc index 3710db0..da5cc09 100644 Binary files a/__pycache__/model.cpython-38.pyc and b/__pycache__/model.cpython-38.pyc differ diff --git a/controller_db.py b/controller_db.py index 3baad32..e96ccfd 100644 --- a/controller_db.py +++ b/controller_db.py @@ -76,7 +76,8 @@ class ControllerDB: # list_dct = [{'2': ['1.1.3']}] # list_dct = [{'135': ['1.3.2.1']}] # 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 BomNodes = pd.read_csv('BomNodes.csv', index_col=0) diff --git a/model.py b/model.py index 8ff2bb4..dd600ea 100644 --- a/model.py +++ b/model.py @@ -71,14 +71,13 @@ class Model(ap.Model): for product_code in G_Firm.nodes[node]['Product_Code']: lst_pred_product_code += list(G_bom.predecessors(product_code)) lst_pred_product_code = list(set(lst_pred_product_code)) + # to generate consistant graph lst_pred_product_code = list(sorted(lst_pred_product_code)) - # print(lst_pred_product_code) for pred_product_code in lst_pred_product_code: # for each product predecessor (component) the firm need # get a list of firm producing this component lst_pred_firm = \ Firm['Code'][Firm[pred_product_code] == 1].to_list() - print(lst_pred_firm) lst_pred_firm_size_damp = \ [G_Firm.nodes[pred_firm]['Revenue_Log'] ** self.flt_netw_sply_prf_size @@ -100,21 +99,21 @@ class Model(ap.Model): # graph firm prod set_node_prod_code = set(G_Firm.nodes[node]['Product_Code']) set_pred_succ_code = set(G_bom.successors(pred_product_code)) - set_use_pred_prod_code = \ - set_node_prod_code & set_pred_succ_code + lst_use_pred_prod_code = list( + set_node_prod_code & set_pred_succ_code) for pred_firm in lst_choose_firm: pred_node = [n for n, v in G_FirmProd.nodes(data=True) if v['Firm_Code'] == pred_firm and v['Product_Code'] == pred_product_code][0] - for use_pred_prod_code in set_use_pred_prod_code: + for use_pred_prod_code in lst_use_pred_prod_code: current_node = \ [n for n, v in G_FirmProd.nodes(data=True) if v['Firm_Code'] == node and v['Product_Code'] == use_pred_prod_code][0] G_FirmProd.add_edge(pred_node, current_node) - nx.to_pandas_adjacency(G_Firm).to_csv('adj_g_firm.csv') - nx.to_pandas_adjacency(G_FirmProd).to_csv('adj_g_firm_prod.csv') + # 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') # unconnected node # for node in nx.nodes(G_Firm): # if node. @@ -284,17 +283,17 @@ class Model(ap.Model): 'Product': di_supp_prod.code }) ]) - print(f"proactive add {select_cand.code} to " - f"{pro_firm.code} " - f"for {di_supp_node['Firm_Code']} " - f"{di_supp_node['Product_Code']}") + # print(f"proactive add {select_cand.code} to " + # f"{pro_firm.code} " + # f"for {di_supp_node['Firm_Code']} " + # f"{di_supp_node['Product_Code']}") # change capacity select_cand.dct_prod_capacity[di_supp_prod] -= 1 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 - # self.draw_network() + self.draw_network() def update(self): self.a_lst_total_firms.clean_before_time_step() diff --git a/network.png b/network.png index 8064d4a..051c121 100644 Binary files a/network.png and b/network.png differ