シミュレーテッドアニーリングアルゴリズムの実装コード

シミュレーテッドアニーリングアルゴリズム:以下を達成するために、メインプログラム:

特定のアルゴリズムの機能では、こちらをクリックしてくださいhttps://s.wcd.im/v/43dvdZ36/

%main.m文件
をすべて閉じ;
すべてクリア;

= zuobiao [0.37 0.75 0.45 0.76 0.71 0.07 0.42 0.59 0.32 0.67 0.62 0.67 0.6 0.3 0.20 ...
0.35 0.27 0.94 0.82 0.37 0.61 0.42 0.6 0.39 0.53 0.4 0.63 0.5 0.98 0.68;
0.91 0.87 0.85 0.75 0.72 0.74 0.71 0.69 0.64 0.64 0.59 0.59 0.55 0.5 ... 0.55
0.45 0.43 0.42 0.38 0.27 0.26 0.25 0.23 0.19 0.19 0.13 0.08 0.04 0.02 0.85]
プロット(zuobiao(1、:)、zuobiao(2、:)、 'Gの*')、ON HOLD
(プロットzuobiao(1 、:)、zuobiao(2、:))
長さ= MAX(サイズ(zuobiao));
%初期要求から..

%zhixu = randperm(長さ)、経由地を通って発生%ランダム配列
の%temp = zuobiao(1 、:);
のnewzuobiao(1、:) = TEMP(zhixu);
%のzuobiaoのTEMP =(2、:);
のnewzuobiao(2、:) = TEMP(zhixu);
%のnewzuobiao;
%F =ジュリ(newzuobiao) ;
F =ジュリ(zuobiao)。
面積%定義--------------------------------------パラメータ
10000の%初期温度
TMAX = 100 ;
0.001からTminの=;
温度の%速度が低下
= 0.95ダウン;

%関数アニーリングアルゴリズム..

TがTMAXを=、
一方T> Tminの
1 = N:5000
newzuobiao = newpathが(zuobiao、長さ)である。
Newf =ジュリ(newzuobiao) ;
IF Newf <F
zuobiao = newzuobiao;
F = Newf;
ELSEIF RAND <EXP( - (Newf-F)/ T)
zuobiao = newzuobiao;
F = Newf、
エンド
エンド
huatu = [zuobiao、zuobiao(:、1)]。
プロット(huatu(1、:)、huatu(2、:));待っ
。(huatu(1、:)、huatu(2、:)、 'RO')プロット、テキスト(0.1,0.1、[「合計距離ホールドオフ;、num2strは(F)])である
;)PAUSE(0.00001を
T = T *ダウン;
F;
終わり

%のnewpath.mファイル(2点の座標のランダム交換)
%= newpathがzuobiao関数である(zuobiao、長さ)
%% 2点のランダム交換座標が..
%のA = CEIL(RAND(1,2)*長さ) ;
%銭は、(1)=;
%HOU(2)=;
のTEMP = zuobiao(:、銭);
%のzuobiao(:、銭)= zuobiao(:、HOU);
%のzuobiao(:、HOU)= TEMP;

のjuli.mファイル(総距離は、円で囲まれたいくつかの方法を旅)
%=ジュリ鹿城関数(zuobiao)
の長さ= MAX(サイズ(zuobiao));
%S = 0、
I = 2% :長
%S = S + SQRT(SUM((zuobiao(:、I)-zuobiao(:、1-I))^ 2));
%エンド
%〜長= 2 IF
%S + S = SQRT(SUM ((zuobiao(:、1)-zuobiao(:、長さ))^ 2));
%終了
%鹿城= S。

おすすめ

転載: www.cnblogs.com/weimingai/p/10980037.html