Township 是playrix的模拟经营游戏。
Township Scheduler 是以此为课题的玩具项目,用于我自己学习Timefold和Vaadin的使用。
主要功能是依据给出的【订单】计算需要的【生产活动】,再通过Timefold计算分配这些【生产活动】的【日期时间】和【工厂】。
未完工,BUG多。
- forbidMismatchFactory:硬性约束,避免将【生产活动】安排在不是对于的工厂上
- forbidBrokenQueueFactoryAbility:硬性约束,避免【生产活动】超出工厂的最大生产队列容量
- forbidBrokenSlotFactoryAbility:硬性约束,避免【生产活动】超出田地、农场的最大生产槽容量
- forbidBrokenPrerequisite:硬性约束,避免【生产活动】违反先后顺序
- shouldEveryArrangementAssigned:容忍约束,【生产活动】能排尽排
- shouldNotBrokenDeadlineOrder:容忍约束,有时间限制的【生产活动】不得超时
- shouldNotArrangeInPlayerSleepTime:容忍约束,不在晚上睡觉时安排【生产活动】
- preferArrangeAsSoonAsPassable:软性约束,【生产活动】能尽早排就尽早排
- 后端:Spring Boot
- 前端:Vaadin Platform
- 求解器:Timefold
- 数据库:H2 内存数据库(开发环境)
- 构建工具:Maven
- 代码工具:Lombok, Spotless(代码格式化)
- 资源调度:通过 Timefold 实现智能调度算法,优化资源分配。
- 订单管理:支持订单的创建、修改、删除和查询。
- 数据爬取:从指定网站爬取数据并进行处理。
- 可视化:提供资源调度和订单管理的可视化界面。
-
克隆项目
-
安装依赖 mvn clean install
-
运行项目 mvn spring-boot:run
- 数据库配置:
src/main/resources/application.properties
- 调度引擎配置:
src/main/resources/timefold-township-config.xml