Skip to content

wangxiaowu9527/lift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

项目名:电梯调度模拟

背景:

在新公司日常搬砖一段时间后,发现办公室所在大厦客梯调度比较坑爹,经常是比如已显示调度到A节点, 然而最终等来开门的是B节点,在上班高峰期就会造成尴尬的重新排队(被迫插队)...... 这里就自娱自乐,写了一个模拟电梯调度算法,实现基本的配置,查看实时运行状态,调度到最短到达的节点(根据剩余最少任务层数计算)等。 当然这并非最优解,您也可在此基础上做进一步优化。

技术架构:基于Flask框架, Python3环境(本项目为3.10.11)

启动(示例为Linux系统)

1. 下载源码

git clone -b main https://github.com/wangxiaowu9527/lift.git

2. 安装Python3,创建虚拟环境,略

3. 启动虚拟环境后,安装项目依赖

cd lift && pip3 install -r requirements.txt

4. 复制配置文件,按需编辑

cp conf.py.example conf.py

5. 打开一个终端启动Agent(默认开启5001端口,主程序端口+1)

python3 agent_main.py

6. 再打开一个终端开启项目主程序 (默认开启5000端口)

python3 main.py 主程序基本URL => http://localhost:5000

主程序接口(所有接口,只有正确返回时,会显示 {"code": 0, ...}

非正确返回时,code值非0,请关注相关msg等信息或查看日志)

1. GET /nodes 获取节点基本信息
2. GET /status 获取节点运行状态
3. POST /out 电梯外部按"上"或"下"

floor_id: int类型,必需参数,释义:所在电梯外部楼层号; direct: string类型且只能为"up"或"down",必需参数,释义:上或下; 入参示例 {"floor_id": 2, "direct": "up"}

4. POST /in 电梯内部按目的楼层

node_name: string类型且只能在conf.py中配置的节点名称中(NODES.name),必需参数,释义:节点名称; floor_id: int类型,必需参数,释义:目的楼层号; 入参示例 {"node_name": "A", "floor_id": 5}

About

电梯调度模拟程序

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages