# 智能派车调度算法
**Repository Path**: dayangren/Dynamic-vehicle-dispatching-system
## Basic Information
- **Project Name**: 智能派车调度算法
- **Description**: No description available
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-25
- **Last Updated**: 2026-01-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 动态智能排车调度系统
基于 Python + FastAPI 后端和 Vue 3 前端的动态车辆调度演示系统。
## 功能特性
- **智能调度算法**:支持硬性约束(时间、位置、座位、车型)和软性约束(排放标准、车龄、品牌偏好)
- **成本优化**:综合考虑车费、空驶费、后续影响空驶费,实现最优分配
- **仪表盘可视化**:统计卡片、成本分布图、车辆使用率图表
- **甘特图展示**:直观显示各车辆的任务时间安排
- **任务管理**:支持任务的创建、编辑、删除和重新调度
## 项目结构
```
├── backend/ # 后端代码
│ ├── main.py # FastAPI 应用入口
│ ├── models.py # 数据模型
│ ├── scheduler.py # 调度算法核心
│ ├── constraints.py # 约束检查
│ ├── cost.py # 成本计算
│ ├── api.py # API 路由
│ ├── mock_data.py # 模拟数据
│ └── requirements.txt # Python 依赖
├── frontend/ # 前端代码
│ ├── src/
│ │ ├── components/ # Vue 组件
│ │ ├── views/ # 页面视图
│ │ └── api/ # API 封装
│ ├── package.json
│ └── vite.config.js
└── tec.MD # 技术设计文档
```
## 快速开始
### 1. 启动后端服务
```bash
cd backend
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # macOS/Linux
# 或 venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
# 启动服务
python main.py
# 或使用 uvicorn
uvicorn main:app --reload --port 8000
```
后端服务将在 http://localhost:8000 启动。
- API 文档: http://localhost:8000/docs
- 备用文档: http://localhost:8000/redoc
### 2. 启动前端服务
```bash
cd frontend
# 安装依赖
npm install
# 启动开发服务器
npm run dev
```
前端服务将在 http://localhost:3000 启动。
## API 接口
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/vehicles | 获取车辆列表 |
| GET | /api/tasks | 获取任务列表 |
| POST | /api/tasks | 创建任务 |
| PUT | /api/tasks/{id} | 更新任务 |
| DELETE | /api/tasks/{id} | 删除任务 |
| POST | /api/schedule | 执行调度 |
| GET | /api/schedule | 获取调度结果 |
| GET | /api/schedule/stats | 获取统计数据 |
| POST | /api/reset | 重置数据 |
## 调度算法说明
### 调度流程图
```mermaid
flowchart TD
A[输入任务/车辆数据] --> B[任务按开始时间排序]
B --> C{逐任务挑选车辆}
C --> D[遍历候选车辆]
D --> E{硬性约束}
E -->|通过| F{软性约束}
E -->|不通过| D
F -->|通过| G[计算成本指标
车费/空驶/后续影响/预算匹配]
F -->|不通过| D
G --> H[评分加权
成本/预算/目标完成率]
H --> I{是否当前最佳}
I -->|是| J[记录最佳车辆]
I -->|否| D
J --> K{候选遍历结束}
K -->|有最佳| L[生成分配/更新车辆状态
位置/可用日期/日程]
K -->|无最佳| M[标记未分配任务]
L --> C
M --> C
C -->|全部任务完成| N[局部交换优化]
N --> O[输出调度结果/统计]
```
### 硬性约束
- 时间无冲突(车辆同一时间只能执行一个任务)
- 位置可达(考虑空驶距离和所需时间)
- 座位足够(车辆座位数 >= 任务需求)
- 目的地支持(车辆价格表中有对应条目)
### 软性约束
- 排放标准匹配
- 车龄限制
- 车型偏好
- 品牌偏好
### 成本核算
- 车费 = 日单价 × 服务天数
- 空驶费 = 空驶距离 × 空驶费率
- 总成本 = 车费 + 空驶费 + 后续影响空驶费
### 评分权重
- 成本权重: 50%
- 预算匹配权重: 20%
- 目标完成率权重: 30%
## 技术栈
**后端**
- Python 3.11+
- FastAPI
- Pydantic
- Uvicorn
**前端**
- Vue 3
- Vite
- Element Plus
- ECharts
- Axios
- Day.js