將程式碼改成無function.

這是蟻群程式碼我要丟入labview的mathscript裡面計算.可是mathscript無法計算有function的程式碼.

希望大大可以幫我修改成沒有function的程式碼.

function [bestroute,routelength]=Ant
clc
clear
tic

% 讀入城市間距離矩陣數據文件
CooCity = [1,2,5;2,5,4;9,7,1;1,6,4;2,3,7]
NC=length(CooCity);           % 城市個數
for i=1:NC       % 計算各城市間的距離
    for j=1:NC
        distance(i,j)=sqrt((CooCity(i,2)-CooCity(j,2))^2+(CooCity(i,3)-CooCity(j,3))^2);
    end
end
%distance=xlsread('DistanceCity.xls');  % 城市間距離矩陣數據文件,excel形式給出

MAXIT=100;       % 最大循環次數

Citystart=[1];     %  起點城市編號為空陣
tau=ones(NC,NC); % 初始時刻各邊上的信息痕跡為1
rho=0.3;         % 揮發係數
alpha=1;         % 殘留信息相對重要度
beta=5;          % 預見值的相對重要度
Q=10;            % 信息素強度
NumAnt=20;       % 螞蟻數量
bestroute=zeros(1,32);  % 用來記錄最優路徑
save output.txt bestroute -ASCII -TABS;
routelength=inf;        % 用來記錄當前找到的最優路徑長度
for n=1:MAXIT           %循環次數
    for k=1:NumAnt      %考查第K只螞蟻
        deltatau=zeros(NC,NC); % 第K只螞蟻移動前各邊上的信息增量為零
      % [routek,lengthk]=path(distance,tau,alpha,beta,[]);      %  不靠率起始點
 [routek,lengthk]=path(distance,tau,alpha,beta,Citystart);   % 指定起始點
              if lengthk<routelength   % 找到一條更好的路徑
            routelength=lengthk;
            bestroute=routek;
        end
        for i=1:NC-1    % 第K只螞蟻在路徑上釋放的信息量
            deltatau(routek(i),routek(i+1))=deltatau(routek(i),routek(i+1))+Q/lengthk;  % 信息素更新
        end
        deltatau(routek(NC),1)=deltatau(routek(NC),1)+Q/lengthk;  %
    end
    length_n(n)=routelength;   % 記錄路徑收斂
   
    tau=(1-rho).*tau+rho.*deltatau;  % 信息素揮發,更新後的信息素
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
costtime=toc;
subplot(1,2,1),plot([CooCity(bestroute,2)],[CooCity(bestroute,3)],'-*')
subplot(1,2,2),plot([1:MAXIT],length_n,'-*')
[routelength,costtime]
 % 某只螞蟻找到的某條路徑routek,lengthk
function [routek,lengthk]=path(distance,tau,alpha,beta,Citystart)

[m,n]=size(distance);
if isempty(Citystart)        % 如果不確定起點
    p=fix(m*rand)+1;         % 隨機方式初始化起點,均勻概率
else
    p=Citystart;            % 外部給定確定起點
end
lengthk=0;        % 初始路徑長度設為 0
routek=

;        % 螞蟻路徑點序列,即該螞蟻已經過的城市集合,路徑初始起點
for i=1:m-1
   np=routek(end);  % 螞蟻路徑城市序號,依次經過的城市編號 
   
    np_sum=0;      % 路由長度初始為 0
   
    for j=1:m
             if inroute(j,routek)
            % 判斷城市節點j是否屬於tabuk,即是否已經過
            continue;
                     
             else                    % j為還未經過的點,對
            ada=1/distance(np,j);  %  預見度
            np_sum=np_sum+tau(np,j)^alpha*ada^beta;   % 路由表:信息痕跡、預見度
              end
     
    end
    cp=zeros(1,m);  % 轉移概率,基於路徑長度及路由表
    for j=1:m
      %  if  any(routek==8)             break;%
        if inroute(j,routek)
            continue;
           
         
        else
            ada=1/distance(np,j);       % 預見度
            cp(j)=tau(np,j)^alpha*ada^beta/np_sum;   % np到j的轉移概率
        end
    end
    NextCity=nextcitychoose(cp);   % 根據轉移概率確定下一個城市,
    % 這裡採用不同的隨機決策原則所得效果也不同:
    %    nextcitychoose3  取轉移概率最大值方向
    %    nextcitychoose和nextcitychoose2  轉移概率累積序列大於某隨機值方向
    % 直觀地,取轉移概率最大值方向方法,決策結果穩定且收斂快
    routek=[routek,NextCity]; % 更新路徑
    lengthk=lengthk+distance(np,NextCity);    %  更新路徑長度
end
% % ?為何不直接以轉移概率最大值對應節點為下一轉移節點
% 隨機決策原則確定下步轉移節點,  轉移概率累積序列大於某隨機值方向
function N=nextcitychoose(Cp)
a=rand;
s=0;
for i=1:length(Cp)
    s=s+Cp(i);
    if a<=s
        N=i;
        break;
    end
end
function Y=inroute(n,A)
                        % A 為已過城市點集合,如果n在A中返回1
Y=0;
for i=1:length(A)
    if A(i)==n
        Y=1;
        break;
    end
end