粒子群算法求解港口泊位调度问题(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 插件应运而生。这款插件旨在帮助开发者…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
shell脚本质数判断
shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数)shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数) 思路: 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...
