1 简介

2 完整代码

%%%%%%%%%%%%%%%%禁忌搜索算法求函数极值问题%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%%%%%%%%%clear all;                        %清除所有变量close all;                        %清图clc;                              %清屏xu=5;                             %上界xl=-5;                            %下界L=randi([5 11],1,1);            %禁忌长度取5,11之间的随机数Ca=5;                             %邻域解个数Gmax=200;                         %禁忌算法的最大迭代次数;w=1;                              %自适应权重系数tabu=[];                          %禁忌表x0=rand(1,2)*(xu-xl)+xl;          %随机产生初始解bestsofar.key=x0;                 %最优解xnow(1).key=x0;                   %当前解%%%%%%%%%%%%%%%%最优解函数值,当前解函数值%%%%%%%%%%%%%%%%%bestsofar.value=func2(bestsofar.key);  xnow(1).value=func2(xnow(1).key);g=1;while g<Gmax    x_near=[];                     %邻域解    w=w*0.998;    for i=1:Ca        %%%%%%%%%%%%%%%%%%%%%产生邻域解%%%%%%%%%%%%%%%%%%%%        x_temp=xnow(g).key;        x1=x_temp(1);        x2=x_temp(2);        x_near(i,1)=x1+(2*rand-1)*w*(xu-xl);           %%%%%%%%%%%%%%%%%边界条件处理%%%%%%%%%%%%%%%%%%%           %%%%%%%%%%%%%%%%%%%边界吸收%%%%%%%%%%%%%%%%%%%%%        if x_near(i,1)<xl            x_near(i,1)=xl;        end        if x_near(i,1)>xu            x_near(i,1)=xu;        end        x_near(i,2)=x2+(2*rand-1)*w*(xu-xl);           %%%%%%%%%%%%%%%%%边界条件处理%%%%%%%%%%%%%%%%%%%           %%%%%%%%%%%%%%%%%%%边界吸收%%%%%%%%%%%%%%%%%%%%%        if x_near(i,2)<xl            x_near(i,2)=xl;        end        if x_near(i,2)>xu            x_near(i,2)=xu;        end        %%%%%%%%%%%%%%计算邻域解点的函数值%%%%%%%%%%%%%%%%%%%        fitvalue_near(i)=func2(x_near(i,:));     end    %%%%%%%%%%%%%%%%%%%%最优邻域解为候选解%%%%%%%%%%%%%%%%%%%    temp=find(fitvalue_near==max(fitvalue_near));    candidate(g).key=x_near(temp,:);    candidate(g).value=func2(candidate(g).key);    %%%%%%%%%%%%%%候选解和当前解的评价函数差%%%%%%%%%%%%%%%%%%    delta1=candidate(g).value-xnow(g).value;     %%%%%%%%%%%%%%候选解和目前最优解的评价函数差%%%%%%%%%%%%%%%    delta2=candidate(g).value-bestsofar.value;        %%%%%候选解并没有改进解,把候选解赋给下一次迭代的当前解%%%%%%    if delta1<=0           xnow(g+1).key=candidate(g).key;        xnow(g+1).value=func2(xnow(g).key);        %%%%%%%%%%%%%%%%%%%%%更新禁忌表%%%%%%%%%%%%%%%%%%%%%%%        tabu=[tabu;xnow(g+1).key];        if size(tabu,1)>L              tabu(1,:)=[];        end        g=g+1;                 %更新禁忌表后,迭代次数自增1    %%%%%%%如果相对于当前解有改进,则应与目前最优解比较%%%%%%%%%%    else        if delta2>0            %候选解比目前最优解优            %%%%%%%%%%把改进解赋给下一次迭代的当前解%%%%%%%%%%%%            xnow(g+1).key=candidate(g).key;            xnow(g+1).value=func2(xnow(g+1).key);            %%%%%%%%%%%%%%%%%%%%更新禁忌表%%%%%%%%%%%%%%%%%%%%%            tabu=[tabu;xnow(g+1).key];            if size(tabu,1)>L                 tabu(1,:)=[];            end             %%%%%%%%把改进解赋给下一次迭代的目前最优解%%%%%%%%%%%%            %%%%%%%%%%%%%%%%%包含藐视准则%%%%%%%%%%%%%%%%%%%%%%%            bestsofar.key=candidate(g).key;            bestsofar.value=func2(bestsofar.key);            g=g+1;                %更新禁忌表后,迭代次数自增1        else            %%%%%%%%%%%%%%%判断改进解时候在禁忌表里%%%%%%%%%%%%%%%            [M,N]=size(tabu);            r=0;            for m=1:M                if candidate(g).key(1)==tabu(m,1)...                   & candidate(g).key(2) == tabu(m,1)                    r=1;                end            end            if  r==0                %%改进解不在禁忌表里,把改进解赋给下一次迭代的当前解                xnow(g+1).key=candidate(g).key;                xnow(g+1).value=func2(xnow(g+1).key);                %%%%%%%%%%%%%%%%%%%%%更新禁忌表%%%%%%%%%%%%%%%%%%                tabu=[tabu;xnow(g).key];                if size(tabu,1)>L                    tabu(1,:)=[];                end                g=g+1;               %更新禁忌表后,迭代次数自增1            else                %%%如果改进解在禁忌表里,用当前解重新产生邻域解%%%%%                xnow(g).key=xnow(g).key;                xnow(g).value=func2(xnow(g).key);            end        end    end    trace(g)=func2(bestsofar.key);endbestsofar;           %最优变量及最优值figureplot(trace);xlabel('迭代次数')ylabel('目标函数值')title('搜索过程最优值曲线')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%适配值函数%%%%%%%%%%%%%%%%%%%%%%%%function y=func2(x)y=(cos(x(1)^2+x(2)^2)-0.1)/(1+0.3*(x(1)^2+x(2)^2)^2)+3;

3 运行结果

4 参考文献

[1]戚峰, 俞晶菁, 黄召杰. 基于禁忌搜索算法求解车间作业调度问题[J]. 兰州交通大学学报, 2011, 30(3):7.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【禁忌搜索算法】基于禁忌搜索算法求解函数极值问题含Matlab源码相关推荐

  1. 【背包问题】基于matlab禁忌搜索算法求解背包问题【含Matlab源码 373期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[背包问题]基于matlab禁忌搜索算法求解背包问题[含Matlab源码 373期] 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支付 ...

  2. 【MVO TSP】基于matlab灰狼算法求解旅行商问题【含Matlab源码 1327期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab灰狼算法求解旅行商问题[含Matlab源码 1327期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  3. 【GA TSP】基于matlab遗传算法求解旅行商问题【含Matlab源码 1337期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab遗传算法求解旅行商问题[含Matlab源码 1337期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  4. 【AFSA TSP】基于matlab人工鱼群算法求解旅行商问题【含Matlab源码 422期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab人工鱼群算法求解旅行商问题[含Matlab源码 422期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  5. 【BA TSP】基于matlab蜜蜂算法求解旅行商问题【含matlab源码 1248期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab蜜蜂算法求解旅行商问题[含matlab源码 1248期] 获取代码方式2: 付费专栏Matlab路径规划(初级版 ...

  6. 【IA TSP】基于matlab免疫算法求解旅行商问题【含Matlab源码 195期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[旅行商问题]基于matlab免疫算法求解旅行商问题[含Matlab源码 195期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  7. 【GA TSP】基于matlab遗传算法求解旅行商问题【含Matlab源码 1909期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[GA TSP]基于matlab遗传算法求解旅行商问题[含Matlab源码 1909期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方 ...

  8. 【钟表识别】基于计算机视觉实现钟表时间识别含Matlab源码

    1 简介 基于计算机视觉实现钟表时间识别含Matlab源码​ 2 部分代码 function [time_clock]= read(filepath) I = imread(filepath); [e ...

  9. MATLAB从入门到精通-欧拉法与梯形法求解微分方程(含MATLAB源码)

    前言 以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是我不断更新的动力哟! MATLAB-30天带你从入门到精通 MATLAB深入理解高级教程(附源码) tableau可视化数据 ...

  10. 【PSO TSP】基于matlab GUI粒子群算法求解旅行商问题【含Matlab源码 1334期】

    ⛄一.TSP简介 旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选 ...

最新文章

  1. cartographer 配置过程
  2. 利用cvMinAreaRect2求取轮廓最小外接矩形
  3. SpringBoot静态获取 bean的三种方式,你学会了吗?
  4. Android多线程:这是一份全面 详细的线程池(ThreadPool)讲解教程
  5. 360前端星学习笔记-深入CSS
  6. 来自Riot 的一份游戏美术教程(三):角色设计
  7. 使用CXF 2.7.5出现的java.lang.RuntimeException: Cannot create a secure XMLInputFactory错误解决...
  8. Python-02-基础知识
  9. ASP.NET实现数据采集
  10. python web框架哪个好_盘点:9款流行Web框架及其优缺点
  11. Windows server 2019 - Raid1 搭建+测试
  12. c语言贪吃蛇设计意义,C语言贪吃蛇设计理念.pdf
  13. 『2022/2/5』Android Studio下载安装详细步骤(Android Studio BumbleBee/2021.1.1.21 Patch 1 )
  14. 实验室管理系统LIMS的作用和意义
  15. 计算机软件高级证书试题,高级程序员认证考试经验总结
  16. oracle自增序列创建
  17. meterial design 5.0 新增控件介绍及使用方法
  18. 计网-网络号、子网号、主机号以及子网网络地址,子网广播地址的算法
  19. 修改设备管理器信息,修改我的电脑系统属性,修改dxdiag信息
  20. OSM数据下载及两种格式转换方法(shp等格式)

热门文章

  1. JAVA 仿QQ聊天程序(附源码)
  2. IT 技能发展:10 大基本 IT 技能
  3. php制作日历的代码,php日历制作代码分享_PHP教程
  4. 抽象代数 01.06 变换群与置换群
  5. 产品经理,没有那么牛逼
  6. 为什么老实人很难当上领导?因为他们身上有这个致命弱点
  7. Python简单实现微博自动点赞
  8. 简谈BOOST升压电路
  9. 10本Java架构师必读书籍推荐
  10. 异速联某客户端无法登陆