粒子群算法求解港口泊位调度问题(MATLAB代码)
粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,它通过模拟鸟群或鱼群的行为来寻找最优解。在泊位调度问题中,目标是最小化所有船只在港时间的总和,而PSO算法可以帮助我们找到一个较优的调度方案。
泊位调度问题是指在有限数量的泊位资源下,安排船只的到港和离港时间,以最小化船只在港等待的时间。该问题存在多个约束条件,如泊位容量、船只到港和离港时间窗口等。
PSO算法的核心思想是通过模拟粒子在解空间中的移动来搜索最优解。每个粒子代表一个解,并根据自身的历史最佳解和群体的历史最佳解进行调整。粒子根据自身和邻域最优解的信息更新速度和位置,以逐渐靠近最优解。
在泊位调度问题中,每个粒子的位置可以表示为一个泊位调度方案,其中每个船只被分配到一个特定的泊位,并确定其到港和离港时间。粒子的速度和位置更新规则可以根据目标函数来定义,以使船只在港时间的总和最小化。
PSO算法的优点在于简单且易于实现,能够在高维解空间中找到较优解。然而,对于泊位调度问题这样的复杂问题,PSO算法可能会陷入局部最优解。为了克服这个问题,可以采用多种改进方法,如引入局部搜索机制或组合其他优化算法。
总结而言,粒子群算法是一种有效的优化算法,适用于解决泊位调度问题。通过调整粒子的速度和位置,并结合合适的目标函数,可以找到一个较优的泊位调度方案,以最小化船只在港时间的总和。然而,对于复杂的问题,仍然需要进一步的研究和改进。
流程如下:
数据:
停泊时间:
船舶泊位 | 1# | 2# | 3# | 4# | 5# | 6# |
船1 | 3 | 3 | 3.290323 | 3.290323 | 3.290323 | 3.290323 |
船2 | 3.29 | 3.29 | 3.608387 | 3.608387 | 3.608387 | 3.608387 |
船3 | 3.35 | 3.35 | 3.674194 | 3.674194 | 3.674194 | 3.674194 |
船4 | 5 | 5 | 5.483871 | 5.483871 | 5.483871 | 5.483871 |
船5 | 1.94 | 1.94 | 2.127742 | 2.127742 | 2.127742 | 2.127742 |
船6 | 1.45 | 1.45 | 1.590323 | 1.590323 | 1.590323 | 1.590323 |
船7 | 0.97 | 0.97 | 1.063871 | 1.063871 | 1.063871 | 1.063871 |
船8 | 4.61 | 4.61 | 5.056129 | 5.056129 | 5.056129 | 5.056129 |
船9 | 5.06 | 5.06 | 5.549677 | 5.549677 | 5.549677 | 5.549677 |
船10 | 7.29 | 7.29 | 7.995484 | 7.995484 | 7.995484 | 7.995484 |
船11 | 2.68 | 2.68 | 2.939355 | 2.939355 | 2.939355 | 2.939355 |
船12 | 5.74 | 5.74 | 6.295484 | 6.295484 | 6.295484 | 6.295484 |
船13 | 0.65 | 0.65 | 0.712903 | 0.712903 | 0.712903 | 0.712903 |
船14 | 1.26 | 1.26 | 1.381935 | 1.381935 | 1.381935 | 1.381935 |
船15 | 0.81 | 0.81 | 0.888387 | 0.888387 | 0.888387 | 0.888387 |
船16 | 1.58 | 1.58 | 1.732903 | 1.732903 | 1.732903 | 1.732903 |
船17 | 0.77 | 0.77 | 0.844516 | 0.844516 | 0.844516 | 0.844516 |
船18 | 1 | 1 | 1.096774 | 1.096774 | 1.096774 | 1.096774 |
船19 | 3.1 | 3.1 | 3.4 | 3.4 | 3.4 | 3.4 |
船20 | 0.71 | 0.71 | 0.77871 | 0.77871 | 0.77871 | 0.77871 |
船21 | 0.97 | 0.97 | 1.063871 | 1.063871 | 1.063871 | 1.063871 |
船22 | 3.23 | 3.23 | 3.542581 | 3.542581 | 3.542581 | 3.542581 |
到港时间
到港时间 | 装卸量 |
0:00 | 93 |
3:00 | 102 |
3:20 | 104 |
3:20 | 155.25 |
6:00 | 60 |
6:00 | 45 |
6:20 | 30 |
8:00 | 143 |
8:00 | 157 |
9:00 | 226 |
10:00 | 83 |
10:30 | 178 |
11:00 | 20 |
12:00 | 39 |
12:00 | 25 |
14:40 | 49 |
14:40 | 24 |
15:00 | 31 |
15:00 | 96 |
18:50 | 22 |
21:10 | 30 |
22:00 | 100 |
装卸速度
装卸速度 | |
泊位1 | 31 |
泊位2 | 31 |
泊位3 | 34 |
泊位4 | 35 |
泊位5 | 36 |
泊位6 | 37 |
程序结果:
粒子群算法优化得到最优成本
Valuebest =
70.7209677419355
粒子群算法优化得到最优粒子
psobest =
1 至 6 列
-1 -0.276376816044633 0.0110834051789061 -0.588322236509362 -0.871896419169566 1
7 至 12 列
0.882043641594225 0.394648902367656 0.649790379151507 -1 -0.0590250701437167 -1
13 至 18 列
1 1 0.941078162307071 1 0.925858029802935 -0.755714050637173
19 至 24 列
0.642324983266078 1 1 1 6.33758011393659 5.85939735126611
25 至 30 列
6.99 2.49649225428723 4.78659200827198 6.99 6.99 5.21051862147312
31 至 36 列
4.23951824644256 1 2.42088917195685 3.73458639406582 6.99 6.99
37 至 42 列
2.24808981777205 5.21345040727043 4.55442530362547 1.11174406517414 1 1
43 至 44 列
1.69713330740672 6.04705817521954
y =
70.7209677419355
G =
1 6 0 3.29032258064516
10 1 9 16.29
12 3 10.5 16.7954838709677
5 4 6 8.12774193548387
18 1 16.29 17.29
4 2 3.33333333333333 8.33333333333333
2 5 3 6.60838709677419
11 2 10 12.68
3 6 3.33333333333333 7.00752688172043
8 5 8 13.0561290322581
19 1 17.29 20.39
9 4 8.12774193548387 13.6774193548387
7 6 7.00752688172043 8.07139784946237
17 4 14.6666666666667 15.5111827956989
15 2 12.68 13.49
6 6 8.07139784946237 9.66172043010753
13 6 11 11.7129032258064
14 6 12 13.381935483871
16 5 14.6666666666667 16.3995698924731
20 1 20.39 21.1
21 1 21.1666666666667 22.1366666666667
22 6 22 25.5425806451613
Stime =
0 3.29032258064516
3 6.60838709677419
3.33333333333333 7.00752688172043
3.33333333333333 8.33333333333333
6 8.12774193548387
8.07139784946237 9.66172043010753
7.00752688172043 8.07139784946237
8 13.0561290322581
8.12774193548387 13.6774193548387
9 16.29
10 12.68
10.5 16.7954838709677
11 11.7129032258064
12 13.381935483871
12.68 13.49
14.6666666666667 16.3995698924731
14.6666666666667 15.5111827956989
16.29 17.29
17.29 20.39
20.39 21.1
21.1666666666667 22.1366666666667
22 25.5425806451613
S =
1 10 12 5 18 4 2 11 3 8 19 9 7 17 15 6 13 14 16 20 21 22
T =
6 5 6 2 4 6 6 5 4 1 2 3 6 6 2 5 4 1 1 1 1 6
Stime =
0 3.29032258064516
3 6.60838709677419
3.33333333333333 7.00752688172043
3.33333333333333 8.33333333333333
6 8.12774193548387
8.07139784946237 9.66172043010753
7.00752688172043 8.07139784946237
8 13.0561290322581
8.12774193548387 13.6774193548387
9 16.29
10 12.68
10.5 16.7954838709677
11 11.7129032258064
12 13.381935483871
12.68 13.49
14.6666666666667 16.3995698924731
14.6666666666667 15.5111827956989
16.29 17.29
17.29 20.39
20.39 21.1
21.1666666666667 22.1366666666667
22 25.5425806451613
>>
相关文章:

粒子群算法求解港口泊位调度问题(MATLAB代码)
粒子群算法(Particle Swarm Optimization,PSO)是一种基于群体智能的优化算法,它通过模拟鸟群或鱼群的行为来寻找最优解。在泊位调度问题中,目标是最小化所有船只在港时间的总和,而PSO算法可以帮助我们找到一…...
idea控制台出现乱码的解决方案
概述:有时候控制台的关键说明出现乱码,就很令人烦恼 在 IntelliJ IDEA 中出现控制台乱码通常是由于编码设置不正确或者字体显示问题导致的。以下是一些可能的解决方案: 1. 设置项目编码 确保你的项目编码设置正确: 在 Intelli…...
R语言【taxlist】——summary(),show(),print():打印taxlist对象及其内容的概述
Package taxlist version 0.2.4 Description 一种方法,用于显示 taxlist 对象内容的概述或所选分类组的概述。 Usage ## S4 method for signature taxlist summary(object,ConceptID,units "Kb",check_validity TRUE,display "both",maxs…...

【深度学习】sdxl中的 text_encoder text_encoder_2 区别
镜像问题是:https://editor.csdn.net/md/?articleId135867689 代码仓库: https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main 截图: 为什么有两个CLIP编码器 text_encoder 和 text_encoder_2 ? 在…...

上位机图像处理和嵌入式模块部署(python opencv)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们谈到了qt,谈到了opencv,也谈到了嵌入式,但是没有说明python在这个过程当中应该扮演什么样的角色。open…...

父元素flex:1 高度却被子元素撑开的问题
问题 当父元素设置了flex: 1; 的情况下,想在其中子元素超出父元素高度的情况下,产生滚动条,在父元素区域滚动。由于子元素高度不固定,故父元素设置为display: flex; flex-direction: column; 子元素设置flex: 1; overflow: auto;…...

【LUA】mac状态栏添加天气
基于网络上的版本修改的,找不到出处了。第一个摸索的lua脚本,调了很久。 主要修改:如果风速不大,就默认不显示,以及调整为了一些格式 local urlApi http://.. --这个urlApi去申请个免费的就可以了 然后打开对应的json…...

网络原理-TCP/IP(1)
应用层 我们之前编写完了基本的java socket, 要知道,我们之前所写的所有代码都在应用层中,都是为了完成某项业务,如翻译等.关于应用层,后面会有专门的讲解,在此处先讲一下基础知识. 应用层对应着应用程序,是程序员打交道最多的一层,调用系统提供的网络api写出的代码都是应用层…...

C# Socket 允许控制台应用通过防火墙
需求: 在代码中将exe添加到防火墙规则中,允许Socket通过 添加库引用 效果: 一键三联 若可用记得点赞评论收藏哦,你的支持就是写作的动力。 源地址: https://gist.github.com/cstrahan/513804 调用代码: private static void …...
Centos安装mysql/mariadb
1,yum install mysql-apt-config_0.8.12-1_all.deb 似乎后面会有冲突,不建议安装mysql了,直接mariadb吧 2, No such command: uninstall. Please use /usr/bin/yum --help It could be a YUM plugin command, try: "yum install dnf-command(uninstall)" It…...

2024 年, Web 前端开发趋势
希腊哲学家赫拉克利特认为,变化是生命中唯一不变的东西。这句话适用于我们的个人生活、行业和职业领域。 尤其是前端开发领域,新技术、开发趋势、库和框架不断涌现,变化并不陌生。最近发生的一些事件正在改变开发人员构建网站和 Web 应用的方…...

Mysql 插入数据
1 为表的所有字段插入数据 使用基本的INSERT语句插入数据要求指定表名称和插入到新记录中的值。基本语法格式为: INSERT INTO table_name (column_list) VALUES (value_list); 使用INSERT插入数据时,允许列名称列表column_list为空,此时&…...
【每日一题】YACS 473:栈的判断
这是上海计算机学会竞赛 P 473 P473 P473:栈的判断( 2021 2021 2021年 8 8 8月月赛 丙组 T 4 T4 T4)标签:栈题意:给定 n n n个数字,已知这些数字的入栈顺序为 1 , 2 , 3... , n 1,2,3...,n 1,2,3...,n&…...
Python - 整理 MySQL 慢查询日志
在实际的数据库管理和性能优化工作中,MySQL 慢查询日志(slow query log)是一个重要的工具。当系统中的 SQL 查询花费的时间超过阈值时,MySQL 会将这些查询记录在慢查询日志中,方便进行性能分析和调优。 本文将介绍如何…...

Python算法题集_无重复字符的最长子串
本文为Python算法题集之一的代码示例 题目3:无重复字符的最长子串 说明:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "a…...

12.Elasticsearch应用(十二)
Elasticsearch应用(十二) 1.单机ES面临的问题 海量数据存储问题单点故障问题 2.ES集群如何解决上面的问题 海量数据存储解决问题: 将索引库从逻辑上拆分为N个分片(Shard),存储到多个节点单点故障问题&a…...

linux -- 内存管理 -- SLAB分配器
SLAB分配器(slab allocator) SLAB分配器用于小内存空间管理,基本思想是:先利用页面分配器分配出单个或多个连续的物理页面,然后再此基础上将整块页面分割为多个相等的小内存单元,来满足小内存空间分配的需…...

【MySQL】学习如何通过DQL进行数据库数据的条件查询
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-63IIm2s5sIhQfsfy {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…...
TS:子类型关系
子类型关系 1、概念1.1 里氏替换原则1.2 自反性1.3 传递性 2、顶端类型 和 尾端类型3、字面量类型4、undefined 和 null5、枚举类型6、函数类型6.1 变型6.1.1 协变6.1.2 逆变6.1.3 双变 6.2 函数类型间的子类型关系6.2.1 函数参数数量6.2.2 函数参数类型A、非严格函数类型检查B…...

IDEA插件(MyBatis Log Free)
引言 在Java开发中,MyBatis 是一款广泛使用的持久层框架,它简化了SQL映射并提供了强大的数据访问能力。为了更好地调试和优化MyBatis应用中的SQL语句执行,一款名为 MyBatis Log Free 的 IntelliJ IDEA 插件应运而生。这款插件旨在帮助开发者…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...