粒子群算法求解港口泊位调度问题(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 插件应运而生。这款插件旨在帮助开发者…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...