def test_create_data_for_gantt_plotly(): c = BaseComponent("c") task1 = BaseTask("task1") task2 = BaseTask("task2") c.extend_targeted_task_list([task1, task2]) # Set test case (start time = 0, finish time = 5) task1.start_time_list = [0, 2] task1.ready_time_list = [0, 2] task1.finish_time_list = [3, 5] task2.start_time_list = [1] task2.ready_time_list = [2] task2.finish_time_list = [5] init_datetime = datetime.datetime(2020, 4, 1, 8, 0, 0) # timedelta = 1day timedelta = datetime.timedelta(days=1) df = c.create_data_for_gantt_plotly(init_datetime, timedelta) assert df[0]["Start"] == (init_datetime + 0 * timedelta).strftime( "%Y-%m-%d %H:%M:%S" ) assert df[0]["Finish"] == (init_datetime + (5 + 1.0) * timedelta).strftime( "%Y-%m-%d %H:%M:%S" ) assert df[0]["Type"] == "Component"
def test_create_data_for_gantt_plotly(): c1 = BaseComponent("c1") task11 = BaseTask("task11") task12 = BaseTask("task12") c1.extend_targeted_task_list([task11, task12]) c2 = BaseComponent("c2") task2 = BaseTask("task2") c2.append_targeted_task(task2) product = BaseProduct([c1, c2]) # Set test case task11.start_time_list = [0, 2] task11.ready_time_list = [0, 2] task11.finish_time_list = [3, 5] task12.start_time_list = [1] task12.ready_time_list = [2] task12.finish_time_list = [5] task2.start_time_list = [1] task2.ready_time_list = [2] task2.finish_time_list = [5] init_datetime = datetime.datetime(2020, 4, 1, 8, 0, 0) timedelta = datetime.timedelta(days=1) df = product.create_data_for_gantt_plotly(init_datetime, timedelta) assert df[0]["Start"] == (init_datetime + 0 * timedelta).strftime("%Y-%m-%d %H:%M:%S") assert df[0]["Finish"] == ( init_datetime + (5 + 1.0) * timedelta).strftime("%Y-%m-%d %H:%M:%S") assert df[0]["Type"] == "Component" assert df[1]["Start"] == (init_datetime + 1 * timedelta).strftime("%Y-%m-%d %H:%M:%S") assert df[1]["Finish"] == ( init_datetime + (5 + 1.0) * timedelta).strftime("%Y-%m-%d %H:%M:%S") assert df[1]["Type"] == "Component"
def test_create_gantt_plotly(): c1 = BaseComponent("c1") task11 = BaseTask("task11") task12 = BaseTask("task12") c1.extend_targeted_task_list([task11, task12]) c2 = BaseComponent("c2") task2 = BaseTask("task2") c2.append_targeted_task(task2) product = BaseProduct([c1, c2]) # Set test case task11.start_time_list = [0, 2] task11.ready_time_list = [0, 2] task11.finish_time_list = [3, 5] task12.start_time_list = [1] task12.ready_time_list = [2] task12.finish_time_list = [5] task2.start_time_list = [1] task2.ready_time_list = [2] task2.finish_time_list = [5] init_datetime = datetime.datetime(2020, 4, 1, 8, 0, 0) timedelta = datetime.timedelta(days=1) product.create_gantt_plotly(init_datetime, timedelta, save_fig_path="test.png") if os.path.exists("test.png"): os.remove("test.png")
def test_extend_targeted_task_list(): c = BaseComponent("c") assert c.parent_component_list == [] task1 = BaseTask("task1") task2 = BaseTask("task2") c.extend_targeted_task_list([task1, task2]) assert c.targeted_task_list == [task1, task2] assert task1.target_component == c assert task2.target_component == c
def dummy_simple_project(scope="function"): c = BaseComponent("c", space_size=1.0) task1 = BaseTask("task1", default_work_amount=2.0) task2 = BaseTask("task2", default_work_amount=2.0) auto_task2 = BaseTask("auto_task2", auto_task=True, default_work_amount=2.0) task2.append_input_task(auto_task2) task3 = BaseTask("task3", default_work_amount=2.0) auto_task3 = BaseTask("auto_task3", auto_task=True, default_work_amount=4.0) task3.append_input_task(auto_task3) workflow = BaseWorkflow([task1, task2, task3, auto_task2, auto_task3]) c.extend_targeted_task_list([task1, task2, task3]) product = BaseProduct([c]) # BaseTeams in BaseOrganization team = BaseTeam("team") team.extend_targeted_task_list([task1, task2, task3]) # BaseWorkers in each BaseTeam w1 = BaseWorker("w1", team_id=team.ID) w1.workamount_skill_mean_map = { task1.name: 1.0, } team.add_worker(w1) w2 = BaseWorker("w1", team_id=team.ID) w2.workamount_skill_mean_map = { task2.name: 1.0, } team.add_worker(w2) w3 = BaseWorker("w3", team_id=team.ID) w3.workamount_skill_mean_map = { task3.name: 1.0, } team.add_worker(w3) project = BaseProject( init_datetime=datetime.datetime(2020, 4, 1, 8, 0, 0), unit_timedelta=datetime.timedelta(days=1), product=product, workflow=workflow, organization=BaseOrganization(team_list=[team]), ) return project
def test_is_ready(): c = BaseComponent("c") task1 = BaseTask("task1") task2 = BaseTask("task2") c.extend_targeted_task_list([task1, task2]) assert c.is_ready() is False # case 1 task1.state = BaseTaskState.READY assert c.is_ready() is True # case 2 task2.state = BaseTaskState.WORKING assert c.is_ready() is False # case 3 task2.state = BaseTaskState.FINISHED assert c.is_ready() is True # case 4 task1.state = BaseTaskState.FINISHED task2.state = BaseTaskState.FINISHED assert c.is_ready() is False
def test_create_simple_gantt(): c1 = BaseComponent("c1") task11 = BaseTask("task11") task12 = BaseTask("task12") c1.extend_targeted_task_list([task11, task12]) c2 = BaseComponent("c2") task2 = BaseTask("task2") c2.append_targeted_task(task2) product = BaseProduct([c1, c2]) # Set test case task11.start_time_list = [1, 5] task11.ready_time_list = [0, 4] task11.finish_time_list = [2, 6] task12.start_time_list = [2] task12.ready_time_list = [1] task12.finish_time_list = [5] task2.start_time_list = [2] task2.ready_time_list = [1] task2.finish_time_list = [5] product.create_simple_gantt(save_fig_path="test.png") if os.path.exists("test.png"): os.remove("test.png")
def dummy_project2(scope="function"): # BaseComponents in BaseProduct c3 = BaseComponent("c3") c1 = BaseComponent("c1") c2 = BaseComponent("c2") c3.extend_child_component_list([c1, c2]) # BaseTasks in BaseWorkflow task1_1 = BaseTask("task1_1", need_facility=True) task1_2 = BaseTask("task1_2") task2_1 = BaseTask("task2_1") task3 = BaseTask("task3", due_time=30) task3.extend_input_task_list([task1_2, task2_1]) task1_2.append_input_task(task1_1) task0 = BaseTask("auto", auto_task=True, due_time=20) c1.extend_targeted_task_list([task1_1, task1_2]) c2.append_targeted_task(task2_1) c3.append_targeted_task(task3) # Facilities in factory f1 = BaseFacility("f1") f1.workamount_skill_mean_map = { task1_1.name: 1.0, } # factory.facility_list.append(f1) # Factory in BaseOrganization factory = BaseFactory("factory", facility_list=[f1]) factory.extend_targeted_task_list([task1_1, task1_2, task2_1, task3]) # BaseTeams in BaseOrganization team = BaseTeam("team") team.extend_targeted_task_list([task1_1, task1_2, task2_1, task3]) # BaseResources in each BaseTeam w1 = BaseWorker("w1", team_id=team.ID, cost_per_time=10.0) w1.workamount_skill_mean_map = { task1_1.name: 1.0, task1_2.name: 1.0, task2_1.name: 0.0, task3.name: 1.0, } w1.facility_skill_map = {f1.name: 1.0} team.worker_list.append(w1) w2 = BaseWorker("w2", team_id=team.ID, cost_per_time=6.0) w2.solo_working = True w2.workamount_skill_mean_map = { task1_1.name: 1.0, task1_2.name: 0.0, task2_1.name: 1.0, task3.name: 1.0, } w2.facility_skill_map = {f1.name: 1.0} team.worker_list.append(w2) # BaseProject including BaseProduct, BaseWorkflow and Organization project = BaseProject( init_datetime=datetime.datetime(2020, 4, 1, 8, 0, 0), unit_timedelta=datetime.timedelta(days=1), product=BaseProduct([c3, c1, c2]), workflow=BaseWorkflow([task1_1, task1_2, task2_1, task3, task0]), organization=BaseOrganization(team_list=[team], factory_list=[factory]), time=10, cost_list=[10], ) project.initialize() # project.product = BaseProduct([c3, c1, c2]) # project.workflow = BaseWorkflow([task1_1, task1_2, task2_1, task3]) # project.organization = BaseOrganization(team_list=[team], factory_list=[factory]) return project
def dummy_conveyor_project(): """dummy_conveyor_project.""" c1 = BaseComponent("c1") c2 = BaseComponent("c2") c3 = BaseComponent("c3") taskA1 = BaseTask("A1", need_facility=True, default_work_amount=10) taskA2 = BaseTask("A2", need_facility=True, default_work_amount=3) taskA3 = BaseTask("A3", need_facility=True, default_work_amount=3) taskB1 = BaseTask("B1", need_facility=True, default_work_amount=3) taskB2 = BaseTask("B2", need_facility=True, default_work_amount=5) taskB3 = BaseTask("B3", need_facility=True, default_work_amount=3) c1.extend_targeted_task_list([taskA1, taskB1]) c2.extend_targeted_task_list([taskA2, taskB2]) c3.extend_targeted_task_list([taskA3, taskB3]) taskB1.append_input_task(taskA1) taskB2.append_input_task(taskA2) taskB3.append_input_task(taskA3) f1 = BaseFacility("f1") f1.workamount_skill_mean_map = { taskA1.name: 1.0, taskA2.name: 1.0, taskA3.name: 1.0, } f2 = BaseFacility("f2") f2.workamount_skill_mean_map = { taskA1.name: 1.0, taskA2.name: 1.0, taskA3.name: 1.0, } f3 = BaseFacility("f3") f3.workamount_skill_mean_map = { taskB1.name: 1.0, taskB2.name: 1.0, taskB3.name: 1.0, } f4 = BaseFacility("f4") f4.workamount_skill_mean_map = { taskB1.name: 1.0, taskB2.name: 1.0, taskB3.name: 1.0, } # Workplace in BaseOrganization wp1 = BaseWorkplace("workplace1", facility_list=[f1]) wp1.extend_targeted_task_list([taskA1, taskA2, taskA3]) wp2 = BaseWorkplace("workplace2", facility_list=[f2]) wp2.extend_targeted_task_list([taskA1, taskA2, taskA3]) wp3 = BaseWorkplace("workplace3", facility_list=[f3]) wp3.extend_targeted_task_list([taskB1, taskB2, taskB3]) wp4 = BaseWorkplace("workplace4", facility_list=[f4]) wp4.extend_targeted_task_list([taskB1, taskB2, taskB3]) wp3.append_input_workplace(wp1) wp4.append_input_workplace(wp2) # BaseTeams in BaseOrganization team = BaseTeam("team") team_list = [team] team.extend_targeted_task_list( [taskA1, taskA2, taskA3, taskB1, taskB2, taskB3]) # BaseWorkers in each BaseTeam w1 = BaseWorker("w1", team_id=team.ID) w1.workamount_skill_mean_map = { taskA1.name: 1.0, taskA2.name: 1.0, taskA3.name: 1.0, } w1.facility_skill_map = {f1.name: 1.0} team.add_worker(w1) w2 = BaseWorker("w2", team_id=team.ID) w2.workamount_skill_mean_map = { taskA1.name: 1.0, taskA2.name: 1.0, taskA3.name: 1.0, } w2.facility_skill_map = {f2.name: 1.0} team.add_worker(w2) w3 = BaseWorker("w3", team_id=team.ID) w3.workamount_skill_mean_map = { taskB1.name: 1.0, taskB2.name: 1.0, taskB3.name: 1.0, } w3.facility_skill_map = {f3.name: 1.0} team.add_worker(w3) w4 = BaseWorker("w4", team_id=team.ID) w4.workamount_skill_mean_map = { taskB1.name: 1.0, taskB2.name: 1.0, taskB3.name: 1.0, } w4.facility_skill_map = {f4.name: 1.0} team.add_worker(w4) workplace_list = [wp1, wp2, wp3, wp4] # BaseProject including BaseProduct, BaseWorkflow and Organization project = BaseProject( init_datetime=datetime.datetime(2021, 7, 18, 8, 0, 0), unit_timedelta=datetime.timedelta(days=1), product=BaseProduct([c1, c2, c3]), workflow=BaseWorkflow([taskA1, taskA2, taskA3, taskB1, taskB2, taskB3]), organization=BaseOrganization(team_list, workplace_list), ) return project