test
This commit is contained in:
53
firm.py
53
firm.py
@@ -55,14 +55,12 @@ class FirmAgent(ap.Agent):
|
||||
extra_cap = self.model.nprandom.integers(extra_cap_mean-2,
|
||||
extra_cap_mean+2)
|
||||
extra_cap = 0 if round(extra_cap) < 0 else round(extra_cap)
|
||||
# print(firm_agent.name, extra_cap)
|
||||
self.dct_prod_capacity[product] = extra_cap
|
||||
elif self.str_cap_limit_prob_type == 'normal':
|
||||
extra_cap_mean = \
|
||||
self.size_stat[0][0] / self.flt_cap_limit_level
|
||||
extra_cap = self.model.nprandom.normal(extra_cap_mean, 1)
|
||||
extra_cap = 0 if round(extra_cap) < 0 else round(extra_cap)
|
||||
# print(firm_agent.name, extra_cap)
|
||||
self.dct_prod_capacity[product] = extra_cap
|
||||
|
||||
def remove_edge_to_cus(self, disrupted_prod):
|
||||
@@ -84,6 +82,8 @@ class FirmAgent(ap.Agent):
|
||||
customer.dct_prod_up_prod_stat[
|
||||
prod]['s_stat'][disrupted_prod][
|
||||
'lst_disrupt_firm'].append(self)
|
||||
print(f"{self.name} disrupt {customer.name}'s "
|
||||
f"{prod.code} due to {disrupted_prod.code}")
|
||||
# remove edge to customer
|
||||
self.firm_network.graph.remove_edge(n1, n2, key)
|
||||
|
||||
@@ -117,10 +117,11 @@ class FirmAgent(ap.Agent):
|
||||
if status != 'D':
|
||||
self.dct_prod_up_prod_stat[
|
||||
prod]['p_stat'].append(('D', self.model.t))
|
||||
print(f"{self.name}'s {prod.code} turn to D status")
|
||||
|
||||
def seek_alt_supply(self, product):
|
||||
# para product is the product that self is seeking
|
||||
# print(f"{self.name} seek alt supply for {product.code}")
|
||||
print(f"{self.name} seek alt supply for {product.code}")
|
||||
if self.dct_n_trial_up_prod_disrupted[
|
||||
product] <= self.model.int_n_max_trial:
|
||||
if self.dct_n_trial_up_prod_disrupted[product] == 0:
|
||||
@@ -173,10 +174,10 @@ class FirmAgent(ap.Agent):
|
||||
else:
|
||||
select_alt_supply = \
|
||||
self.model.nprandom.choice(lst_firm_connect)
|
||||
# print(
|
||||
# f"{self.name} selct alt supply for {product.code} "
|
||||
# f"from {select_alt_supply.name}"
|
||||
# )
|
||||
print(
|
||||
f"{self.name} selct alt supply for {product.code} "
|
||||
f"from {select_alt_supply.name}"
|
||||
)
|
||||
assert select_alt_supply.is_prod_in_current_normal(product), \
|
||||
f"{select_alt_supply} \
|
||||
does not produce requested product {product}"
|
||||
@@ -189,17 +190,17 @@ class FirmAgent(ap.Agent):
|
||||
select_alt_supply.dct_request_prod_from_firm[product] = [
|
||||
self
|
||||
]
|
||||
# print(
|
||||
# select_alt_supply.name, 'dct_request_prod_from_firm', {
|
||||
# key.code: [v.name for v in value]
|
||||
# for key, value in
|
||||
# select_alt_supply.dct_request_prod_from_firm.items()
|
||||
# })
|
||||
print(
|
||||
select_alt_supply.name, 'dct_request_prod_from_firm', {
|
||||
key.code: [v.name for v in value]
|
||||
for key, value in
|
||||
select_alt_supply.dct_request_prod_from_firm.items()
|
||||
})
|
||||
|
||||
self.dct_n_trial_up_prod_disrupted[product] += 1
|
||||
|
||||
def handle_request(self):
|
||||
# print(self.name, 'handle_request')
|
||||
print(self.name, 'handle_request')
|
||||
for product, lst_firm in self.dct_request_prod_from_firm.items():
|
||||
if self.dct_prod_capacity[product] > 0:
|
||||
if len(lst_firm) == 0:
|
||||
@@ -254,10 +255,10 @@ class FirmAgent(ap.Agent):
|
||||
down_firm.dct_cand_alt_supp_up_prod_disrupted[
|
||||
product].remove(self)
|
||||
|
||||
# print(
|
||||
# f"{self.name} denied {product.code} request "
|
||||
# f"from {down_firm.name} for lack of capacity"
|
||||
# )
|
||||
print(
|
||||
f"{self.name} denied {product.code} request "
|
||||
f"from {down_firm.name} for lack of capacity"
|
||||
)
|
||||
|
||||
def accept_request(self, down_firm, product):
|
||||
# para product is the product that self is selling
|
||||
@@ -290,17 +291,17 @@ class FirmAgent(ap.Agent):
|
||||
del down_firm.dct_n_trial_up_prod_disrupted[product]
|
||||
del down_firm.dct_cand_alt_supp_up_prod_disrupted[product]
|
||||
|
||||
# print(
|
||||
# f"{self.name} accept {product.code} request "
|
||||
# f"from {down_firm.name}"
|
||||
# )
|
||||
print(
|
||||
f"{self.name} accept {product.code} request "
|
||||
f"from {down_firm.name}"
|
||||
)
|
||||
else:
|
||||
down_firm.dct_cand_alt_supp_up_prod_disrupted[product].remove(self)
|
||||
|
||||
# print(
|
||||
# f"{self.name} denied {product.code} request "
|
||||
# f"from {down_firm.name}"
|
||||
# )
|
||||
print(
|
||||
f"{self.name} denied {product.code} request "
|
||||
f"from {down_firm.name}"
|
||||
)
|
||||
|
||||
def clean_before_trial(self):
|
||||
self.dct_request_prod_from_firm = {}
|
||||
|
||||
Reference in New Issue
Block a user