✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。
✅ 专业定制毕设、代码
如需沟通交流,点击《获取方式


(1)基于船体阻力分解的主机油耗模型与实船验证:

以某28600DWT散货船为对象,根据船舶静水力参数与型线,将船舶航行阻力分解为摩擦阻力、剩余阻力和附体阻力,采用ITTC-57公式和Holtrop-Mennen法分别计算相应系数,得到船舶有效功率与航速的关系。利用主机万有特性曲线将功率转换为燃油消耗率SFOC,建立主机小时油耗率FC(V)=k1·V^3+k2·V^2,系数k1=0.00142,k2=0.0178(航速knots)。从船舶报告系统获取横跨太平洋的18个航段实际航行数据,包括GPS航速、主机转速和日油耗量,划分航段后计算理论油耗,与实测值比较,平均相对误差4.7%,其中在12~14kn经济航速段误差更小至2.3%,验证了模型的有效性。据此模型可快速计算任意航速下的日油耗和燃油成本。

(2)多目标蜻蜓算法MODA与多目标粒子群算法MOPSO对比航速优化:

构建多目标航速优化模型,决策变量为各航段航速V_i,目标函数为燃油成本C_fuel和租船成本C_charter之和最小,C_fuel=∑(FC(V_i)·t_i·p_fuel),C_charter=每日租金·总航行天数,约束为航速范围10~16kn及总航行时间上限。采用多目标蜻蜓算法MODA进行求解,蜻蜓个体代表航速序列,分离、对齐、凝聚三种行为的权重随迭代动态调整,外部档案存储帕累托非支配解。同时采用多目标粒子群算法MOPSO作为对比,两者使用相同的测试问题。从实船某航次数据计算,MODA得到的帕累托前沿分布更均匀且延伸范围广,最优折中解下燃油成本节省2.72%,租船成本节省15.57%,总营运成本降低5.78%,而MOPSO总成本降低5.12%,但燃油成本优化稍逊。通过超体积指标HV和反世代距离IGD评价,MODA在收敛性与多样性上均优于MOPSO和NSGA-II,证实其适用于船舶航速多目标优化。

(3)基于MATLAB与LabVIEW混合编程的航速优化软件系统开发:

为了将优化算法工程化,开发了一款船舶航速优化软件。数据传输采用TCP/IP协议,服务器端在船载数据采集系统,客户端在优化计算机上,数据包格式为JSON。LabVIEW负责数据采集、实时显示和用户交互界面,MATLAB通过ActiveX自动化服务器在后端调用优化算法。优化模块接收吃水、海流、气象预报及租船合同信息,自动运行MODA算法生成推荐航速序列,并通过Labview界面以仪表和图表形式展示。系统实现了数据存储至MySQL数据库,可查询历史航次优化记录。在实船试用中,系统能够每分钟更新一次建议航速,优化结果通过电子海图叠加显示,操作员可一键下发至自动驾驶仪。测试期间,三航次总油耗比未优化人工驾驶方式降低6.1%,航行时间仅增加1.4%,证明系统在保证准班率的前提下实现了实质性节油。

import numpy as np
import random
import math

# 油耗模型
def fuel_consumption_per_hour(speed_knots):
    k1, k2 = 0.00142, 0.0178
    fc = k1 * speed_knots**3 + k2 * speed_knots**2
    return max(fc, 0)

# 多目标蜻蜓算法MODA
class MODA:
    def __init__(self, pop_size, dim, bounds, max_iter):
        self.pop_size = pop_size
        self.dim = dim
        self.bounds = bounds
        self.max_iter = max_iter
        self.pop = np.random.rand(pop_size, dim)
        for d in range(dim):
            self.pop[:,d] = bounds[d][0] + self.pop[:,d]*(bounds[d][1]-bounds[d][0])
        self.archive = []
    def evaluate(self, individual):
        # 双目标:燃油成本,租船成本
        fuel_cost = np.sum([fuel_consumption_per_hour(v) * 24/indv.size for v in individual]) * 400  # 油价假设
        charter_cost = np.sum(individual) * 0.2 * 8000  # 简化
        return fuel_cost, charter_cost
    def optimize(self):
        for it in range(self.max_iter):
            # 蜻蜓行为简化
            for i in range(self.pop_size):
                # 分离
                S = np.mean(self.pop - self.pop[i], axis=0)
                # 对齐
                A = np.mean(self.pop - self.pop[i], axis=0) * 0.1
                # 凝聚
                C = np.mean(self.pop, axis=0) - self.pop[i]
                step = S + A + C + np.random.randn(self.dim)*0.01
                self.pop[i] += step
                self.pop[i] = np.clip(self.pop[i], [b[0] for b in self.bounds], [b[1] for b in self.bounds])
            # 更新档案(帕累托)
            self.archive = self.update_archive()
        return self.archive
    def update_archive(self):
        # 简化的非支配排序
        arch = []
        for ind in self.pop:
            cost = self.evaluate(ind)
            arch.append((ind, cost))
        # 保持有限规模
        return arch[:50]

# LabVIEW数据交换模拟
def tcp_receive_data():
    import json
    # 模拟接收JSON: data = {'speed':[...], ...}
    return {'v':[12.5,13,14]}

if __name__ == '__main__':
    bounds = [(10,16)] * 10   # 10个航段
    moda = MODA(pop_size=50, dim=10, bounds=bounds, max_iter=100)
    pareto = moda.optimize()
    print('帕累托解数目:', len(pareto))
    data = tcp_receive_data()
    print('接收的航速数据:', data['v'])

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐