-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #84 from aimclub/feature/new-time-estimation-model…
…-signature Bugs fixed, time estimator updated
- Loading branch information
Showing
15 changed files
with
8,227 additions
and
438 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
150 changes: 150 additions & 0 deletions
150
examples/dormitory_field_dev_demo_with_granular_new_measurements.csv
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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;шт;шт |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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;стык;стык |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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;м;м |
Oops, something went wrong.