基于FDB方法的供给需求优化算法改进——基于工程设计问题的综合研究

news2024/9/30 9:30:26

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

文献来源:

本研究提出了一种改进版本的基于供给需求的优化(SDO)算法,这是一种最新开发的元启发式搜索方法。为了更有效地在SDO中对供需过程进行建模,使用适应度-距离平衡(FDB)方法确定了指导搜索过程的候选解决方案。为了测试和验证开发的基于FDB的SDO算法的性能,使用了现代基准测试套件CEC 2017。该套件有四种不同的类型和三十个不受约束的测试问题。在30/50/100维度上设计这些问题,以测试和验证所提算法在不同类型和维度的搜索空间中的性能。此外,还使用了20个工程设计问题来测试和验证所提出的FDBSDO变化在约束工程设计问题中的性能。使用非参数统计检验方法分析两项实验研究的数据。根据分析结果,在所有实验研究中,FDBSDO 变体与基本算法相比表现出更好的性能,具有约束/无约束、单峰/多模态/混合/组合问题类型和不同维度。FDB选择方法的实现消除了SDO算法过早收敛的问题。所提出的FDBSDO算法具有灵敏搜索的能力,有效地提供多样性,并在开发与探索之间建立强大的平衡。

📚2 运行结果

>> clear
>> Main
Best Fitness: 0
Best Solution:
  1.0e-188 *

  1 至 6 列

   0.030433970441272   0.119285342992284  -0.200357222030440   0.297422355785162   0.243943075698639  -0.066134217605201

  7 至 12 列

  -0.079233582258019  -0.488406887382094   0.151556329519022  -0.473651848193521   0.598352840736898  -0.240617155620562

  13 至 18 列

   0.116284366732831  -0.102563552154731  -0.335148677375002   0.164411860537615  -0.070082082065116  -0.199061711671232

  19 至 24 列

   0.464975445730445  -0.147034098632501   0.155336436796199   0.360279584383305  -0.470133243231548  -0.317090202768799

  25 至 30 列

  -0.105189174352339  -0.241764658403916   0.225006961945101   0.740405936122786   0.169874040382366   0.293869821353759

>> 

部分代码:

function []=fdb_sdo()
    % FunIndex: Index of function.
    % MaxIt: The maximum number of iterations.
    % MarketSize: The size of markets.
    % Dim: The size of commodities in each market.
    % Alpha: The supply weight.
    % Beta: The demand weight.
    % BestX: The best solution found so far. 
    % BestF: The best fitness corresponding to BestX. 
    % HisBestFit: History best fitness over iterations. 
    % Market: The population of markets.
    % Low: The low bound of search space.
    % Up: The up bound of search space.
    % Initialize n markets each of which has a commodity. 
    [MarketSize, Dim, maxIteration, Low, Up] = problem_terminate();
    
    MaxIt = ceil((maxIteration / (MarketSize*2)));

    CommPrice = zeros(MarketSize,Dim);
    CommPriceFit = zeros(MarketSize,1);

    CommQuantity = zeros(MarketSize,Dim);
    CommQuantityFit = zeros(MarketSize,1);
    
    Matr=[1 Dim];
    
    for i=1:MarketSize
         CommPrice(i,:)=rand(1,Dim).*(Up-Low)+Low;
         CommPriceFit(i)= problem(CommPrice(i,:));

         CommQuantity(i,:)=rand(1,Dim).*(Up-Low)+Low; 
         CommQuantityFit(i)=problem(CommQuantity(i,:));   

         if  CommQuantityFit(i)<= CommPriceFit(i)
             CommPriceFit(i)= CommQuantityFit(i);
             CommPrice(i,:)= CommQuantity(i,:);
         end    
    end
    
    for Iter=1:MaxIt   
                
        a=2*(MaxIt-Iter+1)/MaxIt;    
        F=zeros(MarketSize,1); 
        
        MeanQuantityFit = mean(CommQuantityFit);     
        for i=1:MarketSize       
            F(i) =(abs( CommQuantityFit(i)-MeanQuantityFit)+10^(-15)); % Equation (7)
        end    
        FQ=F/sum(F);  % Equation (8)
        
        MeanPriceFit=mean(CommPriceFit);  
        for i=1:MarketSize       
            F(i) =(abs( CommPriceFit(i)-MeanPriceFit)+10^(-15));%Equation (10)
        end 
        FP=F/sum(F);       % Equation (11)
        MeanPrice=(mean(CommPrice));

        for i=1:MarketSize 
            Ind=round(rand)+1;
            Alpha=a*sin((2*pi)*rand(1,Matr(Ind))); % Equation (16)
            Beta=2*cos((2*pi)*rand(1,Matr(Ind))); % Equation (17)
            k=find(rand<=cumsum(FQ),1,'first'); % Equation (9)
            CommQuantityEqu=CommQuantity(k,:);
             if rand>0.5               
                CommPriceEqu=rand*MeanPrice;% Equation (12)
              else
                k=find(rand<=cumsum(FP),1,'first');   
                CommPriceEqu=CommPrice(k,:); % Equation (12)        
             end
              
              % Supply function (supply relation of producers)
                fdbIndex = rouletteFitnessDistanceBalance(CommQuantity, CommQuantityFit);
                NewCommQuantity=CommQuantity(fdbIndex,:)+Alpha.*( CommPrice(i,:)-CommPriceEqu); %Equation (13)  

             NewCommQuantity=SpaceBound(NewCommQuantity,Up,Low); 
             NewCommQuantityFit = problem(NewCommQuantity);  
             
             if NewCommQuantityFit<= CommQuantityFit(i)
                 CommQuantityFit(i)=NewCommQuantityFit;
                 CommQuantity(i,:)=NewCommQuantity;
             end
             
             % Demand function (demand relation of consumers)
             NewCommPrice=CommPriceEqu-Beta.*(NewCommQuantity-CommQuantityEqu );% Equation (14)
             NewCommPrice=SpaceBound(NewCommPrice,Up,Low);
             NewCommPriceFit = problem(NewCommPrice);   
             
             if NewCommPriceFit<= CommPriceFit(i)
                 CommPriceFit(i)=NewCommPriceFit;
                 CommPrice(i,:)=NewCommPrice;
             end       
        end    
       
        % Replacement
        for i=1:MarketSize        
            if  CommQuantityFit(i)<= CommPriceFit(i)
                CommPriceFit(i)= CommQuantityFit(i);
                CommPrice(i,:)= CommQuantity(i,:);
            end        
        end
    
    end
    [ bestFitness, index] = min(CommPriceFit);
    bestSolution = CommPrice(index, :);
     
    fprintf('Best Fitness: %d\n', bestFitness);
    disp('Best Solution:'); 
    disp(bestSolution);
    
end
function  X=SpaceBound(X,Up,Low)

    Dim=length(X);
    S=(X>Up)+(X<Low);    
    X=(rand(1,Dim).*(Up-Low)+Low).*S+X.*(~S);

end

🌈3 Matlab代码实现

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

W. Zhao, L. Wang and Z. Zhang, "Supply-Demand-Based Optimization: A Novel Economics-Inspired Algorithm for Global Optimization," in IEEE Access, vol. 7, pp. 73182-73206, 2019, doi: 10.1109/ACCESS.2019.2918753. 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/55135.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

校园网页设计成品 学校班级网页制作模板 dreamweaver网页作业 简单网页课程成品 大学生静态HTML网页源码

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

ArangoDB简单入门

一、安装与启动 1、进入到某个目录 cd /home/neunhoef/ 2 获取包 wget https://download.arangodb.com/arangodb34/Community/Linux/arangodb3-linux-3.4.1.tar.gz 3、解压 tar xzvf arangodb3-linux-3.4.1.tar.gz 4、将使用的命令放到path中 export PATH"/home/neunhoef…

Ajax学习:原生jsonp实践

输入内容&#xff1a;丧失焦点 向服务器发送请求 对用户名做是否存在的检测 并且改变框的颜色 服务端&#xff1a; const {json } require(express); const express require(express)const app express(); app.get(/home, function(requset, response) {//设置响应头 名称…

分布式全局唯一ID (学习总结---从入门到深化)

目录 分布式全局唯一ID 何为 ID 为什么需要分布式ID 分布式全局唯一ID解决方案 UUID 依靠数据库自增字段生成 号段模式 Redis自增key方案 雪花算法&#xff08;SnowFlake&#xff09; 分布式全局唯一ID_什么是雪花算法SonwFlake 雪花算法作用 SnowFlake算法优点 SnowFlake…

【flutter-mobx】Flutter 状态管理- 使用 MobX实现计数器

实践flutter mobx&#xff1a; 提示&#xff1a;对下面这篇掘金文章的实践&#xff0c;通过flutter结合 mobx 实现计数器&#xff0c;过程中也添加了一些处理和注释&#xff0c;代码放在feat/mobx下 https://juejin.cn/post/6954523549386162213 https://github.com/ThinkerW…

论算法是如何优化的:四数之和

论算法是如何优化的&#xff1a;四数之和 心路历程 闲来无事&#xff0c;刷刷力扣&#xff0c;突然看到一道题目叫做四数之和&#xff0c;难度中等&#xff0c;心想&#xff0c;这不就是我大显身手的时候了吗&#xff1f;&#xff1f;&#xff1f;我直接就是一个点击进入&…

2022 CMU15-445 Project 1 Buffer Pool

通过截图 Task #1 - Extendible Hash Table 该 task 的知识点名为 可扩展动态散列 https://cloud.tencent.com/developer/article/1020586 这个部分要实现一个 extendible 哈希表&#xff0c;内部不可以用 built-in 的哈希表&#xff0c;比如 unordered_map。这个哈希表在 Buf…

Open-Dis的C++版本编译(CMake-gpu 3.21.4)以及SDL2和SDL_net库的配置使用

目录Open-DisOpen-Dis简介分布式交互仿真更多资料Open-Dis下载CMake编译教程SDL2和SDL_netSDL介绍下载SDL配置SDL2下载SDL_net配置SDL_net工程编译Open-DisOpen-Dis Open-Dis简介 Dis是国防部&#xff0c;北约和联合国实时/虚拟世界建模和仿真中使用最广泛的协议之一。 Open-…

关于二进制

关于二进制 读《程序是怎样跑起来的》 用二进制表示计算机信息的原因 计算机内部是由IC&#xff08;集成电路&#xff09;这种电子部件构成的。CPU和内存也是IC的一种&#xff0c;IC有几种不同的形状&#xff0c;有的像一条黑色的蜈蚣&#xff0c;在其两侧有数个乃至数百个引脚…

智慧水务:数字孪生污水处理厂,3D可视化一键管控

近年来&#xff0c;智慧水务、数字水务成为水务行业的热点领域。对于污水处理领域&#xff0c;如何贯彻落实双碳战略&#xff0c;积极推进智慧水厂建设&#xff0c;显得尤为关键。 可视化技术结合视频融合、BIM、5G、物联网、云计算及大数据等先进技术&#xff0c;围绕水质达标…

用DIV+CSS技术制作个人博客网站(web前端网页制作课期末作业)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【Docker】搭建MySQL主从复制,详细的图文展示

Docker是基于Go语言实现的云开源项目。Docker的主要目标是**“Build&#xff0c;Ship and Run Any App,Anywhere”**。也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;使用户的APP&#xff08;可以是一个WEB应用或数据库应用等等&#xff09;及其运…

[附源码]JAVA毕业设计计算机散件报价系统(系统+LW)

[附源码]JAVA毕业设计计算机散件报价系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

技巧 | Python绘制2022年卡塔尔世界杯决赛圈预测图

文章目录&#x1f3f3;️‍&#x1f308; 1. 世界杯三十二强&#x1f3f3;️‍&#x1f308; 2. 世界杯十六强&#x1f3f3;️‍&#x1f308; 3. 世界杯八强&#x1f3f3;️‍&#x1f308; 4. 世界杯四强&#x1f3f3;️‍&#x1f308; 5. 决赛圈&#x1f3f3;️‍&#x1f…

技术内幕 | 阿里云EMR StarRocks 极速数据湖分析

作者&#xff1a;阿里云智能技术专家 周康&#xff0c;StarRocks Active Contributor 郑志铨&#xff08;本文为作者在 StarRocks Summit Asia 2022 上的分享&#xff09; 为了能够满足更多用户对于极速分析数据的需求&#xff0c;同时让 StarRocks 强大的分析能力应用在更加广…

【温故而知新】构建高可用Linux服务器(三)

时间&#xff1a;2022年12月02日 作者&#xff1a;小蒋聊技术 邮箱&#xff1a;wei_wei10163.com 微信&#xff1a;wei_wei10 前言 大家好&#xff0c;欢迎来到小蒋聊技术。小蒋准备和大家一起聊聊技术的那些事。 今天小蒋继续坚持“温故而知新”的落地实践&#xff0c;继续…

[附源码]计算机毕业设计影院管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【单片机基础】C51语言基础

文章目录1、使用C/C开发单片机的优点2、C51中的基本数据类型3、C51数据类型扩展定义4、C51中的运算符与基础语句5、二进制与十六进制转换1、使用C/C开发单片机的优点 C/C语言作为一种非常方便的语言得到了广泛的支持&#xff0c;如STC、STM32、arduino、乐鑫科技的单片机都支持…

【目标搜索】基于matlab运动编码粒子群算法优化 (MPSO) 无人机搜索丢失目标【含Matlab源码 2254期】

⛄一、运动编码粒子群算法简介 1 粒子群算法 PSO算法是一种基于群体智能的随机优化方法。在PSO中&#xff0c;粒子群模拟鸟群行为在搜索空间中探索&#xff08;全局搜索&#xff09;和开发&#xff08;局部搜索&#xff09;&#xff0c;最终找到全局最优解。粒子的速度和位置更…

网络安全观察报告 攻击态势

设备类漏洞从未缓解 从图 5.1 中可以看到&#xff0c;针对设备漏洞的攻击占全部利用漏洞攻击的 43%&#xff0c;这和近两年智能路由器等 联网设备大规模增长密切相关。正如绿盟科技在《2017 年物联网报告》1 中提到的那样&#xff0c;很多智能设备 在设计之初&#xff0c;安全…