逍遥之谷吧 关注:58贴子:9,147

召唤伽小马,求助算法

只看楼主收藏回复

遗传算法和蚁群算法用来解旅行商问题哪个简单一点或者说易懂一点?新手刚接触求指教
@伽小马



IP属地:浙江1楼2012-05-22 20:29回复
    @热带火原子
    


    IP属地:浙江2楼2012-05-22 20:31
    回复
      2026-05-16 15:51:00
      广告
      不感兴趣
      开通SVIP免广告
      GA无误


      3楼2012-05-22 23:02
      回复
        以前写的,用Logistic混沌序列做了改进,讲究看了吧


        5楼2012-05-22 23:09
        回复
          好复杂,谢谢指教,我先学习一下,到时再求教一下


          IP属地:浙江来自Android客户端6楼2012-05-22 23:55
          回复
            什么乱码?删除它,吧务~


            来自Android客户端7楼2012-05-23 00:12
            回复
              什么乱码?删除它,吧务~


              来自Android客户端8楼2012-05-23 00:12
              回复
                回复8楼:不可以呀


                IP属地:浙江来自Android客户端9楼2012-05-23 00:26
                回复
                  2026-05-16 15:45:00
                  广告
                  不感兴趣
                  开通SVIP免广告
                  不得不说这货编程秒我n条街


                  10楼2012-05-23 11:24
                  回复
                    回复9楼:这样会突显我的无知的。。


                    来自Android客户端11楼2012-05-23 12:13
                    回复
                      貌似...错过了 抱歉 这几天忙爆了今天才有空上贴吧
                      如果以后你还想了解我期末完了以后详细给你讲讲...我其实更喜欢BP神经网络结合遗传算法的来解决NP-hard的~~


                      12楼2012-05-31 11:49
                      回复
                        回复12楼:已经非常感谢了,我以你给的算法为原型成功完成了作业


                        IP属地:浙江来自Android客户端13楼2012-06-01 10:03
                        回复
                          其实蚁群算法更适合TSP的.....PSO最简单但太早熟,标准GA只收敛到全局最优解的90%左右(所以我是用改良圈初始化染色体,不然最后结果很糟糕....不过现在我都用量子旋转门了嘿嘿..),ACA则最适合组合优化~酱紫~
                          @丶火贼丨浮云丶
                          


                          14楼2012-08-03 21:35
                          收起回复
                            function ACAforTSP(city)
                            n=size(city,1);
                            d=zeros(n,n);
                            [ii jj]=meshgrid(1:n);
                            d=arrayfun(@(i,j)sqrt(sum((city(i,:)-city(j,:)).^2)),ii,jj);
                            d=d+eye(n)*1e-4;
                            m=35;
                            alpha=1;
                            beta=5;
                            rho=.1;
                            q=1;
                            eta=1./d;
                            tau=ones(n,n);
                            table=zeros(m,n);
                            iter=1;
                            iter_max=200;
                            route_best=zeros(iter_max,n);
                            length_best=zeros(iter_max,1);
                            while iter<=iter_max
                            table(:,1)=unidrnd(n,m,1);
                            city_index=1:n;
                            for i=1:m
                            for j=2:n
                            tabu=table(i,1:(j-1));
                            allow=setdiff(1:n,tabu);
                            p=zeros(size(allow));
                            p=arrayfun(@(k)tau(tabu(end),allow(k))^alpha*eta(tabu(end),allow(k))^beta,1:length(allow));
                            p=p/sum(p);
                            table(i,j)=allow(find(cumsum(p)>=rand,1,'first'));
                            end
                            end
                            l=zeros(m,1);
                            for i=1:m
                            route=table(i,:);
                            for j=1:(n-1)
                            l(i)=l(i)+d(route(j),route(j+1));
                            end
                            l(i)=l(i)+d(route(n),route(1));
                            end
                            if iter==1
                            [min_length,min_index]=min(l);
                            length_best(iter)=min_length;
                            route_best(iter,:)=table(min_index,:);
                            else
                            [min_length,min_index]=min(l);
                            length_best(iter)=min(length_best(iter-1),min_length);
                            if length_best(iter)==min_length
                            route_best(iter,:)=table(min_index,:);
                            else
                            route_best(iter,:)=route_best(iter-1,:);
                            end
                            end
                            delta_tau=zeros(n,n);
                            for i=1:m
                            for j=1:(n-1)
                            delta_tau(table(i,j),table(i,j+1))=delta_tau(table(i,j),table(i,j+1))+q/length(i);
                            end
                            delta_tau(table(i,n),table(i,1))=delta_tau(table(i,n),table(i,1))+q/length(i);
                            end
                            tau=(1-rho)*tau+delta_tau;
                            iter=iter+1;
                            table=zeros(m,n);
                            end
                            [shortest_length index]=min(length_best);
                            shortest_route=route_best(index,:);
                            end
                            不送


                            15楼2012-08-03 22:30
                            收起回复
                              2026-05-16 15:39:00
                              广告
                              不感兴趣
                              开通SVIP免广告

                              fit=@(x,y)x.*sin(4*pi*x)+y.*sin(20*pi*y);

                              最优解:11.631 5.72186
                              最大值:17.2093


                              16楼2012-08-03 23:00
                              收起回复