智能体
AgentSelectionStrategyName
module-attribute
¶
DEFAULT_PYDANTIC_MODEL_CONFIG
module-attribute
¶
DEFAULT_PYDANTIC_MODEL_CONFIG = ConfigDict(strict=False, arbitrary_types_allowed=True, extra='ignore', validate_by_alias=True, validate_by_name=True, coerce_numbers_to_str=True, alias_generator=camelize, populate_by_name=True)
GoHomeStrategyFrequency
module-attribute
¶
AgentIdleStrategy ¶
智能体空闲策略
源代码位于: logis/biz/sim/agent/iface/idle_strategy.py
__init__ ¶
is_idle ¶
on_idle
abstractmethod
¶
on_idle(agent: Optional[AgentClass] = None, is_idle: Optional[Predicate[AgentClass]] = None, **kwargs) -> Generator[simpy.Event, Any, None]
智能体做完任务之后的回调逻辑
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
agent
|
Optional[AgentClass]
|
如果不传则使用初始化时传的智能体,否则使用传参的智能体 |
None
|
is_idle
|
Optional[Predicate[AgentClass]]
|
判断智能体是否空闲的方法,如果不传则使用is_idle方法,否则使用传参的方法判断 |
None
|
源代码位于: logis/biz/sim/agent/iface/idle_strategy.py
AgentManifest ¶
源代码位于: logis/biz/sim/agent/model/__init__.py
DefaultAgentSelectionStrategy ¶
默认智能体选择策略
源代码位于: logis/biz/sim/agent/iface/agent_apply_strategy.py
request ¶
选择所有智能体
源代码位于: logis/biz/sim/agent/iface/agent_apply_strategy.py
GoHomeStrategy ¶
回到归属地策略
源代码位于: logis/biz/sim/agent/iface/idle_strategy.py
__init__ ¶
__init__(frequency: GoHomeStrategyFrequency, agent: Optional[AgentClass] = None, env: Optional[Environment] = None, **kwargs) -> None
源代码位于: logis/biz/sim/agent/iface/idle_strategy.py
on_idle ¶
on_idle(agent: Optional[AgentClass] = None, is_idle: Optional[Predicate[AgentClass]] = None, **kwargs)
默认空闲策略,智能体在空闲时,等待下一个任务
源代码位于: logis/biz/sim/agent/iface/idle_strategy.py
IAgent ¶
智能体抽象基类
源代码位于: logis/biz/sim/agent/iface/base.py
path_finding_strategy
instance-attribute
¶
寻路策略
__init__ ¶
源代码位于: logis/biz/sim/agent/iface/base.py
do_move
abstractmethod
¶
move
abstractmethod
¶
move(target: Point, speed: Optional[Union[float, Speed]] = None, **kwargs) -> Generator[simpy.Event, Any, None]
从当前位置移动到目标位置,此方法是最顶层的移动方法,内部处理路径规划并逐步调用do_move TODO: 考虑将speed等参数作为agent的内部属性,而不是在这里传参
源代码位于: logis/biz/sim/agent/iface/base.py
resolve_binding_graph
abstractmethod
¶
resolve_center_point
abstractmethod
¶
start_working
abstractmethod
¶
IAgentPool ¶
智能体资源池,生命周期钩子如下: 1. 初始化资源池 2. 在申请资源之前 3. 申请资源 4. 在资源申请到之后 5. 在资源释放之前 6. 释放资源 7. 在资源释放之后
TODO: 继承自ITaskHandler
源代码位于: logis/biz/sim/agent/iface/pool.py
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 | |
__init__ ¶
源代码位于: logis/biz/sim/agent/iface/pool.py
add_agent ¶
添加智能体到资源池
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
agent
|
IAgent
|
智能体 |
必需 |
引发:
| 类型 | 描述 |
|---|---|
AssertionError
|
如果资源池已满,则无法继续添加智能体 |
源代码位于: logis/biz/sim/agent/iface/pool.py
after_resource_released ¶
after_resource_requested
abstractmethod
¶
assign_resources
abstractmethod
¶
assign_resources(task_type: str, task_keys: List[T], **kwargs) -> Generator[simpy.Event, Any, Dict[AgentId, AgentManifest[AgentClass, TaskType]]]
输入任务分配智能体
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
task_type
|
str
|
任务类型 |
必需 |
task_keys
|
List[T]
|
任务key列表 |
必需 |
kwargs
|
其他参数 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Dict[AgentId, AgentManifest[AgentClass, TaskType]]
|
智能体id到智能体manifest的映射 |
源代码位于: logis/biz/sim/agent/iface/pool.py
before_release_resource ¶
before_request_resource ¶
cancel_release_resource ¶
取消释放资源,默认仅实现了use_simpy_store模式
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
req
|
Event
|
待取消的释放事件 |
必需 |
源代码位于: logis/biz/sim/agent/iface/pool.py
cancel_request_resource ¶
取消申请资源,默认仅实现了use_simpy_store模式
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
req
|
Event
|
待取消的申请事件 |
必需 |
源代码位于: logis/biz/sim/agent/iface/pool.py
do_release_resource ¶
do_request_resource ¶
真正地执行申请资源
源代码位于: logis/biz/sim/agent/iface/pool.py
get_resource_by_id ¶
init_simpy_store ¶
is_locked ¶
is_type_of ¶
判断资源池是否是指定类型的资源
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
t
|
Type
|
资源类型 |
必需 |
返回:
| 名称 | 类型 | 描述 |
|---|---|---|
bool |
bool
|
是否是指定类型的资源 |
release_resource
abstractmethod
¶
释放资源。此方法是个简单的方法组合(可能并不通用),内部会依次调用: 1. before_release_resource 2. do_release_resource 3. after_resource_released
如果不满足您的需求,请自定义IAgentSelectionStrategy策略并实现release方法
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
resource
|
AgentClass
|
要释放的资源 |
必需 |
kwargs
|
其他参数 |
{}
|
源代码位于: logis/biz/sim/agent/iface/pool.py
request_resource
abstractmethod
¶
request_resource(fast_fail: bool = False, **kwargs) -> Generator[simpy.Event, Any, Optional[IAgent]]
申请资源。此方法是个简单的方法组合(可能并不通用),内部会依次调用: 1. before_request_resource 2. do_request_resource 3. after_resource_requested
如果不满足您的需求,请自定义IAgentSelectionStrategy策略并实现request方法
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
strategy
|
智能体选择策略 |
必需 | |
fast_fail
|
bool
|
是否快速失败,如果为True,当资源池中没有可用资源时,直接返回None |
False
|
kwargs
|
其他参数 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Optional[IAgent]
|
智能体事件生成器 |
源代码位于: logis/biz/sim/agent/iface/pool.py
set_locked ¶
标记资源为已被锁定
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
resource
|
AgentClass
|
待标记的资源 |
必需 |
kwargs
|
其他参数 |
{}
|
返回:
| 名称 | 类型 | 描述 |
|---|---|---|
bool |
是否成功标记资源为已被锁定 |
unset_locked ¶
取消标记资源为未被锁定
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
resource
|
AgentClass
|
待取消标记的资源 |
必需 |
kwargs
|
其他参数 |
{}
|
返回:
| 名称 | 类型 | 描述 |
|---|---|---|
bool |
是否成功取消标记资源为未被锁定 |
IAgentSelectionStrategy ¶
智能体选择策略
源代码位于: logis/biz/sim/agent/iface/agent_apply_strategy.py
__init__ ¶
release ¶
释放智能体
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
agent
|
IAgent
|
智能体 |
必需 |
agent_pool
|
Optional[IAgentPool]
|
智能体池,如果不传,默认使用初始化时指定的智能体池 |
None
|
kwargs
|
其他参数 |
{}
|
返回:
| 名称 | 类型 | 描述 |
|---|---|---|
bool |
是否成功释放智能体 |
源代码位于: logis/biz/sim/agent/iface/agent_apply_strategy.py
request
abstractmethod
¶
request(agent_pool: Optional[IAgentPool] = None, fast_fail: bool = False, **kwargs) -> Optional[IAgent]
选择符合需求的智能体
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
agent_pool
|
Optional[IAgentPool]
|
智能体池,如果不传,默认使用初始化时指定的智能体池 |
None
|
fast_fail
|
bool
|
是否快速失败,如果为True,且当前智能体池没有可用智能体,则直接返回None |
False
|
kwargs
|
其他参数 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Optional[IAgent]
|
Optional[IAgent]: 符合需求的智能体 |
源代码位于: logis/biz/sim/agent/iface/agent_apply_strategy.py
IExpose ¶
用于通过SDK向外暴露参数
源代码位于: logis/biz/sim/iface/base.py
IGrid ¶
网格
源代码位于: logis/biz/sim/component/iface/grid.py
ISimPathGraph ¶
路径关系图
源代码位于: logis/biz/sim/graph/iface/__init__.py
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | |
__init__ ¶
源代码位于: logis/biz/sim/graph/iface/__init__.py
add_edges ¶
add_nodes ¶
edges ¶
find_path
abstractmethod
¶
find_path(src: Point, dest: Point, alg: PathFindingAlgorithm, excluded_vertices: List[Point] = [], **kwargs) -> PathFindingOutput
路径规划
TODO: 后续把图作为参数传入算法,而不是把算法作为参数传入图
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
src
|
Point
|
起始点 |
必需 |
dest
|
Point
|
目的地 |
必需 |
alg
|
PathFindingAlgorithm
|
路径规划算法,默认AStar算法 |
必需 |
excluded_vertices
|
List[Point]
|
排除的顶点,默认空列表 |
[]
|
**kwargs
|
其他参数 |
{}
|
返回:
| 名称 | 类型 | 描述 |
|---|---|---|
PathFindingOutput |
PathFindingOutput
|
路径规划结果 |
源代码位于: logis/biz/sim/graph/iface/__init__.py
get_index_point_map ¶
获取索引点映射
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
init
|
bool
|
是否强制重新初始化映射,默认False |
False
|
返回:
| 类型 | 描述 |
|---|---|
|
Dict[str, Point] |
get_locked_by_other ¶
get_point_by_index ¶
lock_node ¶
lock_path ¶
锁格
源代码位于: logis/biz/sim/graph/iface/__init__.py
nodes ¶
realtime_obstacles ¶
realtime_obstacles(my_lock_id: str, config: ObstacleDetectorConfig, **kwargs) -> Tuple[List[Point], List[Point]]
实时获取障碍物
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
my_lock_id
|
str
|
获取方的锁ID |
必需 |
config
|
ObstacleDetectorConfig
|
障碍物检测配置 |
必需 |
**kwargs
|
其他参数 |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Tuple[List[Point], List[Point]]
|
Tuple[List[Point], List[Point]]: (智能体障碍物点列表, 所有障碍物点列表) |
源代码位于: logis/biz/sim/graph/iface/__init__.py
remove_edges ¶
remove_edges_if_exists ¶
request_path_lock ¶
unlock_node ¶
unlock_nodes_by_lock_id ¶
Point ¶
此类不通用,历史遗留,不建议使用,如有需要建议使用GenericPoint 支持x,y,z三维坐标点,也可当作二维坐标使用 TODO: 处理单位
源代码位于: logis/data_type/point.py
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 | |
__hash__ ¶
源代码位于: logis/data_type/point.py
__init__ ¶
支持[x,y]、x,y、[x,y,z]、x,y,z传参赋值 默认x=y=z=0
TODO: 不应该自动转float、不应该自动保留两位小数
源代码位于: logis/data_type/point.py
__lt__ ¶
__repr__ ¶
__str__ ¶
__sub__ ¶
源代码位于: logis/data_type/point.py
from_tuple
classmethod
¶
of
classmethod
¶
to_tuple ¶
try_parse
classmethod
¶
尝试读取X、Y、Z坐标,返回一个Point对象