Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugs fixed, time estimator updated #84

Merged
merged 8 commits into from
Jul 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7,413 changes: 7,413 additions & 0 deletions examples/SAMPO_scheduling_tutorial.ipynb

Large diffs are not rendered by default.

150 changes: 150 additions & 0 deletions examples/dormitory_field_dev_demo_with_granular_new_measurements.csv

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions examples/electroline_field_dev_demo.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
activity_name;granular_name;volume;measurement;granular_measurement
Бурение лидерных скважин;Бурение лидерных скважин;25.0;шт;шт
Установка в скважины свай;Установка в скважины свай;18.0;шт;шт
Монтаж оголовников;Монтаж оголовков;14.0;шт;шт
Монтаж ростверков и опорных конструкций под порталы, опоры ВЛ;Монтаж ростверков и опорных конструкций под порталы, опоры вл;4.0;шт;шт
Сборка опор/порталов;Сборка опор/порталов;2.0;шт;шт
Установка опор/порталов;Установка опор/порталов;2.0;шт;шт
Подвеска провода;Подвеска провода;200.0;м.;м
Подвеска грозозащитного троса;Подвеска грозозащитного троса;160.0;м.;м
Укладка полосового заземления;Укладка полосового заземления;24.0;м.;м
Укладка активного соляного заземления;Укладка активного соляного заземления;35.6;шт;шт
75 changes: 75 additions & 0 deletions examples/field_dev_resources_time_estimator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
from itertools import chain
from operator import attrgetter
from random import Random
from sampo.schemas.time import Time

from typing import Type

from sampo.utilities.collections_util import build_index
from sampo.schemas import WorkTimeEstimator, WorkUnit, Worker, WorkerReq, WorkEstimationMode, WorkerProductivityMode
from idbadapter import MschmAdapter
from stairsres.res_time_model import ResTimeModel


class FieldDevWorkEstimator(WorkTimeEstimator):
def __init__(self,
url: str,
rand: Random = Random()):
self._url = url
self._model = ResTimeModel(MschmAdapter(url))
self._use_idle = True
self._estimation_mode = WorkEstimationMode.Realistic
self.rand = rand
self._productivity_mode = WorkerProductivityMode.Static

def estimate_time(self, work_unit: WorkUnit, worker_list: list[Worker]):
w_u = {'name': work_unit.name.split('_stage_')[0],
'volume': work_unit.volume,
'measurement': work_unit.volume_type}
w_l = [{'name': w.name, '_count': w.count} for w in worker_list]
name2worker = build_index(worker_list, attrgetter('name'))
if self._estimation_mode == WorkEstimationMode.Realistic:
mode_str = '0.5'
elif self._estimation_mode == WorkEstimationMode.Optimistic:
mode_str = '0.1'
else:
mode_str = '0.9'

for res_req in work_unit.worker_reqs:
if name2worker.get(res_req.kind, None) is None:
w_l.append({'name': res_req.kind, '_count': 0})
if w_u['name'] in ['Начало работ по марке', 'Окончание работ по марке', 'NaN', 'start of project',
'finish of project']:
return Time(0)
try:
return Time(int(self._model.estimate_time(work_unit=w_u, worker_list=w_l, mode=mode_str)))
except:
print(w_u['name'])

def find_work_resources(self, work_name: str, work_volume: float,
resource_name: list[str] | None = None,
measurement: str = None) \
-> list[WorkerReq]:
if work_name in ['Начало работ по марке', 'Окончание работ по марке', 'NaN', 'start of project',
'finish of project']:
return []
worker_req_dict = self._model.get_resources_volumes(work_name=work_name, work_volume=work_volume,
measurement=measurement)

worker_reqs = [[WorkerReq(kind=req['kind'],
volume=Time(req['volume']),
min_count=req['min_count'],
max_count=req['max_count']) for req in worker_req] for
worker_req in
worker_req_dict.values()]
return list(chain.from_iterable(worker_reqs))

def set_estimation_mode(self, use_idle: bool = True, mode: WorkEstimationMode = WorkEstimationMode.Realistic):
self._use_idle = use_idle
self._estimation_mode = mode

def set_productivity_mode(self, mode: WorkerProductivityMode = WorkerProductivityMode.Static):
self._productivity_mode = mode

def get_recreate_info(self) -> tuple[Type, tuple]:
return FieldDevWorkEstimator, tuple(self._url)
27 changes: 27 additions & 0 deletions examples/gas_network_field_dev_demo.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
activity_name;granular_name;volume;measurement;granular_measurement
Изготовление свай;Изготовление металлических свай;1496.0;шт;шт
Бурение скважин;Бурение скважин;1496.0;шт;шт
Погружение свай;Погружение свай;1496.0;шт;шт
Заполнение полости свай ЦПС;Забивка свай;1500.0;шт;шт
Срезка свай, монтаж оголовков;Срезка голов металлических свай;1496.0;шт;шт
Засыпка пространства между сваями щебнем фракции 15-20 мм;Отсыпка площадки щебнем;82.8;м3;м3
Монтаж деформационных марок;Монтаж деформационной марки;100.0;шт;шт
Монтаж траверс;Монтаж траверс;945.0;шт;шт
Монтаж м/к (связи, стойки, упоры, подкосы);Монтаж металлоконструкций (м/к);148.6;шт;шт
Устройство термометрических скважин;Устройство термометрических скважин;11.0;шт;шт
Монтаж термометрических трубок;Монтаж термометрической трубки;59.0;шт;шт
Устройство песчанной подушки;Устройство песчаного основания (подушки);144.47;м3;м3
Укладка габионов;Укладка георешетки, габионов;92.0;м2;м2
Заполнение габионов щебнем фракции 70-120мм;Укладка геосеток, георешеток, габионов с заполнением щебнем;247.97;м2;м2
Монтаж термостабилизаторов;Монтаж термостабилизаторов;81.0;шт;шт
АКЗ свай и металлоконструкций;АКЗ свай и металлоконструкций (м/к);11017.0;м2;м2
Монтаж опор DN 500 (неподвижная, направляющая, скользящая);Монтаж опор;84.0;шт;шт
Сварка газопровода 530х24 мм;Сварка трубопроводов;203.0;стык;стык
Надземная прокладка газопровода 530х24 мм;Прокладка наружной канализации;1267.12;м;м
Монтаж опор метанолопровода;Монтаж опор трубопровода;238.0;шт;шт
Сварка метанолопровода 57х6мм;Автоматическая сварка труб;121.0;стык;стык
Надземная прокладка метанолопровода 57х6мм;Провод для систем опс, прокладываемый по металлическим основаниям;1200.17;м;м
Монтаж заземления;Монтаж заземлений;100.0;м;м
Очистка полости трубопроводов;Очистка полости трубопровода;100.0;м3;м3
Гидроиспытания трубопроводов;Гидроиспытания резервуара;100.0;шт;шт
Изоляция сварных соединений газопровода;Изоляция сварных стыков;203.0;стык;стык
33 changes: 33 additions & 0 deletions examples/smeta1_house_building_demo.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
activity_name;granular_name;volume;measurement;granular_measurement
Разработка скального грунта отбойными молотками, группа грунтов: 7;Разработка грунта вручную;74.7;м3;м3
Разработка грунта с погрузкой на автомобили-самосвалы экскаваторами с ковшом вместимостью 0,65 (0,5-1) м3, группа грунтов: 6;Разработка экскаватором грунта;747.0;м3;м3
Работа на отвале, группа грунтов: 5-6;Отсыпка грунтом;747.0;м3;м3
Разработка грунта с погрузкой на автомобили-самосвалы экскаваторами с ковшом вместимостью 0,65 (0,5-1) м3, группа грунтов: 3;Разработка экскаватором грунта;388.0;м3;м3
Засыпка траншей и котлованов с перемещением грунта до 5 м бульдозерами мощностью 96 (130) кВт (л.с.), группа грунтов: 2;Засыпка траншей и котлованов;204.0;м3;м3
При перемещении грунта на каждые последующие 5 м добавлять: к расценке 01-01-034-2;Дополнительная перекидка грунта экскаватором;204.0;м3;м3
Уплотнение грунта пневматическими трамбовками, группа грунтов: 1, 2;Уплотнение грунта;204.0;м3;м3
Засыпка вручную траншей, пазух котлованов и ям, группа грунтов: 2;Засыпка траншей и котлованов;184.0;м3;м3
Устройство бетонной подготовки;Устройство бетонной подготовки;12.0;м3;м3
Устройство ленточных фундаментов железобетонных;Устройство монолитных железобетонных конструкций оснований;29.0;м3;м3
Установка блоков стен подвалов массой: до 0,5 т;Установка фундаментных блоков;230.0;шт;шт
Установка блоков стен подвалов массой: до 1 т;Установка фундаментных блоков;128.0;шт;шт
Установка блоков стен подвалов массой: до 1,5 т;Установка фундаментных блоков;127.0;шт;шт
Устройство стен подвалов и подпорных стен: бетонных (заделки);Устройство песчаного основания (подушки);12.0;м3;м3
Устройство поясов: в опалубке;Установка опалубки;15.0;м3;м3
Гидроизоляция стен, фундаментов горизонтальная оклеечная: в 2 слоя;Гидроизоляция оклеечная;125.0;м2;м2
Кладка стен наружных простых при высоте этажа до 4 м из кирпича: керамического одинарного;Кирпичная кладка наружных стен;1.84;м3;м3
Кладка стен внутренних при высоте этажа до 4 м из кирпича: керамического одинарного;Кирпичная кладка наружных стен;11.64;м3;м3
Кладка стен из легкобетонных камней без облицовки при высоте этажа: до 4 м;Кладка наружных стен;0.45;м2;м2
Установка арматурных стыковых накладок ;Установка арматурных сеток;0.06;т;т
Устройство монолитных участков;Устройство монолитных участков из бетона;3.2;м2;м2
Устройство подстилающих слоев: бетонных;Устройство подстилающего слоя бетонного;2.33;м3;м3
Устройство стяжек цементных: на каждые 5 мм изменения толщины стяжки добавлять или исключать к расценке 11-01-011-01;Устройство цементной стяжки;13.0;м2;м2
Устройство стяжек цементных: на каждые 5 мм изменения толщины стяжки добавлять или исключать к расценке 11-01-011-01;Устройство цементной стяжки;16.0;м2;м2
Устройство покрытий бетонных: толщиной 30 мм;Устройство бетонного основания;29.0;м3;м3
Устройство покрытий бетонных: на каждые 5 мм изменения толщины;Устройство бетонного основания;29.0;м3;м3
Установка блоков в наружных и внутренних дверных проемах: в каменных стенах площадью проема до 3 м2;Установка дверных блоков;1.6;м2;м2
Установка блоков в наружных и внутренних дверных проемах: в каменных стенах площадью проема до 3 м2;Установка дверных блоков;1.8;м2;м2
Установка блоков в наружных и внутренних дверных проемах: в перегородках и деревянных нерубленых стенах площадью проема до 3 м2;Установка дверных блоков;1.8;м2;м2
Кладка стен внутренних при высоте этажа до 4 м из кирпича: керамического одинарного;Кирпичная кладка наружных стен;0.76;м3;м3
Устройство лестниц по готовому основанию из отдельных ступеней: гладких;Устройство песчаного основания (подушки);14.4;м3;м3
Монтаж связей и распорок из одиночных и парных уголков, гнутосварных профилей для пролетов до 24 м при высоте здания: до 25 м;Сооружение пролетных строений;0.008;м;м
Loading