上传文件至 include/dispatch
This commit is contained in:
97
include/dispatch/advanced_dispatcher.h
Normal file
97
include/dispatch/advanced_dispatcher.h
Normal file
@@ -0,0 +1,97 @@
|
||||
#ifndef ADVANCED_DISPATCHER_H
|
||||
#define ADVANCED_DISPATCHER_H
|
||||
|
||||
#include "graph_map.h"
|
||||
#include "agv_manager_base.h"
|
||||
#include "resource_manager.h"
|
||||
#include <thread>
|
||||
#include <atomic>
|
||||
#include <chrono>
|
||||
#include <functional>
|
||||
|
||||
/**
|
||||
* @brief 高级调度器统计信息
|
||||
*/
|
||||
struct DispatcherStatistics {
|
||||
uint64_t total_tasks;
|
||||
uint64_t completed_tasks;
|
||||
uint64_t failed_tasks;
|
||||
uint64_t active_agvs;
|
||||
|
||||
DispatcherStatistics()
|
||||
: total_tasks(0), completed_tasks(0), failed_tasks(0), active_agvs(0) {}
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 高级调度器 - 基于图的多AGV任务调度系统
|
||||
*/
|
||||
class AdvancedDispatcher {
|
||||
public:
|
||||
enum class DispatcherState {
|
||||
STOPPED, // 停止
|
||||
RUNNING, // 运行中
|
||||
PAUSED // 暂停
|
||||
};
|
||||
|
||||
private:
|
||||
// 核心组件
|
||||
GraphMap* graph_map_;
|
||||
ResourceManager* resource_manager_;
|
||||
AGVManagerBase* agv_manager_;
|
||||
|
||||
// 调度器状态
|
||||
std::atomic<DispatcherState> state_;
|
||||
std::atomic<bool> should_stop_;
|
||||
|
||||
// 调度线程
|
||||
std::thread dispatch_thread_;
|
||||
|
||||
// 调度参数
|
||||
int dispatch_interval_ms_; // 调度间隔(毫秒)
|
||||
|
||||
// 统计信息
|
||||
DispatcherStatistics statistics_;
|
||||
|
||||
// 任务队列(简化实现)
|
||||
std::vector<std::unique_ptr<Task>> task_queue_;
|
||||
mutable std::mutex task_mutex_;
|
||||
|
||||
// 互斥锁
|
||||
mutable std::mutex dispatcher_mutex_;
|
||||
|
||||
public:
|
||||
AdvancedDispatcher(GraphMap* map, ResourceManager* resource_manager);
|
||||
AdvancedDispatcher(GraphMap* map, ResourceManager* resource_manager, AGVManagerBase* agv_manager);
|
||||
~AdvancedDispatcher();
|
||||
|
||||
// ==================== 系统控制 ====================
|
||||
bool start();
|
||||
void stop();
|
||||
void pause();
|
||||
void resume();
|
||||
DispatcherState getState() const { return state_.load(); }
|
||||
|
||||
// ==================== 任务管理 ====================
|
||||
bool addTask(int task_id, int start_point_id, int end_point_id,
|
||||
const std::string& description, int priority = 1);
|
||||
bool cancelTask(int task_id);
|
||||
|
||||
// ==================== 任务执行反馈 ====================
|
||||
void onTaskStarted(int task_id, int agv_id);
|
||||
void onTaskCompleted(int task_id, int agv_id, bool success);
|
||||
|
||||
// ==================== 配置和监控 ====================
|
||||
void setDispatchInterval(int interval_ms) { dispatch_interval_ms_ = interval_ms; }
|
||||
DispatcherStatistics getStatistics();
|
||||
|
||||
void printSystemStatus() const;
|
||||
|
||||
private:
|
||||
// ==================== 内部方法 ====================
|
||||
void dispatchLoop();
|
||||
void performDispatch();
|
||||
bool assignTaskToAGV(Task* task, AGV* agv);
|
||||
void updateStatistics();
|
||||
};
|
||||
|
||||
#endif // ADVANCED_DISPATCHER_H
|
||||
Reference in New Issue
Block a user