add comments

This commit is contained in:
2023-08-22 23:22:30 -04:00
parent 1d66d8bb4e
commit b84ab810d0
3 changed files with 31 additions and 28 deletions

View File

@@ -10,7 +10,7 @@ import json
class Model(ap.Model):
def setup(self):
# self para
# self parameter
self.sample = self.p.sample
self.int_stop_ts = 0
self.int_n_iter = int(self.p.n_iter)
@@ -27,11 +27,11 @@ class Model(ap.Model):
self.remove_t = int(self.p.remove_t)
self.int_netw_prf_n = int(self.p.netw_prf_n)
# init graph bom
# initialize graph bom
G_bom = nx.adjacency_graph(json.loads(self.p.g_bom))
self.product_network = ap.Network(self, G_bom)
# init graph firm
# initialize graph firm
Firm = pd.read_csv("Firm_amended.csv")
Firm['Code'] = Firm['Code'].astype('string')
Firm.fillna(0, inplace=True)
@@ -49,7 +49,7 @@ class Model(ap.Model):
firm_labels_dict[code] = Firm_attr.loc[code].to_dict()
nx.set_node_attributes(G_Firm, firm_labels_dict)
# init graph firm prod
# initialize graph firm prod
Firm_Prod = pd.read_csv("Firm_amended.csv")
Firm_Prod.fillna(0, inplace=True)
firm_prod = pd.DataFrame({'bool': Firm_Prod.loc[:, '1':].stack()})
@@ -122,11 +122,12 @@ class Model(ap.Model):
# 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
# connect unconnected nodes
for node in nx.nodes(G_Firm):
if G_Firm.degree(node) == 0:
for product_code in G_Firm.nodes[node]['Product_Code']:
# unconnect node does not have possible suppliers
# unconnected node does not have possible suppliers,
# therefore find possible customer instead
# current node in graph firm prod
current_node = \
[n for n, v in G_FirmProd.nodes(data=True)
@@ -135,10 +136,10 @@ class Model(ap.Model):
lst_succ_product_code = list(
G_bom.successors(product_code))
# different from for different types of product,
# different from: for different types of product,
# finding a common supplier (the logic above),
# for different types of product,
# finding a custormer for each product
# instead: for different types of product,
# finding a customer for each product
for succ_product_code in lst_succ_product_code:
# for each product successor (finished product)
# the firm sells to,
@@ -187,14 +188,14 @@ class Model(ap.Model):
# nx.draw(G_FirmProd)
# plt.show()
# init product
# initialize product
for ag_node, attr in self.product_network.graph.nodes(data=True):
product = ProductAgent(self, code=ag_node.label, name=attr['Name'])
self.product_network.add_agents([product], [ag_node])
self.a_lst_total_products = ap.AgentList(self,
self.product_network.agents)
# init firm
# initialize firm
for ag_node, attr in self.firm_network.graph.nodes(data=True):
firm_agent = FirmAgent(
self,
@@ -210,7 +211,7 @@ class Model(ap.Model):
self.firm_network.add_agents([firm_agent], [ag_node])
self.a_lst_total_firms = ap.AgentList(self, self.firm_network.agents)
# init dct_lst_init_disrupt_firm_prod (from string to agent)
# initialize dct_lst_init_disrupt_firm_prod (from string to agent)
t_dct = {}
for firm_code, lst_product in \
self.dct_lst_init_disrupt_firm_prod.items():
@@ -368,7 +369,7 @@ class Model(ap.Model):
firm.dct_prod_up_prod_stat[
prod]['p_stat'].append(('R', self.t))
# stop simulation if any firm still in disrupted except inital removal
# stop simulation if any firm still in disrupted except initial removal
if self.t > 0:
for firm in self.a_lst_total_firms:
for prod in firm.dct_prod_up_prod_stat.keys():
@@ -443,8 +444,6 @@ class Model(ap.Model):
# reset dct_request_prod_from_firm
self.a_lst_total_firms.clean_before_trial()
# do not use:
# self.a_lst_total_firms.dct_request_prod_from_firm = {} why?
def end(self):
# print('/' * 20, 'output', '/' * 20)