⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test3_5.m

📁 粒子群算法的实例
💻 M
📖 第 1 页 / 共 5 页
字号:
                                    else
                                        value(i,j)=value(i,j)-1;
                                    end
                                else
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>0
                                        value(i,j)=value(i,j)+c*exp(8*abs(ns(i+k,j+h)-ave1));
                                    else
                                        value(i,j)=value(i,j)-c*exp(2*abs(ns(i+k,j+h)-ave1));
                                    end
                                end
                                g=g+1;
                            end
                        end
                        value(i,j)=value(i,j)/g;
                    end
                elseif j>1 & j<8
                    if ns(i,j)>2
                        if ns(i,j)-ns1(i,j)>0
                            value(i,j)=exp(6*(ns(i,j)-ns1(i,j)));
                        end
                    end
                    if ns(i,j)<2
                        g=0;
                        for k=0:1
                            for h=-1:1
                                if k==0 & h==0
                                    c=1;
                                elseif abs(k)==1 & abs(h)==1
                                    c=0.2;
                                else
                                    c=0.4;
                                end
                                if ns(i+k,j+h)<2
                                    value(i,j)=value(i,j)+c*exp(3*abs(ns(i+k,j+h)-ave1));
                                elseif ns(i+k,j+h)==2
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>1
                                        value(i,j)=value(i,j)+c*exp(8);
                                    else
                                        value(i,j)=value(i,j)-1;
                                    end
                                else
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>0
                                        value(i,j)=value(i,j)+c*exp(8*abs(ns(i+k,j+h)-ave1));
                                    else
                                        value(i,j)=value(i,j)-c*exp(2*abs(ns(i+k,j+h)-ave1));
                                    end
                                end
                                g=g+1;
                            end
                        end
                        value(i,j)=value(i,j)/g;
                    end
                else
                    if ns(i,j)>2
                        if ns(i,j)-ns1(i,j)>0
                            value(i,j)=exp(6*(ns(i,j)-ns1(i,j)));
                        end
                    end
                    if ns(i,j)<2
                        g=0;
                        for k=0:1
                            for h=-1:0
                                if k==0 & h==0
                                    c=1;
                                elseif abs(k)==1 & abs(h)==1
                                    c=0.2;
                                else
                                    c=0.4;
                                end
                                if ns(i+k,j+h)<2
                                    value(i,j)=value(i,j)+c*exp(3*abs(ns(i+k,j+h)-ave1));
                                elseif ns(i+k,j+h)==2
                                    if ns(i+k,j+h)>ns1(i+k,j+h)
                                        value(i,j)=value(i,j)+c*exp(8);
                                    else
                                        value(i,j)=value(i,j)-1;
                                    end
                                else
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>1
                                        value(i,j)=value(i,j)+c*exp(8*abs(ns(i+k,j+h)-ave1));
                                    else
                                        value(i,j)=value(i,j)-c*exp(2*abs(ns(i+k,j+h)-ave1));
                                    end
                                end
                                g=g+1;
                            end
                        end
                        value(i,j)=value(i,j)/g;
                    end   
                    if ns(i,j)-ns1(i,j)>1
                        value(i,j)=abs(6000*(value(i,j)+20));
                    end
                end
            end
        elseif i>1 & i<8
            for j=1:8
                if j==1
                    if ns(i,j)>2
                        if ns(i,j)-ns1(i,j)>0
                            value(i,j)=exp(6*(ns(i,j)-ns1(i,j)));
                        end
                    end
                    if ns(i,j)<2
                        g=0;
                        for k=-1:1
                            for h=0:1
                                if k==0 & h==0
                                    c=1;
                                elseif abs(k)==1 & abs(h)==1
                                    c=0.2;
                                else
                                    c=0.4;
                                end
                                if ns(i+k,j+h)<2
                                    value(i,j)=value(i,j)+c*exp(3*abs(ns(i+k,j+h)-ave1));
                                elseif ns(i+k,j+h)==2
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>1
                                        value(i,j)=value(i,j)+c*exp(8);
                                    else
                                        value(i,j)=value(i,j)-1;
                                    end
                                else
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>0
                                        value(i,j)=value(i,j)+c*exp(8*abs(ns(i+k,j+h)-ave1));
                                    else
                                        value(i,j)=value(i,j)-c*exp(2*abs(ns(i+k,j+h)-ave1));
                                    end
                                end
                                g=g+1;
                            end
                        end
                        value(i,j)=value(i,j)/g;
                    end
                elseif j>1 & j<8
                    if ns(i,j)>2
                        if ns(i,j)-ns1(i,j)>0
                            value(i,j)=exp(6*(ns(i,j)-ns1(i,j)));
                        end
                    end
                    if ns(i,j)<2
                        g=0;
                        for k=-1:1
                            for h=-1:1
                                if k==0 & h==0
                                    c=1;
                                elseif abs(k)==1 & abs(h)==1
                                    c=0.2;
                                else
                                    c=0.4;
                                end
                                if ns(i+k,j+h)<2
                                    value(i,j)=value(i,j)+c*exp(3*abs(ns(i+k,j+h)-ave1));
                                elseif ns(i+k,j+h)==2
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>1
                                        value(i,j)=value(i,j)+c*exp(8);
                                    else
                                        value(i,j)=value(i,j)-1;
                                    end
                                else
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>0
                                        value(i,j)=value(i,j)+c*exp(8*abs(ns(i+k,j+h)-ave1));
                                    else
                                        value(i,j)=value(i,j)-c*exp(2*abs(ns(i+k,j+h)-ave1));
                                    end
                                end
                                g=g+1;
                            end
                        end
                        value(i,j)=value(i,j)/g;
                    end
                else
                    if ns(i,j)>2
                        if ns(i,j)-ns1(i,j)>0
                            value(i,j)=exp(6*(ns(i,j)-ns1(i,j)));
                        end
                    end
                    if ns(i,j)<2
                        g=0;
                        for k=-1:1
                            for h=-1:0
                                if k==0 & h==0
                                    c=1;
                                elseif abs(k)==1 & abs(h)==1
                                    c=0.2;
                                else
                                    c=0.4;
                                end
                                if ns(i+k,j+h)<2
                                    value(i,j)=value(i,j)+c*exp(3*abs(ns(i+k,j+h)-ave1));
                                elseif ns(i+k,j+h)==2
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>1
                                        value(i,j)=value(i,j)+c*exp(8);
                                    else
                                        value(i,j)=value(i,j)-1;
                                    end
                                else
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>0
                                        value(i,j)=value(i,j)+c*exp(8*abs(ns(i+k,j+h)-ave1));
                                    else
                                        value(i,j)=value(i,j)-c*exp(2*abs(ns(i+k,j+h)-ave1));
                                    end
                                end
                                g=g+1;
                            end
                        end
                        value(i,j)=value(i,j)/g;
                    end
               end
            end
        else
            for j=1:8
                if j==1
                    if ns(i,j)>2
                        if ns(i,j)-ns1(i,j)>0
                            value(i,j)=exp(6*(ns(i,j)-ns1(i,j)));
                        end
                    end
                    if ns(i,j)<2
                        g=0;
                        for k=-1:0
                            for h=0:1
                                if k==0 & h==0
                                    c=1;
                                elseif abs(k)==1 & abs(h)==1
                                    c=0.2;
                                else
                                    c=0.4;
                                end
                                if ns(i+k,j+h)<2
                                    value(i,j)=value(i,j)+c*exp(3*abs(ns(i+k,j+h)-ave1));
                                elseif ns(i+k,j+h)==2
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>1
                                        value(i,j)=value(i,j)+c*exp(8);
                                    else
                                        value(i,j)=value(i,j)-1;
                                    end
                                else
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>0
                                        value(i,j)=value(i,j)+c*exp(8*abs(ns(i+k,j+h)-ave1));
                                    else
                                        value(i,j)=value(i,j)-c*exp(2*abs(ns(i+k,j+h)-ave1));
                                    end                                    
                                end
                                g=g+1;
                            end
                        end
                        value(i,j)=value(i,j)/g;
                    end
                elseif j>1 & j<8
                    if ns(i,j)>2
                        if ns(i,j)-ns1(i,j)>0
                            value(i,j)=exp(6*(ns(i,j)-ns1(i,j)));
                        end
                    end
                    if ns(i,j)<2
                        g=0;
                        for k=-1:0
                            for h=-1:1
                                if k==0 & h==0
                                    c=1;
                                elseif abs(k)==1 & abs(h)==1
                                    c=0.2;
                                else
                                    c=0.4;
                                end
                                if ns(i+k,j+h)<2
                                    value(i,j)=value(i,j)+c*exp(3*abs(ns(i+k,j+h)-ave1));
                                elseif ns(i+k,j+h)==2
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>1
                                        value(i,j)=value(i,j)+c*exp(8);
                                    else
                                        value(i,j)=value(i,j)-1;
                                    end
                                else
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>0
                                        value(i,j)=value(i,j)+c*exp(8*abs(ns(i+k,j+h)-ave1));
                                    else
                                        value(i,j)=value(i,j)-c*exp(2*abs(ns(i+k,j+h)-ave1));
                                    end
                                end
                                g=g+1;
                            end
                        end
                        value(i,j)=value(i,j)/g;
                    end
                else
                    if ns(i,j)>2
                        if ns(i,j)-ns1(i,j)>0
                            value(i,j)=exp(6*(ns(i,j)-ns1(i,j)));
                        end
                    end
                    if ns(i,j)<2
                        g=0;
                        for k=-1:0
                            for h=-1:0
                                if k==0 & h==0
                                    c=1;
                                elseif abs(k)==1 & abs(h)==1
                                    c=0.2;
                                else
                                    c=0.4;
                                end
                                if ns(i+k,j+h)<2
                                    value(i,j)=value(i,j)+c*exp(3*abs(ns(i+k,j+h)-ave1));
                                elseif ns(i+k,j+h)==2
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>1
                                        value(i,j)=value(i,j)+c*exp(8);
                                    else
                                        value(i,j)=value(i,j)-1;
                                    end
                                else
                                    if ns(i+k,j+h)-ns1(i+k,j+h)>0
                                        value(i,j)=value(i,j)+c*exp(8*abs(ns(i+k,j+h)-ave1));
                                    else
                                        value(i,j)=value(i,j)-c*exp(2*abs(ns(i+k,j+h)-ave1));
                                    end
                                end
                                g=g+1;
                            end
                        end
                        value(i,j)=value(i,j)/g;
                    end
               end
            end   
        end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -