基于杂草优化算法的线性规划问题求解matlab程序

news2024/11/24 14:39:45

基于杂草优化算法的线性规划问题求解matlab程序

1 杂草算法简介
1.1 IWO定义
IWO是2006年由A. R. Mehrabian等提出的一种从自然界杂草进化原理演化而来的随机搜索算法,模仿杂草入侵的种子空间扩散、生长、繁殖和竞争性消亡的基本过程,具有很强的鲁棒性和自适应性。

IWO算法是一种高效的随机智能优化算法,以群体中优秀个体来指导种群的进化,以正态分布动态改变标准差的方式将由优秀个体产生的子代个体叠加在父代个体周围,再经过个体之间的竞争,得到最优个体。算法兼顾了群体的多样性和选择力度。
在这里插入图片描述
1.2 IWO搜索与性能
IWO相比其他的进化算法拥有更大的搜索空间和更好的性能。与GA相比,IWO算法简单,易于实现,不需要遗传操作算子,能简单有效地收敛问题的最优解,是一种强有力的智能优化工具。
1.3 IWO算法实现步骤
1.3.1 初始化种群
一定数据的杂草初始分布在搜索空间中,位置随机,个数根据实际情况调整;
1.3.2 子代繁殖
分布在整个搜索空间的父代,根据父代的适应值产生下一代种子,种子的个数由适应度值决定,适应值高的产生的种子多,低的个体产生种子数少。
1.3.3 空间扩散
子代个体按照一定规律分布在父代个体周围,分布位置规律满足正态分布(父代为轴线(均值),标准差随着代数不断变化)。
1.3.4 竞争淘汰
当一次繁殖的个体数超过种群数量的上限时,将子代和父代一起排序,适应值低的个体将被清除。
在这里插入图片描述

2 线性规划算例
2.1算例

在这里插入图片描述
2.2算例答案
在这里插入图片描述
3 杂草优化算法求解结果

1)迭代曲线
在这里插入图片描述
2)求解答案
在这里插入图片描述

4 matlab程序
1)主函数

%% 基于杂草算法的线性规划求解
clc;
clear;
close all;
%% Problem Definition
CostFunction = @(x) Sphere(x);     % 目标函数
nVar = 3;              % 决策变量数
VarSize = [1 nVar];    % 决策变量矩阵大小
VarMin = 0;       % 决策变量下限
VarMax = 15;        % 决策变量上限
%% IWO Parameters
MaxIt = 500;    % 最大迭代次数

nPop0 = 10;     % 初始种群规模
nPop = 25;      % 最大种群规模

Smin = 0;       % 繁殖种子数下限
Smax = 5;       % 繁殖种子数上限

Exponent = 3;             % 方差缩减指数(非线性调和因子)
sigma_initial = 0.5;      % 标准差初值
sigma_final = 0.001;	  % 标准差终值
%% Initialization
% 置空植物矩阵(包含位置和适应度值)
empty_plant.Position = [];
empty_plant.Cost = [];
pop = repmat(empty_plant, nPop0, 1);    % 初始种群矩阵
for i = 1:numel(pop)
    % 初始化位置
    pop(i).Position = unifrnd(VarMin, VarMax, VarSize);
    % 初始化适应度值
    pop(i).Cost = CostFunction(pop(i).Position);
end
% 初始化最优函数值历史记录
BestCosts = zeros(MaxIt, 1);
%% IWO Main Loop
for it = 1:MaxIt
    % 更新标准偏差
    sigma = ((MaxIt - it)/(MaxIt - 1))^Exponent * (sigma_initial - sigma_final) + sigma_final;
    % 获得最佳和最差的目标值
    Costs = [pop.Cost];
    BestCost = min(Costs);
    WorstCost = max(Costs);
    % 初始化子代种群
    newpop = [];
    % 繁殖
    for i = 1:numel(pop)
        % 比例系数
        ratio = (pop(i).Cost - WorstCost)/(BestCost - WorstCost);
        % 每个杂草产生的种子数
        S = floor(Smin + (Smax - Smin)*ratio);
        for j = 1:S
            % 初始化子代
            newsol = empty_plant;         
            % 生成随机位置
            % randn是一种产生标准正态分布的随机数或矩阵的函数
            newsol.Position = pop(i).Position + sigma * randn(VarSize); 
            % 边界(下限/上限)处理
            newsol.Position = max(newsol.Position, VarMin);
            newsol.Position = min(newsol.Position, VarMax);
            % 子代的目标函数值
            newsol.Cost = CostFunction(newsol.Position);
            % 添加子代
            newpop = [newpop;
                      newsol];  % #ok
        end
    end
    % 合并种群
    pop = [pop;
           newpop];
    % 种群排序
    [~, SortOrder] = sort([pop.Cost]);
    pop = pop(SortOrder);
    % 竞争排除(删除额外成员)
    if numel(pop)>nPop
        pop = pop(1:nPop);
    end
    % 保存最佳种群
    BestSol = pop(1);
    % 保存最优函数值历史记录
    BestCosts(it) = BestSol.Cost;
    % 显示迭代信息
%     disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCosts(it))]);
end
%% Results
figure;
% plot(BestCosts, 'LineWidth', 2);
semilogy(BestCosts, 'r', 'LineWidth', 2);
xlabel('Iteration');
ylabel('Best Cost');
grid on;
%% 输出结果
disp(['最优变量 ' num2str(BestSol.Position) ': 最优目标值 = ' num2str(BestCosts(it))]);

。。。。。。。略





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

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

相关文章

文本检测与识别技术的应用现状及产业案例

文本检测与识别技术的产业应用现状 文本是人类文明的视觉和物理载体,文本的检测和识别使视觉与对其内容的理解进一步联系起来。在这一部分中,我们列出并分析了对提高我们的生产力和生活质量产生或将产生重大影响的最杰出的项目。 自动数据录入&#xff…

创建Vue项目流程

第一步:创建项目。首先创建一个文件夹,然后找到要创建项目的文件夹 输入CMD 进入小黑窗 输入“vue create 项目名” 创建我们这个项目 第二步:进入版本选择 按上下键选 选择最后的自定义版本 按回车键 第三步: 按上下键进行切换 按…

ESP32基础应用之LVGL基础

文章目录1 实验目的1.1 参考文章2 实验工具3 准备工作3.1 搭建ESP32开发环境3.2 克隆lv_port_esp32工程4 配置lv_port_esp32工程5 实验验证6 使用过程遇到的问题6.1 触摸功能点击屏幕位置不对1 实验目的 本实验为使用ESP32实现LVGL(轻量级的嵌入式图形库&#xff0…

38、Java——汽车租赁系统(JDBC+MySQL+Apache DBUtils)

​ ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:乐趣国学的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java案例…

iptables简述

netfilter iptables的底层实现是netfilter。netfilter实在Linux内核2.4版引入的子系统,作为通用框架提供一套hook函数的管理机制,使得数据包过滤、地址转换、访问控制、连接跟踪等功能得以实现。netfilter的架构就是在整个网络流程中放置了一些钩子&…

[附源码]计算机毕业设计springboot海滨学院学生大创项目申报与审批系统

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

大中型园区网络拓扑架构

目录 园区出口区 数据中心区 网络管理区 DMZ区 核心层 汇聚层 终端层 接入层 大中型园区网络通常采用核心层为“根”的树形网络架构,拓扑稳定,易于扩展和维护。 园区网络可划分为多个层次:接入层、汇聚层、核心层, 以及多个分区&a…

iwebsec靶场 SQL注入漏洞通关笔记9- 双写关键字绕过

系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入(宽字节注入)_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记3- bool注入(布尔型盲注&#…

雨水情监测及视频监控解决方案 水库雨水情自动测报系统 介绍 功能 特点

平升电子水雨情自动监测系统/雨水情监测及视频监控解决方案/水库雨水情自动测报系统辅助水利管理部门实现水库雨水情信息“全要素、全量程、全覆盖”自动测报。系统具备水库水位、雨量、现场图像/视频等水文信息采集、传输、处理及预警广播等功能,有效提升了雨水情信…

技术分享 oracle中fm的作用

SQL> select |||to_char(5,999)||| from dual; 结果为:| 5| SQL> select |||to_char(5,000)||| from dual; 结果为:| 005| 如何去除多余的空格? SQL> select |||to_char(5,fm000)||| from dual; 结果为:|005| 空格…

mysql相关基础知识篇(三)

1.一条更新sql语句怎么执行的了解吗? 更新语句的执行是 Server 层和引擎层配合完成,数据除了要写入表中,还要记录相应的日志。 执行器先找引擎获取 ID2 这一行。ID 是主键,存储引擎检索数据,找到这一行。如果 ID2 这…

工业服务被忽视的销售力量:他们的技术人员

目录 1.从销售到服务的普遍 2.从服务到销售的滞后 3.是什么阻碍了售后服务时销售行为的发生 3.如何改善这种状况 1.从销售到服务的普遍 服务销售窗口的提前在工业企业已经是非常普遍的现象,特别是在互联网经济高度发达的今天,销售的触角已经直达消费…

MySQL如何确定查询处理各个阶段所消耗的时间

使用profile set profiling1; 启动profile 这是一个session级的配置 执行查询 show profiles; 查询每一个查询所消耗的总时间信息 show profile for query N; 查询的每个阶段所耗的时间 show profile cpu for query 1; 但是每次使用都会有一个warning 使用performanc…

59 - 类模板与函数模板的深度剖析

---- 整理自狄泰软件唐佐林老师课程 1. 多参数模板 类模板可以定义 任意多个不同的 类型参数 2. 类模板可以被 特化 模板本来是一组通用逻辑的实现,但是可能存在特定的参数类型下,通用的逻辑实现不能满足要求,这时就需要针对这些特殊的类型&…

【密码学基础】RSA加密算法

1 RSA介绍 RSA是一种非对称加密算法,即加密和解密时用到的密钥不同。加密密钥是公钥,可以公开;解密密钥是私钥,必须保密保存。基于一个简单的数论事实:两个大质数相乘很容易,但想要对其乘积进行因式分解却…

IIS 部署 SSL 证书提示证书链中的一个或多个中间证书丢失

现象描述 IIS Web 服务部署免费 SSL 证书时提示 “证书链中的一个或多个中间证书丢失,要解决此问题,请确保安装了所有中间证书”。 下载中间证书文件,根据您的证书加密算法类型下载中间证书至您的云服务器中。 安装中间证书 1. 在您需要部…

Arcgis地理配准栅格数据

前提 有时候获取的不同数据没有坐标,而却有共同点,这时候需要对数据进行配准校正,数据才能最终拼接镶嵌在一起 效果 1、准备数据 2、打开地理配准工具 3、地理配准中设置待配准数据 4、添加控制点 这份数据目测很容易找到控制点 在待配准数据上先选择控制点,再在基准数…

JavaScript_BOM

JavaScript_BOM BOM:Browser Object Model 浏览器对象模型。也就是 JavaScript 将浏览器的各个组成部分封装为对象。 我们要操作浏览器的各个组成部分就可以通过操作 BOM 中的对象来实现。 BOM 中包含了如下对象: Window:浏览器窗口对象N…

JavaScript基础语法(类型转换)

JavaScript基础语法(类型转换) 使用运算符的时候会发生类型转换。 其他类型转为number string转换为 number类型:按照字符串的字面值,转为数字。如果字面值不是数字,则转为NaN 将 string转换为 number有两种方式&…

存储器管理

文章目录存储器的层次结构存储器的指标多层结构的存储器系统主存储器与寄存器高速缓存和磁盘缓存程序的装入和链接对用户程序的处理步骤程序的装入程序的链接连续分配的存储管理方式单一连续分配固定分区分配动态分区分配基于顺序搜索的动态分区分配算法基于索引搜索的动态分区…