【背包问题】基于禁忌搜索算法求解背包问题附Matlab代码

1 内容介绍

设计了一种基于禁忌搜索的遗传算法,利用遗传算法提供的并行搜索主框架,结合禁忌算法的个体串行搜索方式,能扩大搜索空间,快速实现全局优化。把基于禁忌搜索的遗传算法与启发式方法相结合用来求解背包问题,经过计算机仿真,其优化性能指标及搜索效率均有大幅度的提高。

2 仿真代码

function [x,p1,p2]=near(x1,list)

a=[4,43,83,84,68,92,82,6,44,32,18, 56,83,25,96,70,48,14,58,92];

c=[46,90,72,91,40,75,35,8,54,78,40,77,15,61,17,75,29,75,63,44];

b=878;

temp=0;xtemp=0;

for j=1:60

    k=1;%选择初始可行解

    xt=x1;    

         while(k)        

             px=ceil(rand*19)+1;  %在[2,20]范围内随机产生一个变异位

             py=ceil(rand*19)+1;

             xt(px)=abs(xt(px)-1);             

            xt(py)=abs(xt(py)-1);

            w=a*xt;

            if w<=b

                k=0;

            end            

         end

         if (list(px)>0)&(list(py)>0)

             continue;

         else

             if (c*xt)>temp

                temp=c*xt;

                xtemp=xt;

                p1=px;p2=py;

             end

        end  

end

x=xtemp;p1=px';

p2=py';

3 运行结果

4 参考文献

[1]张晓琴, 黄玉清. 基于禁忌搜索的启发式求解背包问题算法[J]. 电子科技大学学报, 2005, 34(3):4.

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

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

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值