pycityagent 2.0.0a24__py3-none-any.whl → 2.0.0a26__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pycityagent/environment/simulator.py +22 -10
- pycityagent/environment/utils/const.py +2 -0
- {pycityagent-2.0.0a24.dist-info → pycityagent-2.0.0a26.dist-info}/METADATA +1 -1
- {pycityagent-2.0.0a24.dist-info → pycityagent-2.0.0a26.dist-info}/RECORD +5 -5
- {pycityagent-2.0.0a24.dist-info → pycityagent-2.0.0a26.dist-info}/WHEEL +0 -0
@@ -3,7 +3,6 @@
|
|
3
3
|
import asyncio
|
4
4
|
import logging
|
5
5
|
import os
|
6
|
-
from collections.abc import Sequence
|
7
6
|
from datetime import datetime, timedelta
|
8
7
|
from typing import Any, Optional, Union, cast
|
9
8
|
|
@@ -22,13 +21,14 @@ from .utils.const import *
|
|
22
21
|
|
23
22
|
logger = logging.getLogger("pycityagent")
|
24
23
|
|
24
|
+
|
25
25
|
class Simulator:
|
26
26
|
"""
|
27
27
|
- 模拟器主类
|
28
28
|
- Simulator Class
|
29
29
|
"""
|
30
30
|
|
31
|
-
def __init__(self, config:dict, secure: bool = False) -> None:
|
31
|
+
def __init__(self, config: dict, secure: bool = False) -> None:
|
32
32
|
self.config = config
|
33
33
|
"""
|
34
34
|
- 模拟器配置
|
@@ -104,6 +104,8 @@ class Simulator:
|
|
104
104
|
self._bbox: tuple[float, float, float, float] = (-1, -1, -1, -1)
|
105
105
|
self.poi_matrix_centers = []
|
106
106
|
self._lock = asyncio.Lock()
|
107
|
+
# poi id dict
|
108
|
+
self.poi_id_2_aoi_id: dict[int, int] = {}
|
107
109
|
# poi STRtree
|
108
110
|
self.set_poi_tree()
|
109
111
|
|
@@ -146,6 +148,7 @@ class Simulator:
|
|
146
148
|
for tree_id, poi in enumerate(self.map.pois.values()):
|
147
149
|
tree_id_2_poi_and_catg[tree_id] = (poi, poi["category"])
|
148
150
|
poi_geos.append(Point([poi["position"][k] for k in ["x", "y"]]))
|
151
|
+
self.poi_id_2_aoi_id[poi["id"]] = poi["aoi_id"]
|
149
152
|
self.tree_id_2_poi_and_catg = tree_id_2_poi_and_catg
|
150
153
|
self.pois_tree = STRtree(poi_geos)
|
151
154
|
|
@@ -193,7 +196,7 @@ class Simulator:
|
|
193
196
|
else:
|
194
197
|
# BUG: 返回的time是float类型
|
195
198
|
return t_sec["t"]
|
196
|
-
|
199
|
+
|
197
200
|
async def get_simulator_day(self) -> int:
|
198
201
|
"""
|
199
202
|
获取模拟器到第几日
|
@@ -202,7 +205,7 @@ class Simulator:
|
|
202
205
|
t_sec = cast(dict[str, int], t_sec)
|
203
206
|
day = t_sec["t"] // 86400
|
204
207
|
return day
|
205
|
-
|
208
|
+
|
206
209
|
async def get_simulator_second_from_start_of_day(self) -> int:
|
207
210
|
"""
|
208
211
|
获取模拟器从00:00:00到当前的秒数
|
@@ -250,12 +253,21 @@ class Simulator:
|
|
250
253
|
_schedules = []
|
251
254
|
for target_pos, _time, _mode in zip(target_positions, departure_times, modes):
|
252
255
|
if isinstance(target_pos, int):
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
"
|
256
|
+
if target_pos >= POI_START_ID:
|
257
|
+
poi_id = target_pos
|
258
|
+
end = {
|
259
|
+
"aoi_position": {
|
260
|
+
"aoi_id": self.poi_id_2_aoi_id[poi_id],
|
261
|
+
"poi_id": poi_id,
|
262
|
+
}
|
263
|
+
}
|
264
|
+
else:
|
265
|
+
aoi_id = target_pos
|
266
|
+
end = {
|
267
|
+
"aoi_position": {
|
268
|
+
"aoi_id": aoi_id,
|
269
|
+
}
|
257
270
|
}
|
258
|
-
}
|
259
271
|
else:
|
260
272
|
aoi_id, poi_id = target_pos
|
261
273
|
end = {"aoi_position": {"aoi_id": aoi_id, "poi_id": poi_id}}
|
@@ -316,7 +328,7 @@ class Simulator:
|
|
316
328
|
radius: float,
|
317
329
|
poi_type: Union[str, list[str]],
|
318
330
|
):
|
319
|
-
if
|
331
|
+
if isinstance(poi_type, str):
|
320
332
|
poi_type = [poi_type]
|
321
333
|
transformed_poi_type = []
|
322
334
|
for t in poi_type:
|
@@ -21,10 +21,10 @@ pycityagent/environment/sim/person_service.py,sha256=5r1F2Itn7dKJ2U4hSLovrk5p4qy
|
|
21
21
|
pycityagent/environment/sim/road_service.py,sha256=bKyn3_me0sGmaJVyF6eNeFbdU-9C1yWsa9L7pieDJzg,1285
|
22
22
|
pycityagent/environment/sim/sim_env.py,sha256=HI1LcS_FotDKQ6vBnx0e49prXSABOfA20aU9KM-ZkCY,4625
|
23
23
|
pycityagent/environment/sim/social_service.py,sha256=9EFJAwVdUuUQkNkFRn9qZRDfD1brh2fqkvasnXUEBhQ,2014
|
24
|
-
pycityagent/environment/simulator.py,sha256=
|
24
|
+
pycityagent/environment/simulator.py,sha256=KVfwSwVGXPqUHQGyD9jv_RXRgGal2k7NloUFVdmWE8I,12943
|
25
25
|
pycityagent/environment/utils/__init__.py,sha256=1m4Q1EfGvNpUsa1bgQzzCyWhfkpElnskNImjjFD3Znc,237
|
26
26
|
pycityagent/environment/utils/base64.py,sha256=hoREzQo3FXMN79pqQLO2jgsDEvudciomyKii7MWljAM,374
|
27
|
-
pycityagent/environment/utils/const.py,sha256=
|
27
|
+
pycityagent/environment/utils/const.py,sha256=1LqxnYJ8FSmq37fN5kIFlWLwycEDzFa8SFS-8plrFlU,5396
|
28
28
|
pycityagent/environment/utils/geojson.py,sha256=LVHAdEhnZM8d0BoUnuPiIL_gaeXBIIglrLrfje5M0b4,661
|
29
29
|
pycityagent/environment/utils/grpc.py,sha256=6EJwKXXktIWb1NcUiJzIRmfrY0S03QAXXGcCDHqAT00,1998
|
30
30
|
pycityagent/environment/utils/map_utils.py,sha256=lYOEoCFFK6-e9N5txLMMq4HUlxMqc8Uw1YrGW5oJmgg,5749
|
@@ -70,6 +70,6 @@ pycityagent/workflow/block.py,sha256=l-z9iJo9_USZQRyj4TLMfihK0-tnNDG0a6jVk9WhG0o
|
|
70
70
|
pycityagent/workflow/prompt.py,sha256=6jI0Rq54JLv3-IXqZLYug62vse10wTI83xvf4ZX42nk,2929
|
71
71
|
pycityagent/workflow/tool.py,sha256=xADxhNgVsjNiMxlhdwn3xGUstFOkLEG8P67ez8VmwSI,8555
|
72
72
|
pycityagent/workflow/trigger.py,sha256=Df-MOBEDWBbM-v0dFLQLXteLsipymT4n8vqexmK2GiQ,5643
|
73
|
-
pycityagent-2.0.
|
74
|
-
pycityagent-2.0.
|
75
|
-
pycityagent-2.0.
|
73
|
+
pycityagent-2.0.0a26.dist-info/METADATA,sha256=niz64Rm2ZNvVTtcluHfdvoGcTgtqGYUGrNqVb23L2us,8033
|
74
|
+
pycityagent-2.0.0a26.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
75
|
+
pycityagent-2.0.0a26.dist-info/RECORD,,
|
File without changes
|