當前位置:首頁 » 操作系統 » matlab路徑優化演算法

matlab路徑優化演算法

發布時間: 2022-08-18 14:10:37

⑴ matlab具體的優點

matlab具體的優點:

1、編程環境

MATLAB由一系列工具組成。這些工具方便用戶使用MATLAB的函數和文件,其中許多工具採用的是圖形用戶界面。包括MATLAB桌面和命令窗口、歷史命令窗口、編輯器和調試器、路徑搜索和用於用戶瀏覽幫助、工作空間、文件的瀏覽器。

2、簡單易用

Matlab是一個高級的矩陣/陣列語言,它包含控制語句、函數、數據結構、輸入和輸出和面向對象編程特點。用戶可以在命令窗口中將輸入語句與執行命令同步,也可以先編寫好一個較大的復雜的應用程序(M文件)後再一起運行。

3、強大處理

MATLAB是一個包含大量計算演算法的集合。其擁有600多個工程中要用到的數學運算函數,可以方便的實現用戶所需的各種計算功能。函數中所使用的演算法都是科研和工程計算中的最新研究成果,而且經過了各種優化和容錯處理。

4、圖形處理

MATLAB自產生之日起就具有方便的數據可視化功能,以將向量和矩陣用圖形表現出來,並且可以對圖形進行標注和列印。高層次的作圖包括二維和三維的可視化、圖象處理、動畫和表達式作圖。

5、模塊工具

MATLAB對許多專門的領域都開發了功能強大的模塊集和工具箱。一般來說,它們都是由特定領域的專家開發的,用戶可以直接使用工具箱學習、應用和評估不同的方法而不需要自己編寫代碼。

6、程序介面

新版本的MATLAB可以利用MATLAB編譯器和C/C++數學庫和圖形庫,將自己的MATLAB程序自動轉換為獨立於MATLAB運行的C和C++代碼。

⑵ matlab最優化演算法有哪些

matlab最優化程序包括

無約束一維極值問題 進退法 黃金分割法 斐波那契法 牛頓法基本牛頓法 全局牛頓法 割線法 拋物線法 三次插值法 可接受搜索法 Goidstein法 Wolfe.Powell法

單純形搜索法 Powell法 最速下降法 共軛梯度法 牛頓法 修正牛頓法 擬牛頓法 信賴域法 顯式最速下降法, Rosen梯度投影法 罰函數法 外點罰函數法

內點罰函數法 混合罰函數法 乘子法 G-N法 修正G-N法 L-M法 線性規劃 單純形法 修正單純形法 大M法 變數有界單純形法 整數規劃 割平面法 分支定界法 0-1規劃 二次規劃

拉格朗曰法 起作用集演算法 路徑跟蹤法 粒子群優化演算法 基本粒子群演算法 帶壓縮因子的粒子群演算法 權重改進的粒子群演算法 線性遞減權重法 自適應權重法 隨機權重法

變學習因子的粒子群演算法 同步變化的學習因子 非同步變化的學習因子 二階粒子群演算法 二階振盪粒子群演算法

⑶ matlab蟻群演算法路徑優化

你用D保存了隨機點,D的標號就是對應隨機點

⑷ matlab求最優解的的優化演算法怎麼加約束條件

試下附件中的fminsearchbnd函數,請把fminsearchbnd.m文件放在你的工作路徑中。

fminsearchbnd(@(x)f(x(1),x(2),x(3)),[0;0;0],[0;0;0],[30;30;2])
ans=

15.0848
20.5081
0.5452

此文件下載自File exchange,作者:John D'Errico

⑸ 我也需要用matlab的 遺傳演算法工具箱來優化路徑,對matlab才剛接觸,不知道怎麼用,急求


如果按照默認設置來運行GA,輸入fitness函數和未知量個數,就可以運行了。通常,優化問題的目標函數就是fitness函數。如果想重新設置一下GA的參數,可在options處,設置,具體參數設置還要看看幫助文件。

⑹ 求線性規劃演算法的路徑優化畢設

線性規劃問題的數學模型有很多解法 比如最簡單的 圖解法 還有單純形法 Dijkstra演算法(不懂),其實 我覺得 這類問題 均可用電腦軟體來解決 如matlab(通用)、 lindo(推薦:專門解決最優化問題且軟體應用簡單易學)

⑺ Matlab問題--如何用遺傳演算法優化BP神經網路這篇文獻(中文)是如何做的

我上次發給你的程序,只要你從網上下一個matcom45就行了,直接裝在c盤就可以了,你發給我的論文變數太多用一般的遺傳演算法不行,我從網上發現了一個PID神經網路,相當好用,不用計算隱層數目,很適合用遺傳演算法進行優化,我編了一個常式回來發給你。

我真的不會用matlab的工具箱,如果一定要用matlab來做優化,恐怕我幫不了你了。

為什麼一定要用matlab,用C++自己編寫不也很好嗎?

⑻ MATLAB中RX演算法的程序~急用

function [ROUTES,PL,Tau]=ACASP(G,Tau,K,M,S,E,Alpha,Beta,Rho,Q)
%% ---------------------------------------------------------------
% ACASP.m
% 蟻群演算法動態尋路演算法
% ChengAihua,PLA Information Engineering University,ZhengZhou,China
% Email:[email protected]
% All rights reserved
%% ---------------------------------------------------------------
% 輸入參數列表
% G 地形圖為01矩陣,如果為1表示障礙物
% Tau 初始信息素矩陣(認為前面的覓食活動中有殘留的信息素)
% K 迭代次數(指螞蟻出動多少波)
% M 螞蟻個數(每一波螞蟻有多少個)
% S 起始點(最短路徑的起始點)
% E 終止點(最短路徑的目的點)
% Alpha 表徵信息素重要程度的參數
% Beta 表徵啟發式因子重要程度的參數
% Rho 信息素蒸發系數
% Q 信息素增加強度系數
%
% 輸出參數列表
% ROUTES 每一代的每一隻螞蟻的爬行路線
% PL 每一代的每一隻螞蟻的爬行路線長度
% Tau 輸出動態修正過的信息素
%% --------------------變數初始化----------------------------------
%load
D=G2D(G);
N=size(D,1);%N表示問題的規模(象素個數)
MM=size(G,1);
a=1;%小方格象素的邊長
Ex=a*(mod(E,MM)-0.5);%終止點橫坐標
if Ex==-0.5
Ex=MM-0.5;
end
Ey=a*(MM+0.5-ceil(E/MM));%終止點縱坐標
Eta=zeros(1,N);%啟發式信息,取為至目標點的直線距離的倒數
%下面構造啟發式信息矩陣
for i=1:N
if ix==-0.5
ix=MM-0.5;
end
iy=a*(MM+0.5-ceil(i/MM));
if i~=E
Eta(1,i)=1/((ix-Ex)^2+(iy-Ey)^2)^0.5;
else
Eta(1,i)=100;
end
end
ROUTES=cell(K,M);%用細胞結構存儲每一代的每一隻螞蟻的爬行路線
PL=zeros(K,M);%用矩陣存儲每一代的每一隻螞蟻的爬行路線長度
%% -----------啟動K輪螞蟻覓食活動,每輪派出M只螞蟻--------------------
for k=1:K
disp(k);
for m=1:M
%% 第一步:狀態初始化
W=S;%當前節點初始化為起始點
Path=S;%爬行路線初始化
PLkm=0;%爬行路線長度初始化
TABUkm=ones(1,N);%禁忌表初始化
TABUkm(S)=0;%已經在初始點了,因此要排除
DD=D;%鄰接矩陣初始化
%% 第二步:下一步可以前往的節點
DW=DD(W,:);
DW1=find(DW
for j=1:length(DW1)
if TABUkm(DW1(j))==0
DW(j)=inf;
end
end
LJD=find(DW
Len_LJD=length(LJD);%可選節點的個數
%% 覓食停止條件:螞蟻未遇到食物或者陷入死胡同
while W~=E&&Len_LJD>=1
%% 第三步:轉輪賭法選擇下一步怎麼走
PP=zeros(1,Len_LJD);
for i=1:Len_LJD
PP(i)=(Tau(W,LJD(i))^Alpha)*(Eta(LJD(i))^Beta);
end
PP=PP/(sum(PP));%建立概率分布
Pcum=cumsum(PP);
Select=find(Pcum>=rand);
%% 第四步:狀態更新和記錄
Path=[Path,to_visit];%路徑增加
PLkm=PLkm+DD(W,to_visit);%路徑長度增加
W=to_visit;%螞蟻移到下一個節點
for kk=1:N
if TABUkm(kk)==0
DD(W,kk)=inf;
DD(kk,W)=inf;
end
end
TABUkm(W)=0;%已訪問過的節點從禁忌表中刪除
for j=1:length(DW1)
if TABUkm(DW1(j))==0
DW(j)=inf;
end
end
LJD=find(DW
Len_LJD=length(LJD);%可選節點的個數
end
%% 第五步:記下每一代每一隻螞蟻的覓食路線和路線長度
ROUTES{k,m}=Path;
if Path(end)==E
PL(k,m)=PLkm;
else
PL(k,m)=inf;
end
end
%% 第六步:更新信息素
Delta_Tau=zeros(N,N);%更新量初始化
for m=1:M
if PL(k,m) ROUT=ROUTES{k,m};
TS=length(ROUT)-1;%跳數
PL_km=PL(k,m);
for s=1:TS
x=ROUT(s);
Delta_Tau(x,y)=Delta_Tau(x,y)+Q/PL_km;
Delta_Tau(y,x)=Delta_Tau(y,x)+Q/PL_km;
end
end
end
Tau=(1-Rho).*Tau+Delta_Tau;%信息素揮發一部分,新增加一部分
end
%% ---------------------------繪圖--------------------------------
plotif=1;%是否繪圖的控制參數
if plotif==1
%繪收斂曲線
meanPL=zeros(1,K);
minPL=zeros(1,K);
for i=1:K
PLK=PL(i,:);
Nonzero=find(PLK
PLKPLK=PLK(Nonzero);
meanPL(i)=mean(PLKPLK);
minPL(i)=min(PLKPLK);
end
figure(1)
plot(minPL);
hold on
plot(meanPL);
grid on
title('收斂曲線(平均路徑長度和最小路徑長度)');
xlabel('迭代次數');
ylabel('路徑長度');
%繪爬行圖
figure(2)
axis([0,MM,0,MM])
for i=1:MM
for j=1:MM
if G(i,j)==1
x1=j-1;y1=MM-i;
x2=j;y2=MM-i;
x3=j;y3=MM-i+1;
x4=j-1;y4=MM-i+1;
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.2,0.2,0.2]);
hold on
else
x1=j-1;y1=MM-i;
x2=j;y2=MM-i;
x3=j;y3=MM-i+1;
x4=j-1;y4=MM-i+1;
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1]);
hold on
end
end
end
hold on
ROUT=ROUTES{K,M};
LENROUT=length(ROUT);
Rx=ROUT;
Ry=ROUT;
for ii=1:LENROUT
Rx(ii)=a*(mod(ROUT(ii),MM)-0.5);
if Rx(ii)==-0.5
Rx(ii)=MM-0.5;
end
Ry(ii)=a*(MM+0.5-ceil(ROUT(ii)/MM));
end
plot(Rx,Ry)
end
plotif2=1;%繪各代螞蟻爬行圖
if plotif2==1
figure(3)
axis([0,MM,0,MM])
for i=1:MM
for j=1:MM
if G(i,j)==1
x1=j-1;y1=MM-i;
x2=j;y2=MM-i;
x3=j;y3=MM-i+1;
x4=j-1;y4=MM-i+1;
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.2,0.2,0.2]);
hold on
else
x1=j-1;y1=MM-i;
x2=j;y2=MM-i;
x3=j;y3=MM-i+1;
x4=j-1;y4=MM-i+1;
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1]);
hold on
end
end
end
for k=1:K
PLK=PL(k,:);
minPLK=min(PLK);
pos=find(PLK==minPLK);
m=pos(1);
ROUT=ROUTES{k,m};
LENROUT=length(ROUT);
Rx=ROUT;
Ry=ROUT;
for ii=1:LENROUT
Rx(ii)=a*(mod(ROUT(ii),MM)-0.5);
if Rx(ii)==-0.5
Rx(ii)=MM-0.5;
end
Ry(ii)=a*(MM+0.5-ceil(ROUT(ii)/MM));
end
plot(Rx,Ry)
hold on
end
end
將上述演算法應用於機器人路徑規劃,優化效果如下圖所示

⑼ 用MATLAB編程怎樣解決對非線性約束條件的編寫最優化演算法

試下附件中的fminsearchbnd函數,請把fminsearchbnd.m文件放在你的工作路徑中。fminsearchbnd(@(x)f(x(1),x(2),x(3)), [0;0;0], [0;0;0], [30;30;2])ans = 15.0848 20.5081 0.5452此文件下載自Fileexchange,作者:JohnD'Errico

⑽ MATLAB優化工具箱怎麼試用

首先看一個gui對遺傳演算法的應用,
求下列函數的極小值。
f(x)=x.^4-3*x.^3+x.^2-2;
利用遺傳演算法求解,選擇ga solver(求解器),輸入適應函數,輸入變數個數,start就可以了,充分反應了遺傳演算法的優越性。
接著是對無約束一維極值問題的求解。
首先是進退法搜索單谷函數的極值問題。原理就是在固定區間內按照一定步長無窮逼近最優解,不過無論怎樣逼近,最後得到的還是符合精度的區間,並不是理論最優解。Matlab中用minJT函數來實現。
相關的函數代碼可以在matlab相關文件夾中找到,這里就不多說,不過還是按這種方法求一下上面的極小值問題。
代碼如下:
syms x;
f=x^4-3*x^3+x^2-2;
[x1,x2]=minJT(f,0,0.001);
在2009b中結果是。2009b已經沒有這個函數了。
無語了一下,繼續看下一種方法,黃金分割法。
也是一種無窮逼近法,利用黃金分割長生前一個區間中的內點,捨去一個端點。逐漸逼近最小值,是一種單向收縮法。
不過2009b也沒有這個函數了。
然後是斐波那契法。
我們首先就會聯想到斐波那契數列,不過這里確實用到了斐波那契數列。
斐波那契法顯然是一種雙向收縮法具體的搜索原理就不多追究了。
然後便是牛頓迭代法,原來就學過的一種速度相當快的迭代方法,其中優化後的全局牛頓法,一般的牛頓法需要初始點接近最值點而全局牛頓法則不需要這個要求。關最後還有割線法,二次插值和三次插值法。以後會慢慢補充相關的函數m文件的。

熱點內容
javatoolsfor 發布:2024-03-29 18:17:55 瀏覽:900
linuxi2c驅動 發布:2024-03-29 18:09:56 瀏覽:671
junit源碼下載 發布:2024-03-29 18:00:10 瀏覽:525
本田雅閣壓縮機不工作 發布:2024-03-29 17:59:13 瀏覽:600
溯源碼可以偽造嗎 發布:2024-03-29 17:54:45 瀏覽:56
北京編程傳 發布:2024-03-29 17:54:44 瀏覽:436
編程畫曲線 發布:2024-03-29 17:48:59 瀏覽:60
簡單存儲服務s3 發布:2024-03-29 17:48:46 瀏覽:336
安卓手機的usb功能在哪裡設置 發布:2024-03-29 17:46:27 瀏覽:758
配置文件ini如何寫 發布:2024-03-29 17:31:05 瀏覽:997