我有一個函數J(x,y,z),它給出了這些座標的結果。這個函數是凸的。我需要的是找到這個巨大矩陣的最小值。 起初,我試圖循環所有的人,計算然後搜索最小功能,但這需要太長時間...通過使用小矩陣在一個巨大的凸矩陣中的全局最小值
所以我決定利用凸性。
取一個隨機的(現在)一組座標,這將是我的小3x3x3矩陣的中心,找到局部最小值並使其成爲下一個矩陣的中心。這將持續到我們達到全球最低水平。
的另一個問題是,該功能不完全凸的,所以這個問題可能會出現以及
所以我想控制措施,當它發現一個假最低,增加搜索範圍來確保它。 你會如何建議我一起去?這種方法好嗎?還是我應該看看別的東西?
這是我自己開始的事情,但我對Matlab很新,我不確定如何繼續。
clear all
clc
min=100;
%the initial size of the search matrix 2*level +1
level=1;
i=input('Enter the starting coordinate for i (X) : ');
j=input('Enter the starting coordinate for j (Y) : ');
k=input('Enter the starting coordinate for k (Z) : ');
for m=i-level:i+level
for n=j-level:j+level
for p=k-level:k+level
A(m,n,p)=J(m,n,p);
if A(m,n,p)<min
min=A(m,n,p);
end
end
end
end
display(min, 'Minim');
[r,c,d] = ind2sub(size(A),find(A ==min));
display(r,'X');
display(c,'Y');
display(d,'Z');
任何指導,改進和建設性的批評表示讚賞。提前致謝。
您是否嘗試過使用MATLAB的優化工具箱來查找最低... fminunc或fmincon?你有沒有嘗試其他算法,如梯度下降,共軛梯度?你能在這裏做什麼和不能做什麼?小提示:您提供的第一張圖片來自Andrew Ng的Coursera機器學習課程。 – rayryeng
我非常確定您的意思是「當地最低」的「假全球最低」。 –
[Finding global extrema](https://en.wikipedia。org/wiki/Global_optimization)是一個包含數學和計算機科學全部領域的問題。因此,這個網站可能太廣泛了。雖然鏈接的文章提供了一些好的地方。 – MooseBoys