91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 139KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-10
  • 語言: Matlab
  • 標(biāo)簽: Powell??

資源簡介

Powell MATLAB代碼

資源截圖

代碼片段和文件信息

function?pos4?=?PowellAdvanced()
%?Powell算法,步驟詳解可參見如下名字的文件
%?“第五次模式搜索法和Powell算法.pdf”
%?以下代碼是改進的Powell算法

%?初始化兩個方向
d1.x?=?1;
d1.y?=?0;
d2.x?=?0;
d2.y?=?1;

%?初始化坐標(biāo),隨機獲取
pos1.x?=?floor(rand?*?1000);
pos1.y?=?floor(rand?*?1000);

%?輸出此初始坐標(biāo)
fprintf(‘\nOriginal?Position:‘);
fprintf(‘\npos.x?=?%d‘?pos1.x);
fprintf(‘\npos.y?=?%d‘?pos1.y);

delta?=?abs(det([d1.x?d2.x;?d1.y?d2.y]));

%?容差值
tolvalue?=?1e-20;
%?計算det時的容差
toldelta?=?1;

lamda=zeros(12);

%?無限循環(huán)
while?1
????%?一維黃金搜索,沿著d1的方向,計算lamda
????lamda(1)?=?GoldSegeOpt(pos1?d1);
????%?方向d1上的最優(yōu)點坐標(biāo)
????pos2.x?=?pos1.x?+?lamda(1)?*?d1.x;
????pos2.y?=?pos1.y?+?lamda(1)?*?d1.y;
????
????%?一維黃金搜索,沿著d2的方向,計算lamda
????lamda(2)?=?GoldSegeOpt(pos2?d2);
????pos3.x?=?pos2.x?+?lamda(2)?*?d2.x;
????pos3.y?=?pos2.y?+?lamda(2)?*?d2.y;
????
????%?兩個方向都計算后,加速搜索的方向,為dn?-?d1
????d3.x?=?pos3.x?-?pos1.x;
????d3.y?=?pos3.y?-?pos1.y;????
????
????%?沿著加速方向,再搜索一次
????templamda?=?GoldSegeOpt(pos3?d3);
????pos4.x?=?pos3.x?+?templamda?*?d3.x;
????pos4.y?=?pos3.y?+?templamda?*?d3.y;
????
????%?如果兩輪循環(huán)得到的坐標(biāo)小于容差值
????if?dist(pos4?pos1)?????????break;
????end
????
????%?將n次基本搜索得到的lamda按大到排序
????[val?ind]?=?sort(abs(lamda)?‘descend‘);
????
????%?計算新的delta,根據(jù)解決方法(3)中行列式計算公式
????sumd?=?sqrt((pos4.x?-pos1.x)^2?+(pos4.y?-pos1.y)^2);
????delta?=?val(1)?/?sumd?*?delta;
????
????%?如果計算后的det值大于它的容差值
????if?delta?>?toldelta
????????%?給d3歸一化
????????sumd?=?sqrt(d3.x^2?+?d3.y^2);
????????d3.x?=?d3.x?./?sumd;
????????d3.y?=?d3.y?./?sumd;
????????
????????%?更新方向
????????if?1?==?ind(1)
????????????d1?=?d3;
????????else
????????????d2?=?d3;
????????end
????end
????
????%?更新初始坐標(biāo),進行下一輪循環(huán)
????pos1?=?pos4;
end
end

%%?子函數(shù)
%?****************************************************
%?黃金分割法搜索到最優(yōu)的lamda
function?lamda?=?GoldSegeOpt(pos?dir)
%?此方法計算pos坐標(biāo)在dir方向上的最優(yōu)坐標(biāo)
%?
%?最優(yōu)點可以認(rèn)為是:
%?????best.x?=?pos.x?+?lamda?*?dir.x
%?????best.y?=?pos.y?+?lamda?*?dir.y
%?此函數(shù)輸出的是最優(yōu)點所對應(yīng)的lamda

%?進退法確定lamda的區(qū)間
[a?b]?=?JinTui(pos?dir);

%?黃金值
g?=?0.382;

%?第一次迭代的中間值
c?=?a?+?g?*?(b?-?a);
d?=?b?-?g?*?(b?-?a);

%?容差值
tol?=?1e-6;

%?計算中間值對應(yīng)的目標(biāo)函數(shù)值
fc?=?target(pos.x?+?c?*?dir.x?pos.y?+?c?*?dir.y);
fd?=?target(pos.x?+?d?*?dir.x?pos.y?+?d?*?dir.y);

while?1
????%?如果lamda左右邊界距離小于容差值,退出循環(huán)
????if?(b?-?a)?????????lamda?=?(a?+?b)/2;
????????break;
????end
????%?按黃金分割法更新
????if?fc?????????b?=?d;
????????fd?=?fc;
????????d?=?c;
????????c?=?a?+?g?*?(b?-?a);
????????fc?=?target(pos.x?+?c?*?dir.x?pos.y?+c?*dir.y);
????else
????????a?=?c;
????????fc?=?fd;
????????c?=?d;
????????d?=?b?-?g?*?(b?-?a);
????????fd?=?target(pos.x?+?d?*?dir.x?pos.y?+d?*dir.y);
????end
end
end
%?****************************************************
%?進退法確定lamda的大致區(qū)間
function?[a?b]?=?JinTui(pos?dir)
%?進退法確定lamda的大致區(qū)間

l1?=?rand;

%?此處不要設(shè)置太小,否則計算時間太長
h?=?1;

f1?=?target(pos.x?pos.y);
k?=?0;
%?****************************************************
%?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-06-23?20:03??Powell\
?????文件????????4418??2014-07-10?10:35??Powell\PowellAdvanced.m
?????文件????????3727??2014-07-10?09:12??Powell\PowellBasic.m
?????文件??????189122??2014-07-09?21:01??Powell\Powell算法.pdf

評論

共有 條評論