handling request based on connection
This commit is contained in:
40
firm.py
40
firm.py
@@ -107,15 +107,37 @@ class FirmAgent(ap.Agent):
|
||||
self.accept_request(lst_firm[0], product)
|
||||
elif len(lst_firm) > 1:
|
||||
# handling based on connection
|
||||
# TBC
|
||||
# handling based on size
|
||||
lst_firm_size = [firm.revenue_log for firm in lst_firm]
|
||||
lst_prob = [
|
||||
size / sum(lst_firm_size) for size in lst_firm_size
|
||||
]
|
||||
select_customer = self.model.nprandom.choice(lst_firm,
|
||||
p=lst_prob)
|
||||
self.accept_request(select_customer, product)
|
||||
lst_firm_connect = []
|
||||
for firm in lst_firm:
|
||||
out_edges = self.model.firm_network.graph.out_edges(
|
||||
self.model.firm_network.positions[firm], keys=True)
|
||||
in_edges = self.model.firm_network.graph.in_edges(
|
||||
self.model.firm_network.positions[firm], keys=True)
|
||||
lst_adj_firm = []
|
||||
lst_adj_firm += [ap.AgentIter(self.model, edge[1]).to_list()[0].code for edge in out_edges]
|
||||
lst_adj_firm += [ap.AgentIter(self.model, edge[0]).to_list()[0].code for edge in in_edges]
|
||||
if self.code in lst_adj_firm:
|
||||
lst_firm_connect += firm
|
||||
if len(lst_firm_connect) == 0:
|
||||
# handling based on size
|
||||
lst_firm_size = [firm.revenue_log for firm in lst_firm]
|
||||
lst_prob = [
|
||||
size / sum(lst_firm_size) for size in lst_firm_size
|
||||
]
|
||||
select_customer = self.model.nprandom.choice(lst_firm,
|
||||
p=lst_prob)
|
||||
self.accept_request(select_customer, product)
|
||||
elif len(lst_firm_connect) == 1:
|
||||
self.accept_request(lst_firm_connect[0], product)
|
||||
elif len(lst_firm_connect) > 1:
|
||||
# handling based on size of firm that has connection
|
||||
lst_firm_size = [firm.revenue_log for firm in lst_firm_connect]
|
||||
lst_prob = [
|
||||
size / sum(lst_firm_size) for size in lst_firm_size
|
||||
]
|
||||
select_customer = self.model.nprandom.choice(lst_firm_connect,
|
||||
p=lst_prob)
|
||||
self.accept_request(select_customer, product)
|
||||
|
||||
def accept_request(self, down_firm, product):
|
||||
lst_firm_size = [
|
||||
|
||||
Reference in New Issue
Block a user