OptaPlanner笔记5
2.4 与spring boot集成
2.4.4 添加依赖
<dependency><groupId>org.optaplanner</groupId><artifactId>optaplanner-spring-boot-starter</artifactId>
</dependency>
2.4.8 创建求解器服务
import org.optaplanner.core.api.solver.SolverJob;
import org.optaplanner.core.api.solver.SolverManager;@RestController
@RequestMapping("/timeTable")
public class TimeTableController {// 注入求解器管理器@Autowiredprivate SolverManager<TimeTable, UUID> solverManager;@PostMapping("/solve")public TimeTable solve(@RequestBody TimeTable problem) {UUID problemId = UUID.randomUUID();// 提交问题并开始求解SolverJob<TimeTable, UUID> solverJob = solverManager.solve(problemId, problem);TimeTable solution;try {// 等待求解结束solution = solverJob.getFinalBestSolution();} catch (InterruptedException | ExecutionException e) {throw new IllegalStateException("Solving failed.", e);}return solution;}
}
2.4.9 配置求解终止条件
application.yml
optaplanner:solver:termination:spent-limit: 5s
2.4.10.2.2. 测试求解器
在单元测试中构造问题数据集,并发送到TimeTableController测试求解器。
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;@SpringBootTest(properties = {// 禁用消耗时间的终止条件,使用最佳分数限制终止条件"optaplanner.solver.termination.spent-limit=1h","optaplanner.solver.termination.best-score-limit=0hard/*soft"})
public class TimeTableControllerTest {@Autowiredprivate TimeTableController timeTableController;@Test@Timeout(600_000)public void solve() {TimeTable problem = generateProblem();TimeTable solution = timeTableController.solve(problem);assertFalse(solution.getLessonList().isEmpty());for (Lesson lesson : solution.getLessonList()) {assertNotNull(lesson.getTimeslot());assertNotNull(lesson.getRoom());}assertTrue(solution.getScore().isFeasible());}...
}
相关文章:
OptaPlanner笔记5
2.4 与spring boot集成 2.4.4 添加依赖 <dependency><groupId>org.optaplanner</groupId><artifactId>optaplanner-spring-boot-starter</artifactId> </dependency>2.4.8 创建求解器服务 import org.optaplanner.core.api.solver.Solv…...
PS注意事项优漫动游
PS入门注意事项AdobePhotoshop是目前最流行的平面设计软件之一。可以说,只要你接触平面设计,那么无论早晚,你都要和它打交道。关于Photoshop,要说的实在太多太多,但不论你想让它成为你的左膀右臂,或者仅仅是…...
matplotlib 判断鼠标是否点击在当前线上
在开发中有一个需求:对生成的一条线进行拖拽。 我将这个方法实现在线所在的类里,这个过程中需要判断鼠标是否点击在当前线上,从而实现拖拽。 实现代码如下: # 点击事件 def on_press(self,event):if event.inaxes ! self.ax:retur…...
bash中(冒号破折号)的用法 —— 筑梦之路
${PUBLIC_INTERFACE:-eth0} :- 的用途是什么? 含义:如果 $PUBLIC_INTERFACE 存在且不是 null,则返回其值,否则返回 "eth0"。 ${parameter:-word} 使用默认值。如果 parameter 未设置或为 null,则 word 的扩…...
LeetCode150道面试经典题--同构字符串(简单)
1.题目 给定两个字符串 s 和 t ,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,…...
Redis - 数据类型映射底层结构
简介 从数据类型上体现就是,同一个数据类型,在不同的情况下会使用不同的编码类型,底层所使用的的数据结构也不相同。 字符串对象 字符串对象的编码可以是 int、raw 和 embstr 三者之一。 embstr 编码是专门用于保存简短字符串的一种优化编…...
MySQL数据库表的增删查改 - 进阶
一,数据库约束 1.1 约束对象 not null - 该列不能为空unique - 保证该列的每一行都不一样default - 规定没有给列赋值时的默认值(自定义)primary key - not null 和 unique 的结合,会给该列添加一个索引࿰…...
8086汇编语言工作环境 百度网盘下载
链接:https://pan.baidu.com/s/1-1K7gX859xejaUK70OTgtw?pwdbfa5 提取码:bfa5 为了方便下载,找了很多资料,也是从其他人那边分享过来的,也方便其他人 文件内容:...
ES6 解构
解构的语法 … {} 解构的语法中,...(展开运算符)和 {}(对象字面量)扮演着不同的角色。 ...(展开运算符): 在解构中,... 被用作展开运算符,用于将数组或对象中…...
React三个状态时触发的相应钩子
01.初始化状态。 这个阶段由render()函数触发; 1.constructor(); 2.componentWillMount(); 在17版本以后改为UNSAFE_componentWillMount() reason:react为组件异步渲染做准备; 3.render(); 4.componentDidMount(); 这…...
阿里云服务器部署Drupal网站教程基于CentOS系统
阿里云百科分享如何在CentOS 7操作系统的ECS实例上搭建Drupal电子商务网站。Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。它用于…...
【广州华锐视点】VR燃气轮机故障判断模拟演练系统
VR燃气轮机故障判断模拟演练系统由广州华锐视点开发,是一款基于虚拟现实技术的教育工具,旨在为学生提供一个安全、高效、互动的学习环境,帮助他们更好地掌握燃气轮机的故障诊断技能。 这款VR实训软件能够模拟真实的燃气轮机故障诊断场景&…...
第01天 什么是CSRF ?
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 每天一个知识点 ✨特色专栏࿱…...
uniapp 自定义手机顶部状态栏不生效问题
想要的效果想淘宝一样,底色覆盖到手机顶部,找了两天都没找到原因,过程很艰苦,直接上结果吧 项目是后来接手的,最终原因出在这, "immersed" : false>设置为 true 就可以了,沉浸式样…...
C++语法中bitset位图介绍及模拟实现
一、位图的引入 先来看下边一道面试题: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 经过我们之前的学习,我们可能会有以下的思路: 对这些数进行排序ÿ…...
Debezium系列之:深入理解消息过滤,实现过滤数据库删除事件,只采集数据库新增和更新事件
Debezium系列之:深入理解消息过滤,实现过滤数据库删除事件,只采集数据库新增和更新事件 一、需求背景二、相关技术三、部署相关jar包四、参数详解五、总结一、需求背景 使用Debezium采集数据库数据,现在部分表只想采集新增数据和更新数据二、相关技术 实现这个需求的技术可…...
Substack 如何在去中心化内容创作领域掀起波澜
面对数字内容广告化的困境,Substack回归做内容的初心,通过产品和平台双轮驱动,重塑一个去中心化的多元文化内容聚集地,实现了增长突破。其核心策略在于先使用简洁的创作工具赋能内容生产,进而通过平台的互动机制促进用…...
【MFC】07.MFC六大机制:消息映射-笔记
本专栏上两篇文章分别介绍了【MFC】05.MFC第一大机制:程序启动机制和【MFC】06.MFC第二大机制:窗口创建机制,这篇文章来为大家介绍MFC的第三大机制:消息映射 typfd要实现消息映射,必须满足的三个条件: 类必…...
python操作数据库
python操作数据库 首先安装数据插件 pip install pymysqlfrom pymysql import Connection # 引入数据库第三方包# 创建链接 conn Connection(host"localhost", # 主机名ipport3306,user"root",# 用户名password"123456" # 密码 )print(con…...
【C语言】小游戏-三字棋
大家好,我是深鱼~ 目录 一、游戏介绍 二、文件分装 三、代码实现步骤 1.制作简易游戏菜单 2.初始化棋盘 3.打印棋盘 4.玩家下棋 5.电脑随机下棋 6.判断输赢 7.判断棋盘是否满了 四、完整代码 game.h(相关函数的声明,整个代码要引用的头文件以及宏…...
二、linux目录编辑
二、linux目录编辑1.指令1.1echo基本语法echo 【选项】 【字符串/变量】重定向:把默认输出的方向进行修改>>:重定向追加 >:重定向覆盖例子:以追加的方式将“abc”写入index.html文件中echo "abc" >> index.html进阶案例&#x…...
如何深度掌控Ryzen性能:SMUDebugTool硬件调试终极指南 [特殊字符]
如何深度掌控Ryzen性能:SMUDebugTool硬件调试终极指南 🚀 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地…...
告别浏览器卡顿!除了重装IDM插件,这3个隐藏设置你调了吗?
深度优化IDM与浏览器协作:3个隐藏设置提升下载稳定性 当IDM与浏览器集成出现问题时,大多数用户的第一反应是重新安装插件——这确实能解决部分临时性故障,但真正的技术爱好者更关注如何从系统层面预防问题发生。本文将揭示三个常被忽略的高级…...
长沙金海中学答题:中天电子实现精准调控
课堂困境与答题需求长沙金海中学在传统教学模式中,面临着诸多答题相关的痛点。每次进行50题的答题测试,教师需要花费30分钟以上的时间进行人工批改,这不仅耗时耗力,还容易出现批改错误。同时,课堂互动参与率不足30%&am…...
图像图片照片风格转换API接口介绍
前言 在日常工作生活中,我们可能会需要将图片转化风格后再使用,比如把自己拍的照片转换成铅笔画。图像风格转换可以帮我们实现此功能,还可用于开展趣味活动,或集成到美图应用中对图像进行风格转换。 图像风格转换可将原始图像转…...
我的模型总在测试集上翻车?可能是数据增强的‘姿势’不对!避坑指南与场景化策略
模型泛化困境突围:数据增强的精准应用与场景化避坑指南 当你的模型在训练集上表现优异,却在测试集上频频"翻车"时,问题可能出在数据增强这一关键环节。数据增强本应是提升模型泛化能力的利器,但不当使用反而会成为引入噪…...
youlai-mall常见问题解决方案:部署、配置与开发中的坑与填法
youlai-mall常见问题解决方案:部署、配置与开发中的坑与填法 【免费下载链接】youlai-mall 🚀基于 Spring Boot 3、Spring Cloud & Alibaba 2022、SAS OAuth2 、Vue3、Element-Plus、uni-app 构建的开源全栈商城。 项目地址: https://gitcode.com/…...
2026最新Win10/Win11玩博德之门3提示dll丢失?这里有一份安全修复指南
作为一个平时工作忙、只能趁周末玩两把《博德之门3》的普通Steam玩家,最怕的就是周五晚上打开游戏,突然弹窗“找不到 ***.dll”。那一刻,心里真的会咯噔一下。我电脑知识不多,怕乱下载东西中病毒,更不想为了一个报错就…...
单片机Flash不够用?手把手教你用AT24C256存储30张BMP图片(附完整代码)
突破单片机Flash限制:用AT24C256实现30张BMP图片存储的完整方案 当你在开发一个需要显示多张图片的单片机项目时,Flash存储空间不足是一个常见痛点。最近我在一个OLED显示项目中就遇到了这个问题——需要显示30张12864分辨率的BMP图片,但单片…...
VMware VSAN集群关机重启,别再直接拔电源了!手把手教你7.0U3的正确姿势
VMware VSAN集群安全关机与重启实战指南:7.0U3版本最佳实践 当数据中心需要整体搬迁或进行硬件维护时,VSAN集群的关机与重启操作绝非简单的电源管理。许多运维工程师习惯用实验环境的粗暴方式处理生产系统——直接断电、跳过维护模式、忽视预检步骤&…...
