干货 | Tabu Search求解作业车间调度问题(Job Shop Scheduling)-附Java代码

本文主要是介绍干货 | Tabu Search求解作业车间调度问题(Job Shop Scheduling)-附Java代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文来源于公众号【程序猿声】,作者舟寒丶

作业车间调度问题

问题模型

举个栗子

有关禁忌搜索算法的内容,公众号内有详细教程:

干货 |【算法】禁忌搜索算法(Tabu Search,TS)超详细通俗解析附C++代码实例

干货 | 到底是什么算法,能让人们如此绝望?

禁忌搜索算法求解带时间窗的车辆路径规划问题详解(附Java代码)

大家可以点击超链接回顾相关知识,这里就不再细说了。

一般而言,用禁忌搜索算法解决问题时,需要注意的点无非就是以下几个:初始解的生成;禁忌对象的选择;邻域动作算子的选择。

我们简单介绍代码中使用的算子:

代码展示

代码是github上的开源代码,作者是Thiebout Dewitte。具体代码比较长,讲解需要花很长的篇幅,但是注解比较详细,因此就不在此展示了。我们简单介绍一下输入输出,感兴趣的朋友可以文末看到下载方式,自行下载研究。

输入部分

输入算例格式如下:

第一行为注释部分,第二行数字分别为工件数、机器数。

输出部分

运行代码时,可以多种运行方式:

在Main.java文件内选择所需运行模式,算例设置也在同一文件中。

测试单一算例:使用opendeurdagKulak()方法。将测试算例路径放入Main.java中:

测试算例附带在代码内。
结果生成在编译器内部:

前三行按照机器顺序排列,cost表示总耗时,最后一行表示最长耗时的加工顺序。

测试多个算例,分别生成table1、2:

在上方输入算例所在文件夹,下方输入输出部分文件名。
table输出可放置在LaTeX环境中,在此就不展示了。

代码下载

进入公众号输入【JSPTS】不带【】,即可下载对应Java代码。

这篇关于干货 | Tabu Search求解作业车间调度问题(Job Shop Scheduling)-附Java代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/161395

相关文章

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求