搬运
AgentIdleStrategyOption
module-attribute
¶
AgentSelectionStrategyName
module-attribute
¶
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
AutonomousMovable ¶
Entity ¶
entity模块,用来存储交互文件中结点(事件、资源池、货架组等)以及所有空间标记的信息
TODO:类型标注、泛型
源代码位于: logis/biz/sim/component/model/__init__.py
__init__ ¶
源代码位于: logis/biz/sim/component/model/__init__.py
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
IRackSelectionStrategy ¶
货架选择策略,从若干货架中筛选出符合操作需求的货架
源代码位于: logis/biz/sim/storage/iface/select.py
__init__ ¶
select_racks
abstractmethod
¶
select_racks(operation: OperationType, stock: IStock, rack_group: Optional[RackGroupClass] = None, **kwargs) -> List[IRack]
从所有可操作的货架中筛选出符合操作需求的货架
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
operation
|
OperationType
|
操作类型 |
必需 |
stocks
|
货物列表 |
必需 | |
rack_group
|
Optional[RackGroupClass]
|
货架组,如果不传则使用初始化时传的货架组 |
None
|
返回:
| 类型 | 描述 |
|---|---|
List[IRack]
|
符合操作需求的货架列表 |
源代码位于: logis/biz/sim/storage/iface/select.py
ITask ¶
任务基础抽象类
源代码位于: logis/task/model/__init__.py
ITransportBlueprint ¶
搬运蓝图基类
源代码位于: logis/biz/sim/transport/iface/__init__.py
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 357 358 359 360 361 362 363 364 365 | |
__agent_idle_strategy__
instance-attribute
¶
__agent_selection_strategy__
instance-attribute
¶
__destination_strategy__
instance-attribute
¶
__path_finding_strategy__
instance-attribute
¶
__pickup_strategy__
instance-attribute
¶
after_release_resource
instance-attribute
¶
after_release_resource: AgentIdleStrategyOption = release_config[0] if len(release_config) > 0 else ''
agent_selection_strategy_name
instance-attribute
¶
搬运资源选择策略
destination_id
instance-attribute
¶
destination_selection_strategy
instance-attribute
¶
destination_selection_strategy: Optional[str] = none_if_in(get('目的地选择策略') or get('工作站选择策略'), '-1', 'null')
目的地选择策略
go_home_frequency
instance-attribute
¶
pathfinding_alg_name
instance-attribute
¶
寻路算法名,默认A*算法
pickup_location_id
instance-attribute
¶
retrieval_location_selection_strategy
instance-attribute
¶
取料位置选择策略
transport_resource_id
instance-attribute
¶
__init__ ¶
源代码位于: logis/biz/sim/transport/iface/__init__.py
assign_target_location ¶
assign_target_location(*stocks: IStock, **kwargs) -> Generator[simpy.Event, Any, Tuple[List[IStock], Optional[IStock]]]
为货物分配目标位置
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
stocks
|
IStock
|
货物列表 |
()
|
返回:
| 类型 | 描述 |
|---|---|
Tuple[List[IStock], Optional[IStock]]
|
Tuple[List["Stock"], Optional["Stock"]]: 成功的货物列表、未分配的货物 |
源代码位于: logis/biz/sim/transport/iface/__init__.py
can_return_original_place ¶
检查指定智能体是否可以返回原始位置
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
agent
|
Union[IAgent]
|
智能体 |
必需 |
返回:
| 名称 | 类型 | 描述 |
|---|---|---|
bool |
是否可以返回原始位置 |
源代码位于: logis/biz/sim/transport/iface/__init__.py
get_agent_idle_strategy ¶
智能体空闲策略
源代码位于: logis/biz/sim/transport/iface/__init__.py
get_agent_selection_strategy ¶
智能体选择策略
源代码位于: logis/biz/sim/transport/iface/__init__.py
get_destination_strategy ¶
目的地选择策略
源代码位于: logis/biz/sim/transport/iface/__init__.py
get_path_finding_strategy ¶
路径规划策略
源代码位于: logis/biz/sim/transport/iface/__init__.py
get_pickup_strategy ¶
取料位置选择策略 如果没有设置取料位置选择策略,尝试从前一个蓝图块获取
源代码位于: logis/biz/sim/transport/iface/__init__.py
get_rack_selection_strategy ¶
货架选择策略(原目的地选择策略)
get_task_manifest ¶
由于搬运具有取料和交付两种任务, 因此需要分别设置取料任务清单和交付任务清单。
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
stage
|
Literal['pickup', 'delivery']
|
任务阶段 |
必需 |
返回:
| 名称 | 类型 | 描述 |
|---|---|---|
TaskManifest |
TaskManifest
|
任务清单 |
源代码位于: logis/biz/sim/transport/iface/__init__.py
infer_working_stage ¶
transport_item ¶
transport_item(object: Union[List[IStock], IStock], task_type: str, order: Optional[ITask] = None, agent: Optional[IAgent] = None, **kwargs) -> Generator[simpy.Event, Any, Optional[IStock]]
单次运输货物
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
object
|
Union[List[IStock], IStock]
|
待运输目标 |
必需 |
task_type
|
str
|
任务类型 |
必需 |
order
|
Optional[ITask]
|
对应的订单,如果所有货物属于同一个订单,否则应从货物中获取order_id |
None
|
agent
|
Optional[IAgent]
|
所使用的智能体,如果不传,则应在此方法内部分配、释放智能体 |
None
|
返回:
| 类型 | 描述 |
|---|---|
Optional[IStock]
|
Optional["IStock"]: 运输成功返回运输的货物,否则返回None |
产生:
| 类型 | 描述 |
|---|---|
Event
|
simpy.Event: 运输事件 |
源代码位于: logis/biz/sim/transport/iface/__init__.py
ITransportDevice ¶
搬运设备(智能体的一种),同时具备移动属性
源代码位于: logis/biz/sim/transport/__init__.py
ManagedMovable ¶
按照外部manager规划路线进行移动 FIXME: 此方式暂未完全实现
源代码位于: logis/biz/sim/transport/__init__.py
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 | |
__init__ ¶
源代码位于: logis/biz/sim/transport/__init__.py
clear_routine ¶
get_current_location
abstractmethod
¶
get_target_location
abstractmethod
¶
is_routine_empty ¶
pause_moving_by_routine ¶
process
abstractmethod
¶
restore_moving_by_routine ¶
恢复暂停的进度
源代码位于: logis/biz/sim/transport/__init__.py
start_moving_by_routine ¶
start_moving_by_routine(until_target: bool = False, until_empty: bool = False, wait_interval: float = 3, **kwargs)
按照阻塞队列中的路线移动
源代码位于: logis/biz/sim/transport/__init__.py
stop_moving_by_routine ¶
update_routine ¶
更新阻塞队列中的路线:删除原有点并添加新的点
源代码位于: logis/biz/sim/transport/__init__.py
wait
abstractmethod
¶
wait_routine_empty ¶
等待移动完成
源代码位于: logis/biz/sim/transport/__init__.py
ObstacleDetector ¶
障碍检测器
源代码位于: logis/biz/sim/transport/__init__.py
detect_obstacles ¶
ObstacleDetectorConfig ¶
障碍检测配置
源代码位于: logis/biz/sim/transport/__init__.py
ObstacleDetectorOutput ¶
源代码位于: logis/biz/sim/transport/__init__.py
PathFindingAlgorithm ¶
寻路算法
源代码位于: logis/alg/path_finding/base.py
Time ¶
default_algorithm_matcher ¶
默认算法匹配器 根据输入的类型匹配对应的寻路算法 如果找不到,则返回默认的A*算法
源代码位于: logis/alg/path_finding/base.py
find_algorithm ¶
find_algorithm(resolver: AlgorithmTypeResolver, space: Optional[Dict] = None, **kwargs) -> Type[PathFindingAlgorithm]
根据解析器和参数获取对应的寻路算法类
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
resolver
|
AlgorithmTypeResolver
|
解析器函数 |
必需 |
kwargs
|
解析器需要的参数 |
{}
|