set to removed only for disrupted firm

This commit is contained in:
2023-07-02 15:51:01 +08:00
parent afc74765ad
commit 0965a5daa4
6 changed files with 17 additions and 7 deletions

View File

@@ -349,10 +349,10 @@ class Model(ap.Model):
firm.size_stat.append((size, self.t))
print(f'in ts {self.t}, reduce {firm.name} size '
f'to {firm.size_stat[-1][0]} due to {prod.code}')
if self.t - ts + 1 == self.remove_t:
# turn disrupted firm into removed firm
firm.dct_prod_up_prod_stat[
prod]['status'].append(('R', self.t))
if self.t - ts + 1 == self.remove_t:
# turn disrupted firm into removed firm
firm.dct_prod_up_prod_stat[
prod]['status'].append(('R', self.t))
# stop simulation if any firm still in disrupted except inital removal
if self.t > 0:
@@ -422,6 +422,16 @@ class Model(ap.Model):
def end(self):
print('/' * 20, 'output', '/' * 20)
for firm in self.a_lst_total_firms:
is_size = False
for prod, dct_status_supply in firm.dct_prod_up_prod_stat.items():
if len(dct_status_supply['status']) > 1:
is_size = True
print(f"{firm.name} {prod.code}:")
print(dct_status_supply['status'])
if is_size:
print(firm.size_stat)
# qry_result = db_session.query(Result).filter_by(s_id=self.sample.id)
# if qry_result.count() == 0:
# lst_result_info = []