hypothetical
1- We have a program to complete arround 2000 projects,
2- The program consists of Marketable areas, each marketable areas has multiple build chain (build_id) and each build chain has sub build chain (split_build_id) and under each sub build chain (split_build_id) there is the project,
3- We have finish date constraints for each marketable area (marketable_area_due_date)
4- Project has mainly 3 milestones Design followed by SAED followed by build
5- build cannot start unless the whole split_build_id projects has completed SAED
6- Design and build milestones have resource assigned to it, the resource limitation is unit/month not human resource
7- saed_finish_date = saed_start_date + saed_duration for the same project
8- build_start_date = maximum (saed_finish based on split_build_id )
9- build_finish_date = build_start_date + build_duration
10- if design_finish_date provided in the input data, it mean that design finish date is constrained to that Value
11- if saed_finish_date provided in the input data, it mean that saed_finish_date is constrained to that value
12- if build_finish_date provided in the input data, it mean that build_finish_date is constrained to that value
example for the dataframes:
project_data = [login to view URL]({
'build_id' : ['bid_1','bid_1','bid_1','bid_2','bid_2','bid_3','bid_3','bid_4','bid_4','bid_4'],
'split_build_id' : ['bid_1','bid_1','bid_1.1','bid_2','bid_2','bid_3','bid_3.1','bid_4','bid_4','bid_4'],
'project_id' : ['POW1','POW2','POW3','POW4','POW5','POW6','POW7','POW8','POW9','POW10'],
'site_name' : ['Site1','site2','Site3','Site4','Site5','Site6','Site7','Site8','Site9','Site10'],
'marketable_area' : ['MA1','MA1','MA1','MA1','MA1','MA2','MA2','MA2','MA2','MA2'],
'Marketable_area_due_date' : ['2023-09-30','2023-09-30','2023-09-30','2023-09-30','2023-09-30','2023-12-31','2023-12-31','2023-12-31','2023-12-31','2023-12-31'],
'design_resource' : ['NBN-design','NBN-design','NBN-design','NBN-design','NBN-design','downer_design','downer_design','NBN-design','NBN-design','NBN-design'],
'design_finish_date' : ['2023-03-28','2023-03-28','2023-03-28','2023-01-24','2023-01-23',[login to view URL],[login to view URL],[login to view URL],[login to view URL],[login to view URL]],
'saed_duration' : [353,353,153,147,77,70,140,90,80,100],
'saed_finish_date' : ['2023-06-01','2023-06-01','2023-08-01','2023-06-20','2023-08-20',[login to view URL],[login to view URL],[login to view URL],[login to view URL],[login to view URL]],
'build_duration' : [70,70,40,70,70,50,50,50,50,50],
'build_resource' : ['downer-nsw-build','downer-nsw-build','downer-nsw-build','downer-nsw-build','downer-nsw-build','downer-nsw-build','downer-nsw-build','servicestream-nsw-build','servicestream-nsw-build','servicestream-nsw-build'],
'build_finish_date' : [[login to view URL],[login to view URL],[login to view URL],'2023-09-30','2023-09-30',[login to view URL],[login to view URL],[login to view URL],[login to view URL],[login to view URL]]
})
resource_data = [login to view URL]({
'resource' : ['NBN-design','NBN-design','downer_design','downer-nsw-build','servicestream-nsw-build'],
'capacity' : [2,5,2,2,2],
'from' : ['2023-03-01','2023-06-01','2023-03-01','2023-03-01','2023-03-01'],
'to' : ['2023-05-30','2024-06-30','2024-06-30','2024-06-30','2024-06-30'],
})
i need python script potential using pulp to optimize the plan to