Skip to content

Commit

Permalink
Merge pull request #84 from aimclub/feature/new-time-estimation-model…
Browse files Browse the repository at this point in the history
…-signature

Bugs fixed, time estimator updated
  • Loading branch information
simpledumpling authored Jul 8, 2024
2 parents 78debc1 + 5300fc0 commit e98bd23
Show file tree
Hide file tree
Showing 15 changed files with 8,227 additions and 438 deletions.
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

0 comments on commit e98bd23

Please sign in to comment.