当前位置: 首页 > article >正文

MAU算法流程理解

参考文献:湘江船闸的过闸调度算法研究(李 楠,李桂华,尹剑平)
(湖南湘江航运建设开发有限公司,湖南 长沙 410011)

MAU算法流程

图4展示的是一种船舶排档算法(MAU算法),它采用"行式布局"策略,将船闸空间划分为多行进行排布。算法核心思想是:优先安排等待时间最长的船舶,并在每行中尽可能多地并排安排船舶

核心概念解析

  1. 剩余长度

    • 指船闸在长度方向(X轴) 上剩余可用空间
    • 初始值 = 船闸总长度(180m)
    • 每安排完一行,减去该行中最长船舶的长度
    • 更新公式新剩余长度 = 原剩余长度 - 当前行最大船长度
  2. 剩余宽度

    • 指当前行在宽度方向(Y轴) 上剩余可用空间
    • 初始值 = 船闸总宽度(23m)
    • 每安排一艘船,减去该船宽度
    • 更新公式新剩余宽度 = 原剩余宽度 - 新安排船的宽度
    • 每行开始时重置为船闸总宽度

算法流程详解(结合具体数据)

初始状态
  • 船闸尺寸:180m × 23m
  • 船舶队列(按等待时间降序排列):
    1:65.0×11.7 (等待10.0h)
    2:31.0×5.8  (等待9.9h)
    3:29.0×6.3  (等待9.8h)
    4:54.0×9.8  (等待9.7h)
    5:51.0×9.8  (等待9.6h)
    6:40.0×7.8  (等待9.5h)
    7:36.0×7.2  (等待9.4h)
    8:57.0×10.5 (等待9.3h)
    9:60.0×11.5 (等待9.2h)
    10:70.0×12.0(等待9.1h)
    
第1行排档过程
  1. 选择队首船舶(等待时间最长):

    • 船舶1 (65m×11.7m)
    • 放置位置:(0, 0)
    • 剩余宽度:23 - 11.7 = 11.3m
  2. 判断能否放入多艘

    • 剩余宽度11.3m > 0 → 可以尝试放入更多船舶
    • 选择宽度最小的两艘:船舶2(5.8m) + 船舶3(6.3m) = 12.1m > 11.3m → 不能同时放入
  3. 尝试放入单艘

    • 选择长度最接近首船(65m)且宽度≤11.3m的船舶
    • 候选:船舶8(57m×10.5m) - 长度差8m
    • 船舶4(54m×9.8m) - 长度差11m → 选择船舶8
    • 放置位置:与船舶1并排,Y坐标相邻
    • 剩余宽度:11.3 - 10.5 = 0.8m(小于最小船宽5.8m,结束本行)
  4. 更新全局状态

    • 本行最大长度 = max(65,57) = 65m
    • 新剩余长度 = 180 - 65 = 115m
    • 剩余宽度重置为23m(新行开始)
第2行排档过程
  1. 选择当前队首

    • 船舶2 (31m×5.8m) - 现在等待时间最长
    • 放置位置:(65, 0)(X坐标接上一行末尾)
    • 剩余宽度:23 - 5.8 = 17.2m
  2. 判断能否放入多艘

    • 选择宽度最小两艘:船舶3(6.3m) + 船舶7(7.2m) = 13.5m ≤ 17.2m → 可以放入
    • 同时安排船舶3和船舶7
  3. 更新行状态

    • 放置位置:与船舶2并排
    • 剩余宽度:17.2 - 6.3 - 7.2 = 3.7m(小于最小船宽5.8m,结束本行)
    • 本行最大长度 = max(31,29,36) = 36m(船舶7长度)
  4. 更新全局状态

    • 新剩余长度 = 115 - 36 = 79m
    • 剩余宽度重置为23m
第3行排档过程
  1. 选择当前队首

    • 船舶4 (54m×9.8m)
    • 放置位置:(65+36=101, 0)
    • 剩余宽度:23 - 9.8 = 13.2m
  2. 尝试放入单艘(无法放多艘):

    • 选择长度最接近54m且宽度≤13.2m的船舶
    • 船舶5(51m×9.8m) - 长度差3m
    • 船舶6(40m×7.8m) - 长度差14m → 选择船舶5
    • 剩余宽度:13.2 - 9.8 = 3.4m(结束本行)
  3. 更新全局状态

    • 本行最大长度 = max(54,51) = 54m
    • 新剩余长度 = 79 - 54 = 25m
终止条件
  • 剩余长度25m < 剩余船舶最小长度(29m)
  • 船舶6(40m), 9(60m), 10(70m)无法安排
  • 共安排7艘船舶,使用长度:65+36+54=155m

算法特点总结

  1. 优先级策略

    • 严格按等待时间排序(FCFS变种)
    • 等待时间长的绝对优先
  2. 空间利用策略

    • 行式布局:船舶在宽度方向并排
    • 长度方向:每行取最长船舶决定行高
    • 宽度方向:贪心策略(先尝试放最多船舶)
  3. 决策点

    开始新行
    选等待最长船
    能否放多艘?
    选宽度最小两艘
    能否放单艘?
    选长度最接近船
    结束当前行
    更新剩余宽度
    更新剩余长度
    还有空间?
    结束

实际调度效果分析

使用论文数据在180×23m船闸中:

  • 成功安排:7艘(1,2,3,4,5,7,8)
  • 未安排:3艘(6,9,10)
  • 空间利用率
    • 长度利用率:155/180 ≈ 86%
    • 宽度利用率:平均每行宽度利用率>90%
  • 算法局限
    • 可能遗留"碎片空间"(如行末的小空隙)
    • 对超长船舶处理不足(如船舶10需要70m>25m剩余)
    • 严格按等待时间排序可能不是最优解

封面图片地址

相关文章:

MAU算法流程理解

参考文献&#xff1a;湘江船闸的过闸调度算法研究(李 楠&#xff0c;李桂华&#xff0c;尹剑平) &#xff08;湖南湘江航运建设开发有限公司&#xff0c;湖南 长沙 410011&#xff09; MAU算法流程 图4展示的是一种船舶排档算法&#xff08;MAU算法&#xff09;&#xff0c;它…...

蓝桥杯国赛训练 day1

目录 k倍区间 舞狮 交换瓶子 k倍区间 取模后算组合数就行 import java.util.HashMap; import java.util.Map; import java.util.Scanner;public class Main {static Scanner sc new Scanner(System.in);public static void main(String[] args) {solve();}public static vo…...

ESP32之Linux编译环境搭建流程

背景&#xff1a;为了解决 “windows环境中编译ESP32代码速度慢” 的问题&#xff0c;现搭建一个Linux环境&#xff0c;让windows下的VScode连接到Linux环境&#xff0c;VSCode负责编辑代码&#xff0c;虚拟机用于编译代码。 目录 一、安装VMware 1.1 获取VMware安装包 1.2…...

Linux 软件安装方式全解(适用于 CentOS/RHEL 系统)

&#x1f427; Linux 软件安装方式全解&#xff08;适用于 CentOS/RHEL 系统&#xff09; 在 Linux 系统中&#xff0c;软件安装方式丰富多样&#xff0c;常见于以下几种方式&#xff1a; 安装方式命令/工具说明软件包管理器&#xff08;推荐&#xff09;yum, dnf, apt, zypp…...

QT- QML Layout+anchors 布局+锚点实现窗口部件权重比例分配

布局管理 简单比较两种界面管理锚点布局实现比例布局布局管理实现比例布局循环依赖问题简谈 在日常打螺丝中&#xff0c;我们偶尔会需要实现界面各组件能按比例放置&#xff0c;自适应各种分辨率的需求。我用锚点和布局都实现过相关界面&#xff0c;记录下来两种方式实现的差异…...

UE5打包项目设置Project Settings(打包widows exe安装包)

UE5打包项目Project Settings Edit-Project Settings- Packaging-Ini Section Denylist-Advanced 1&#xff1a;打包 2&#xff1a;高级设置 3&#xff1a;勾选创建压缩包 4&#xff1a;添加要打包地图Map的数量 5&#xff1a;选择要打包的地图Maps 6&#xff1a;Project-Bui…...

Python中os模块详解

Python os 模块详解 os 模块提供了丰富的文件和目录操作、环境变量访问、进程管理等功能&#xff0c;是与操作系统交互的核心模块之一。 基本导入方式 import os常用目录与文件操作 1️⃣ 获取/设置当前工作目录 os.getcwd() # 获取当前工作目录 os.chdir(/tmp) …...

便捷高效能源服务触手可及,能耗监测系统赋能智能建筑与智慧城市

在建筑行业迈向智能化、精细化管理的进程中&#xff0c;传统建筑管理模式因信息割裂、数据利用不足等问题&#xff0c;逐渐难以满足现代建筑复杂的运营需求。楼宇自控系统实现了建筑设备的智能调控&#xff0c;BIM技术则构建了建筑的三维数字化模型&#xff0c;当两者相遇&…...

Kotlin List 操作全面指南

在传统 Java 开发 List 相关的 API 中&#xff0c;有着样板代码冗长、缺乏链式调用、空安全等问题。 Kotlin 这门语言 为 List 提供了丰富的扩展函数&#xff0c;这些函数大大简化了集合操作&#xff0c;解决了传统 Java 集合 API 中的许多痛点。 一、基础操作 1. 创建 List …...

C++--范围for循环详解

范围 for 循环是 C11 引入的语法特性&#xff0c;用于简化遍历容器或数组元素的过程。它比传统 for 循环更简洁安全&#xff0c;特别适合初学者。以下是详细讲解&#xff1a; 基本语法 for (元素类型 变量名 : 容器/数组) {// 循环体&#xff08;使用变量名访问当前元素&#…...

ISO18436-2 CATII级振动分析师能力矩阵

ISO18436-2021是当前针对针对分析师的一个标准&#xff0c;它对振动分析师的能力和知识体系做了4级分类&#xff0c;这里给出的是一家公司响应ISO18436的CATII级标准&#xff0c;做的一个专题培训的教学大纲。摘自&#xff1a; 【振動噪音產學技術聯盟】04/19-23 ISO 18436-2…...

deepseek问答:torch.full() 函数详解

torch.full() 是 PyTorch 中用于创建指定形状、所有元素值都相同的新张量的核心函数。它在深度学习中有广泛应用&#xff0c;尤其是在初始化张量和创建特殊数据结构时。 函数签名 torch.full(size, fill_value, *, dtypeNone, layouttorch.strided, deviceNone, requires_gra…...

dvwa4——File Inclusion

LOW: 先随便点开一个文件&#xff0c;可以观察到url栏变成这样&#xff0c;说明?page是dvwa当前关卡用来加载文件的参数 http://10.24.8.35/DVWA/vulnerabilities/fi/?pagefile1.php 我们查看源码 &#xff0c;没有什么过滤&#xff0c;直接尝试访问其他文件 在url栏的pag…...

MYSQL 高级 SQL 技巧

高级 SQL 技巧 以下是一些高级 SQL 技巧&#xff0c;可以帮助优化查询、提高性能并解决复杂的数据处理问题。 使用窗口函数 窗口函数允许在查询结果的行上进行计算&#xff0c;而不会减少行数。常见的窗口函数包括 ROW_NUMBER()、RANK()、DENSE_RANK() 和聚合函数如 SUM() 与…...

Spring Boot养老院管理系统源码分享

概述 基于Spring Boot开发的养老院管理系统&#xff0c;该系统通过智能化管理模块&#xff0c;为养老机构提供高效运营解决方案。 主要内容 后台管理功能 系统后台功能完善&#xff0c;左侧导航栏涵盖首页、安全巡查管理、设备管理等模块。设备管理界面以表格形式清晰展示设…...

go|context源码解析

文章目录 Context接口Deadline()Done()Err()Value() canceler接口ctxemptyCtxcancelCtxtimerCtxvalueCtx 基本使用cancelCtxvalueCtx 首先看一下源码对“context”的描述&#xff0c; When a Context is canceled, all Contexts derived from it are also canceled. 当一个Cont…...

如何在PowerBI中使用Analyze in Excel

如何在PowerBI中使用Analyze in Excel 之前分享过如何使用DAXStudio将PowerBI与Excel连接 &#xff0c;今天介绍另外一个工具&#xff0c;也可以实现同样的功能&#xff0c;Analyze in Excel。 使用Analyze in Excel 第一步&#xff1a; 首先准备好一个PBIX文件&#xff0c…...

【学习记录】Element UI导入报错 * element-ui/lib/theme-chalk/index.css in ./src/main.js

文章目录 &#x1f4cc; 摘要⚠️ 问题描述&#x1f50d; 原因分析✅ 正常情况下的依赖结构❗ 问题根源 ✅ 解决方案✅ 方法一&#xff1a;使用 cnpm 安装 Element UI&#xff08;推荐&#xff09;步骤 1&#xff1a;全局安装 cnpm&#xff08;使用淘宝镜像&#xff09;步骤 2&…...

大模型分布式训练笔记(基于accelerate+deepspeed分布式训练解决方案)

文章目录 一、分布式训练基础与环境配置&#xff08;1&#xff09;分布式训练简介&#xff08;2&#xff09;如何进行分布式训练&#xff08;3&#xff09;分布式训练环境配置 二、数据并行-原理与实战&#xff08;pytorch框架的nn.DataParallel&#xff09;1&#xff09;data …...

鸿蒙UI开发——组件的自适应拉伸

1、概 述 针对常见的开发场景&#xff0c;ArkUI开发框架提供了非常多的自适应布局能力&#xff0c;这些布局可以独立使用&#xff0c;也可多种布局叠加使用。本文针对ArkUI提供的拉伸能力做简单讨论。 拉伸能力是指容器组件尺寸发生变化时&#xff0c;增加或减小的空间全部分…...

鸿蒙仓颉语言开发教程:自定义弹窗

假期第一天&#xff0c;祝大家端午节快乐。昨天观看了时代旗舰尊界S800的发布&#xff0c;不得不感慨这车真好啊&#xff5e; 放假闲来无事&#xff0c;继续跟大家分享仓颉语言的开发教程&#xff0c;今天介绍一下自定义弹窗。 仓颉语言中的自定义弹窗和ArkTs类似&#xff0c…...

meilisearch docker 简单安装

ElasticSearch平替 docker run -it -d -p 7700:7700 -v /home/dev/melisearch/meili_data:/meili_data -e MEILI_MASTER_KEYRhTX1pLPSKSn7KW9yf9u_MNKC0v1YKkmx2Sc6qSwbLQ getmeili/meilisearch:v1.13 MEILI_MASTER_KEYRhTX1pLPSKSn7KW9yf9u_MNKC0v1YKkmx2Sc6qSwbLQ …...

Python 数据分析与可视化实战:从数据清洗到图表呈现

目录 一、数据采集与初步探索 二、数据清洗的七种武器 1. 缺失值处理策略 2. 异常值检测与修正 3. 数据类型转换技巧 三、数据转换的魔法工坊 1. 透视表与交叉表 2. 窗口函数实战 3. 文本数据处理 四、可视化呈现的艺术 1. 基础图表进阶用法 2. 高级可视化方案 3.…...

机器学习数据降维方法

1.数据类型 2.如何选择降维方法进行数据降维 3.线性降维&#xff1a;主成分分析&#xff08;PCA&#xff09;、线性判别分析&#xff08;LDA&#xff09; 4.非线性降维 5.基于特征选择的降维 6.基于神经网络的降维 数据降维是将高维数据转换为低维表示的过程&#xff0c;旨在保…...

uefi和legacy有什么区别_从几方面分析uefi和legacy的区别

uefi和legacy是两种不同的引导方式,uefi是新式的BIOS&#xff0c;legacy是传统BIOS。你在UEFI模式下安装的系统&#xff0c;只能用UEFI模式引导&#xff1b;同理&#xff0c;如果你是在Legacy模式下安装的系统&#xff0c;也只能在legacy模式下进系统。uefi只支持64为系统且磁盘…...

Spring @Autowired自动装配的实现机制

Spring Autowired自动装配的实现机制 Autowired 注解实现原理详解一、Autowired 注解定义二、Qualifier 注解辅助指定 Bean 名称三、BeanFactory&#xff1a;按类型获取 Bean四、注入逻辑实现五、小结 源码见&#xff1a;mini-spring Autowired 注解实现原理详解 Autowired 的…...

Neo4j 数据可视化与洞察获取:原理、技术与实践指南

在关系密集型数据的分析领域&#xff0c;Neo4j 凭借其强大的图数据模型脱颖而出。然而&#xff0c;将复杂的连接关系转化为直观见解&#xff0c;需要专业的数据可视化技术和分析方法。本文将深入探讨 Neo4j 数据可视化的核心原理、关键技术、实用技巧以及结合图数据科学库&…...

一种基于性能建模的HADOOP配置调优策略

1.摘要 作为分布式系统基础架构的Hadoop为应用程序提供了一组稳定可靠的接口。该文作者提出了一种基于集成学习建模的Hadoop配置参数调优的方法。实验结果表明&#xff0c;该性能模型可以准确预测MapReduce应用程序的运行时间。采用提出的Hadoop配置参数方法调优后&#xff0c…...

【Stable Diffusion 1.5 】在 Unet 中每个 Cross Attention 块中的张量变化过程

系列文章目录 文章目录 系列文章目录前言特征图和注意力图的尺寸差异原因在Break-a-Scene中的具体实现总结 前言 特征图 (Latent) 尺寸和注意力图(attention map)尺寸在扩散模型中有差异&#xff0c;是由于模型架构和注意力机制的特性决定的。 特征图和注意力图的尺寸差异原…...

MySQL - Windows 中 MySQL 禁用开机自启,并在需要时手动启动

Windows 中 MySQL 禁用开机自启&#xff0c;并在需要时手动启动 打开服务管理器&#xff1a;在底部搜索栏输入【services.msc】 -> 点击【服务】 打开 MySQL 服务的属性管理&#xff1a;找到并右击 MySQL 服务 -> 点击【属性】 此时的 MySQL 服务&#xff1a;正在运行&a…...