Skip to content

Commit e98bd23

Browse files
Merge pull request #84 from aimclub/feature/new-time-estimation-model-signature
Bugs fixed, time estimator updated
2 parents 78debc1 + 5300fc0 commit e98bd23

15 files changed

+8227
-438
lines changed

examples/SAMPO_scheduling_tutorial.ipynb

+7,413
Large diffs are not rendered by default.

examples/dormitory_field_dev_demo_with_granular_new_measurements.csv

+150
Large diffs are not rendered by default.
+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
activity_name;granular_name;volume;measurement;granular_measurement
2+
Бурение лидерных скважин;Бурение лидерных скважин;25.0;шт;шт
3+
Установка в скважины свай;Установка в скважины свай;18.0;шт;шт
4+
Монтаж оголовников;Монтаж оголовков;14.0;шт;шт
5+
Монтаж ростверков и опорных конструкций под порталы, опоры ВЛ;Монтаж ростверков и опорных конструкций под порталы, опоры вл;4.0;шт;шт
6+
Сборка опор/порталов;Сборка опор/порталов;2.0;шт;шт
7+
Установка опор/порталов;Установка опор/порталов;2.0;шт;шт
8+
Подвеска провода;Подвеска провода;200.0;м.;м
9+
Подвеска грозозащитного троса;Подвеска грозозащитного троса;160.0;м.;м
10+
Укладка полосового заземления;Укладка полосового заземления;24.0;м.;м
11+
Укладка активного соляного заземления;Укладка активного соляного заземления;35.6;шт;шт
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
from itertools import chain
2+
from operator import attrgetter
3+
from random import Random
4+
from sampo.schemas.time import Time
5+
6+
from typing import Type
7+
8+
from sampo.utilities.collections_util import build_index
9+
from sampo.schemas import WorkTimeEstimator, WorkUnit, Worker, WorkerReq, WorkEstimationMode, WorkerProductivityMode
10+
from idbadapter import MschmAdapter
11+
from stairsres.res_time_model import ResTimeModel
12+
13+
14+
class FieldDevWorkEstimator(WorkTimeEstimator):
15+
def __init__(self,
16+
url: str,
17+
rand: Random = Random()):
18+
self._url = url
19+
self._model = ResTimeModel(MschmAdapter(url))
20+
self._use_idle = True
21+
self._estimation_mode = WorkEstimationMode.Realistic
22+
self.rand = rand
23+
self._productivity_mode = WorkerProductivityMode.Static
24+
25+
def estimate_time(self, work_unit: WorkUnit, worker_list: list[Worker]):
26+
w_u = {'name': work_unit.name.split('_stage_')[0],
27+
'volume': work_unit.volume,
28+
'measurement': work_unit.volume_type}
29+
w_l = [{'name': w.name, '_count': w.count} for w in worker_list]
30+
name2worker = build_index(worker_list, attrgetter('name'))
31+
if self._estimation_mode == WorkEstimationMode.Realistic:
32+
mode_str = '0.5'
33+
elif self._estimation_mode == WorkEstimationMode.Optimistic:
34+
mode_str = '0.1'
35+
else:
36+
mode_str = '0.9'
37+
38+
for res_req in work_unit.worker_reqs:
39+
if name2worker.get(res_req.kind, None) is None:
40+
w_l.append({'name': res_req.kind, '_count': 0})
41+
if w_u['name'] in ['Начало работ по марке', 'Окончание работ по марке', 'NaN', 'start of project',
42+
'finish of project']:
43+
return Time(0)
44+
try:
45+
return Time(int(self._model.estimate_time(work_unit=w_u, worker_list=w_l, mode=mode_str)))
46+
except:
47+
print(w_u['name'])
48+
49+
def find_work_resources(self, work_name: str, work_volume: float,
50+
resource_name: list[str] | None = None,
51+
measurement: str = None) \
52+
-> list[WorkerReq]:
53+
if work_name in ['Начало работ по марке', 'Окончание работ по марке', 'NaN', 'start of project',
54+
'finish of project']:
55+
return []
56+
worker_req_dict = self._model.get_resources_volumes(work_name=work_name, work_volume=work_volume,
57+
measurement=measurement)
58+
59+
worker_reqs = [[WorkerReq(kind=req['kind'],
60+
volume=Time(req['volume']),
61+
min_count=req['min_count'],
62+
max_count=req['max_count']) for req in worker_req] for
63+
worker_req in
64+
worker_req_dict.values()]
65+
return list(chain.from_iterable(worker_reqs))
66+
67+
def set_estimation_mode(self, use_idle: bool = True, mode: WorkEstimationMode = WorkEstimationMode.Realistic):
68+
self._use_idle = use_idle
69+
self._estimation_mode = mode
70+
71+
def set_productivity_mode(self, mode: WorkerProductivityMode = WorkerProductivityMode.Static):
72+
self._productivity_mode = mode
73+
74+
def get_recreate_info(self) -> tuple[Type, tuple]:
75+
return FieldDevWorkEstimator, tuple(self._url)
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
activity_name;granular_name;volume;measurement;granular_measurement
2+
Изготовление свай;Изготовление металлических свай;1496.0;шт;шт
3+
Бурение скважин;Бурение скважин;1496.0;шт;шт
4+
Погружение свай;Погружение свай;1496.0;шт;шт
5+
Заполнение полости свай ЦПС;Забивка свай;1500.0;шт;шт
6+
Срезка свай, монтаж оголовков;Срезка голов металлических свай;1496.0;шт;шт
7+
Засыпка пространства между сваями щебнем фракции 15-20 мм;Отсыпка площадки щебнем;82.8;м3;м3
8+
Монтаж деформационных марок;Монтаж деформационной марки;100.0;шт;шт
9+
Монтаж траверс;Монтаж траверс;945.0;шт;шт
10+
Монтаж м/к (связи, стойки, упоры, подкосы);Монтаж металлоконструкций (м/к);148.6;шт;шт
11+
Устройство термометрических скважин;Устройство термометрических скважин;11.0;шт;шт
12+
Монтаж термометрических трубок;Монтаж термометрической трубки;59.0;шт;шт
13+
Устройство песчанной подушки;Устройство песчаного основания (подушки);144.47;м3;м3
14+
Укладка габионов;Укладка георешетки, габионов;92.0;м2;м2
15+
Заполнение габионов щебнем фракции 70-120мм;Укладка геосеток, георешеток, габионов с заполнением щебнем;247.97;м2;м2
16+
Монтаж термостабилизаторов;Монтаж термостабилизаторов;81.0;шт;шт
17+
АКЗ свай и металлоконструкций;АКЗ свай и металлоконструкций (м/к);11017.0;м2;м2
18+
Монтаж опор DN 500 (неподвижная, направляющая, скользящая);Монтаж опор;84.0;шт;шт
19+
Сварка газопровода 530х24 мм;Сварка трубопроводов;203.0;стык;стык
20+
Надземная прокладка газопровода 530х24 мм;Прокладка наружной канализации;1267.12;м;м
21+
Монтаж опор метанолопровода;Монтаж опор трубопровода;238.0;шт;шт
22+
Сварка метанолопровода 57х6мм;Автоматическая сварка труб;121.0;стык;стык
23+
Надземная прокладка метанолопровода 57х6мм;Провод для систем опс, прокладываемый по металлическим основаниям;1200.17;м;м
24+
Монтаж заземления;Монтаж заземлений;100.0;м;м
25+
Очистка полости трубопроводов;Очистка полости трубопровода;100.0;м3;м3
26+
Гидроиспытания трубопроводов;Гидроиспытания резервуара;100.0;шт;шт
27+
Изоляция сварных соединений газопровода;Изоляция сварных стыков;203.0;стык;стык
+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
activity_name;granular_name;volume;measurement;granular_measurement
2+
Разработка скального грунта отбойными молотками, группа грунтов: 7;Разработка грунта вручную;74.7;м3;м3
3+
Разработка грунта с погрузкой на автомобили-самосвалы экскаваторами с ковшом вместимостью 0,65 (0,5-1) м3, группа грунтов: 6;Разработка экскаватором грунта;747.0;м3;м3
4+
Работа на отвале, группа грунтов: 5-6;Отсыпка грунтом;747.0;м3;м3
5+
Разработка грунта с погрузкой на автомобили-самосвалы экскаваторами с ковшом вместимостью 0,65 (0,5-1) м3, группа грунтов: 3;Разработка экскаватором грунта;388.0;м3;м3
6+
Засыпка траншей и котлованов с перемещением грунта до 5 м бульдозерами мощностью 96 (130) кВт (л.с.), группа грунтов: 2;Засыпка траншей и котлованов;204.0;м3;м3
7+
При перемещении грунта на каждые последующие 5 м добавлять: к расценке 01-01-034-2;Дополнительная перекидка грунта экскаватором;204.0;м3;м3
8+
Уплотнение грунта пневматическими трамбовками, группа грунтов: 1, 2;Уплотнение грунта;204.0;м3;м3
9+
Засыпка вручную траншей, пазух котлованов и ям, группа грунтов: 2;Засыпка траншей и котлованов;184.0;м3;м3
10+
Устройство бетонной подготовки;Устройство бетонной подготовки;12.0;м3;м3
11+
Устройство ленточных фундаментов железобетонных;Устройство монолитных железобетонных конструкций оснований;29.0;м3;м3
12+
Установка блоков стен подвалов массой: до 0,5 т;Установка фундаментных блоков;230.0;шт;шт
13+
Установка блоков стен подвалов массой: до 1 т;Установка фундаментных блоков;128.0;шт;шт
14+
Установка блоков стен подвалов массой: до 1,5 т;Установка фундаментных блоков;127.0;шт;шт
15+
Устройство стен подвалов и подпорных стен: бетонных (заделки);Устройство песчаного основания (подушки);12.0;м3;м3
16+
Устройство поясов: в опалубке;Установка опалубки;15.0;м3;м3
17+
Гидроизоляция стен, фундаментов горизонтальная оклеечная: в 2 слоя;Гидроизоляция оклеечная;125.0;м2;м2
18+
Кладка стен наружных простых при высоте этажа до 4 м из кирпича: керамического одинарного;Кирпичная кладка наружных стен;1.84;м3;м3
19+
Кладка стен внутренних при высоте этажа до 4 м из кирпича: керамического одинарного;Кирпичная кладка наружных стен;11.64;м3;м3
20+
Кладка стен из легкобетонных камней без облицовки при высоте этажа: до 4 м;Кладка наружных стен;0.45;м2;м2
21+
Установка арматурных стыковых накладок ;Установка арматурных сеток;0.06;т;т
22+
Устройство монолитных участков;Устройство монолитных участков из бетона;3.2;м2;м2
23+
Устройство подстилающих слоев: бетонных;Устройство подстилающего слоя бетонного;2.33;м3;м3
24+
Устройство стяжек цементных: на каждые 5 мм изменения толщины стяжки добавлять или исключать к расценке 11-01-011-01;Устройство цементной стяжки;13.0;м2;м2
25+
Устройство стяжек цементных: на каждые 5 мм изменения толщины стяжки добавлять или исключать к расценке 11-01-011-01;Устройство цементной стяжки;16.0;м2;м2
26+
Устройство покрытий бетонных: толщиной 30 мм;Устройство бетонного основания;29.0;м3;м3
27+
Устройство покрытий бетонных: на каждые 5 мм изменения толщины;Устройство бетонного основания;29.0;м3;м3
28+
Установка блоков в наружных и внутренних дверных проемах: в каменных стенах площадью проема до 3 м2;Установка дверных блоков;1.6;м2;м2
29+
Установка блоков в наружных и внутренних дверных проемах: в каменных стенах площадью проема до 3 м2;Установка дверных блоков;1.8;м2;м2
30+
Установка блоков в наружных и внутренних дверных проемах: в перегородках и деревянных нерубленых стенах площадью проема до 3 м2;Установка дверных блоков;1.8;м2;м2
31+
Кладка стен внутренних при высоте этажа до 4 м из кирпича: керамического одинарного;Кирпичная кладка наружных стен;0.76;м3;м3
32+
Устройство лестниц по готовому основанию из отдельных ступеней: гладких;Устройство песчаного основания (подушки);14.4;м3;м3
33+
Монтаж связей и распорок из одиночных и парных уголков, гнутосварных профилей для пролетов до 24 м при высоте здания: до 25 м;Сооружение пролетных строений;0.008;м;м

0 commit comments

Comments
 (0)