亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pso.m

?? 新的微粒群算法 利用matlab實現 簡單
?? M
字號:
function [X,FVAL,EXITFLAG,OUTPUT] = PSO(FUN,X0,LB,UB,OPTIONS,varargin)%PSO finds a minimum of a function of several variables using the particle swarm % optimization (PSO) algorithm originally introduced in 1995 by Kennedy and % Eberhart. This algorithm was extended by Shi and Eberhart in 1998 through the% introduction of inertia factors to dampen the velocities of the particles.% In 2002, Clerc and Kennedy introduced a constriction factor in PSO, which was% later on shown to be superior to the inertia factors. Therefore, the algorithm% using a constriction factor was implemented here.%%   PSO attempts to solve problems of the form:%       min F(X) subject to: LB <= X <= UB%        X%%   X=PSO(FUN,X0) start at X0 and finds a minimum X to the function FUN. %   FUN accepts input X and returns a scalar function value F evaluated at X.%   X0 may be a scalar, vector, or matrix.%   %   X=PSO(FUN,X0,LB,UB) defines a set of lower and upper bounds on the %   design variables, X, so that a solution is found in the range %   LB <= X <= UB. Use empty matrices for LB and UB if no bounds exist. %   Set LB(i) = -Inf if X(i) is unbounded below; set UB(i) = Inf if X(i) is %   unbounded above.%   %   X=PSO(FUN,X0,LB,UB,OPTIONS) minimizes with the default optimization%   parameters replaced by values in the structure OPTIONS, an argument %   created with the PSOSET function. See PSOSET for details. %   Used options are SWARM_SIZE, COGNITIVE_ACC, SOCIAL_ACC, MAX_ITER,%   MAX_TIME, MAX_FUN_EVALS, TOLX, TOLFUN, DISPLAY and OUTPUT_FCN.%   Use OPTIONS = [] as a place holder if no options are set.%   %   X=PSO(FUN,X0,LB,UB,OPTIONS,varargin) is used to supply a variable %   number of input arguments to the objective function FUN.%   %   [X,FVAL]=PSO(FUN,X0,...) returns the value of the objective %   function FUN at the solution X.%   %   [X,FVAL,EXITFLAG]=PSO(FUN,X0,...) returns an EXITFLAG that describes the %   exit condition of PSO. Possible values of EXITFLAG and the corresponding %   exit conditions are:%   %     1  Change in the objective function value less than the specified tolerance.%     2  Change in X less than the specified tolerance.%     0  Maximum number of function evaluations or iterations reached.%    -1  Maximum time exceeded.%   %   [X,FVAL,EXITFLAG,OUTPUT]=PSO(FUN,X0,...) returns a structure OUTPUT with %   the number of iterations taken in OUTPUT.nITERATIONS, the number of function%   evaluations in OUTPUT.nFUN_EVALS, the coordinates of the different particles in %   the swarm in OUTPUT.SWARM, the corresponding fitness values in OUTPUT.FITNESS, %   the particle's best position and its corresponding fitness in OUTPUT.PBEST and%   OUTPUT.PBEST_FITNESS, the best position ever achieved by the swarm in %   OUTPUT.GBEST and its corresponding fitness in OUTPUT.GBEST_FITNESS, the amount%   of time needed in OUTPUT.TIME and the options used in OUTPUT.OPTIONS.% %   See also PSOSET, PSOGET% Copyright (C) 2006 Brecht Donckels, BIOMATH, brecht.donckels@ugent.be% % This program is free software; you can redistribute it and/or% modify it under the terms of the GNU General Public License% as published by the Free Software Foundation; either version 2% of the License, or (at your option) any later version.% % This program is distributed in the hope that it will be useful,% but WITHOUT ANY WARRANTY; without even the implied warranty of% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the% GNU General Public License for more details. % % You should have received a copy of the GNU General Public License% along with this program; if not, write to the Free Software% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,% USA.% handle variable input argumentsif nargin < 5,    OPTIONS = [];    if nargin < 4,        UB = 1e5;        if nargin < 3,            LB = -1e5;        end    endend% check input argumentsif ~ischar(FUN),    error('''FUN'' incorrectly specified in ''PSO''');endif ~isfloat(X0),    error('''X0'' incorrectly specified in ''PSO''');endif ~isfloat(LB),    error('''LB'' incorrectly specified in ''PSO''');endif ~isfloat(UB),    error('''UB'' incorrectly specified in ''PSO''');endif length(X0) ~= length(LB),    error('''LB'' and ''X0'' have incompatible dimensions in ''PSO''');endif length(X0) ~= length(UB),    error('''UB'' and ''X0'' have incompatible dimensions in ''PSO''');end% declaration of global variablesglobal NDIM nFUN_EVALS% set EXITFLAG to default valueEXITFLAG = -2;% determine number of variables to be optimizedNDIM = length(X0);% seed the random number generatorrand('state',sum(100*clock));% set default optionsDEFAULT_OPTIONS = PSOSET('SWARM_SIZE',25,... % number of particles in swarm for each variable to be optimized             'COGNITIVE_ACC',2.8,...         % cognitive acceleration coefficient (value as recommended in Schutte and Groenwold, 2006)             'SOCIAL_ACC',1.3,...            % social acceleration coefficient (value as recommended in Schutte and Groenwold, 2006)             'MAX_ITER',2500,...             % maximum number of iterations             'MAX_TIME',2500,...             % maximum duration of optimization             'MAX_FUN_EVALS',2500,...        % maximum number of function evaluations             'TOLX',1e-6,...                 % maximum difference between best and worst function evaluation in simplex             'TOLFUN',1e-3,...               % maximum difference between the coordinates of the vertices             'DISPLAY','none',...            % 'iter' or 'none' indicating whether user wants feedback             'OUTPUT_FCN',[]);               % string with output function name% update default options with supplied optionsOPTIONS = PSOSET(DEFAULT_OPTIONS,OPTIONS);% store OPTIONS in OUTPUTOUTPUT.OPTIONS = OPTIONS;% initialize swarm (each row of swarm corresponds to one particle)SWARM = zeros(OPTIONS.SWARM_SIZE,NDIM,OPTIONS.MAX_ITER);for i = 1:OPTIONS.SWARM_SIZE,    if i == 1,        SWARM(1,:,1) = X0(:)';    else        SWARM(i,:,1) = LB(:)' + rand(1,NDIM).*(UB(:)'-LB(:)');    endend% initialize VELOCITIESVELOCITIES = zeros(OPTIONS.SWARM_SIZE,NDIM,OPTIONS.MAX_ITER);% initialize FITNESS, PBEST_FITNESS, GBEST_FITNESS, INDEX_PBEST, index_gbest_particle and INDEX_GBEST_ITERATIONFITNESS = nan(OPTIONS.SWARM_SIZE,OPTIONS.MAX_ITER);PBEST = nan(OPTIONS.SWARM_SIZE,NDIM,OPTIONS.MAX_ITER);GBEST = nan(OPTIONS.MAX_ITER,NDIM);PBEST_FITNESS = nan(OPTIONS.SWARM_SIZE,OPTIONS.MAX_ITER);GBEST_FITNESS = nan(OPTIONS.SWARM_SIZE,1);INDEX_PBEST = nan(OPTIONS.SWARM_SIZE,OPTIONS.MAX_ITER);INDEX_GBEST_PARTICLE = nan(OPTIONS.MAX_ITER,1);INDEX_GBEST_ITERATION = nan(OPTIONS.MAX_ITER,1);% calculate constriction factor from acceleration coefficientsif OPTIONS.COGNITIVE_ACC+OPTIONS.SOCIAL_ACC <= 4,    % display message    disp('Sum of Cognitive Acceleration Coefficient and Social Acceleration Coefficient is less then or equal to 4.')    disp('Their values were adjusted automatically to satisfy this condition.');    disp(' ')    % the values are adjusted so that the sum is equal to 4.1, keeping the ratio COGNITIVE_ACC/SOCIAL_ACC constant    OPTIONS.COGNITIVE_ACC = OPTIONS.COGNITIVE_ACC*4.1/(OPTIONS.COGNITIVE_ACC+OPTIONS.SOCIAL_ACC);    OPTIONS.SOCIAL_ACC = OPTIONS.SOCIAL_ACC*4.1/(OPTIONS.COGNITIVE_ACC+OPTIONS.SOCIAL_ACC);    % calculate constriction factor    k = 1; % k can take values between 0 and 1, but is usually set to one (Montes de Oca et al., 2006)    OPTIONS.ConstrictionFactor = 2*k/(abs(2-(OPTIONS.COGNITIVE_ACC+OPTIONS.SOCIAL_ACC)-sqrt((OPTIONS.COGNITIVE_ACC+OPTIONS.SOCIAL_ACC)^2-4*(OPTIONS.COGNITIVE_ACC+OPTIONS.SOCIAL_ACC))));else    % calculate constriction factor    k = 1; % k can take values between 0 and 1, but is usually set to one (Montes de Oca et al., 2006)    OPTIONS.ConstrictionFactor = 2*k/(abs(2-(OPTIONS.COGNITIVE_ACC+OPTIONS.SOCIAL_ACC)-sqrt((OPTIONS.COGNITIVE_ACC+OPTIONS.SOCIAL_ACC)^2-4*(OPTIONS.COGNITIVE_ACC+OPTIONS.SOCIAL_ACC))));end% initialize countersnITERATIONS = 0;nFUN_EVALS = 0;% initialize timertic% for each iteration....for i = 1:OPTIONS.MAX_ITER,        % if a termination criterium was met, the value of EXITFLAG should have changed    % from its default value of -2 to -1, 0, 1 or 2        if EXITFLAG ~= -2,        break    end        % calculate FITNESS values for all particles in SWARM     % (each row of FITNESS corresponds to the FITNESS value of one particle)    % (each column of FITNESS corresponds to the FITNESS values of the particles in one iteration)        for j = 1:OPTIONS.SWARM_SIZE,        FITNESS(j,i) = CALCULATE_COST(FUN,SWARM(j,:,i),LB,UB,varargin{:});    end        % identify particle's location at which the best FITNESS has been achieved (PBEST)        for j = 1:OPTIONS.SWARM_SIZE,        [PBEST_FITNESS(j,i),INDEX_PBEST(j,i)] = min(FITNESS(j,:));        PBEST(j,:,i) = SWARM(j,:,INDEX_PBEST(j,i));    end        % identify the particle from the SWARM at which the best FITNESS has been achieved so far (GBEST)            [GBEST_FITNESS(i),index_gbest] = min(reshape(FITNESS,numel(FITNESS),1));    [INDEX_GBEST_PARTICLE(i),INDEX_GBEST_ITERATION(i)] = ind2sub(size(FITNESS),index_gbest);    GBEST(i,:) = SWARM(INDEX_GBEST_PARTICLE(i),:,INDEX_GBEST_ITERATION(i));            % update the VELOCITIES        VELOCITIES(:,:,i+1) = OPTIONS.ConstrictionFactor.*(VELOCITIES(:,:,i) + OPTIONS.COGNITIVE_ACC.*rand(OPTIONS.SWARM_SIZE,NDIM).*(PBEST(:,:,i)-SWARM(:,:,i)) + OPTIONS.SOCIAL_ACC.*rand(OPTIONS.SWARM_SIZE,NDIM).*(repmat(GBEST(i,:),[OPTIONS.SWARM_SIZE 1 1],1)-SWARM(:,:,i)));        % update particle positions        SWARM(:,:,i+1) = SWARM(:,:,i)+VELOCITIES(:,:,i+1);        % to make sure that particles stay within specified bounds...    %   (suppose that the particle's new position is outside the boundaries,    %    then the particle's position is adjusted by assuming that the boundary    %    acts like a wall or mirror) (selfmade solution)        for j = 1:OPTIONS.SWARM_SIZE,        for k = 1:NDIM,            % check upper boundary            if length(UB) == 1,                if SWARM(j,k,i+1) > UB,                    SWARM(j,k,i+1) = UB-rand*(SWARM(j,k,i+1)-UB);                    VELOCITIES(j,k,i+1) = SWARM(j,k,i+1)-SWARM(j,k,i);                end            else                if SWARM(j,k,i+1) > UB(k),                    SWARM(j,k,i+1) = UB(k)-rand*(SWARM(j,k,i+1)-UB(k));                    VELOCITIES(j,k,i+1) = SWARM(j,k,i+1)-SWARM(j,k,i);                end            end            % check lower boundary            if length(UB) == 1,                if SWARM(j,k,i+1) < LB,                    SWARM(j,k,i+1) = LB+rand*(LB-SWARM(j,k,i+1));                    VELOCITIES(j,k,i+1) = SWARM(j,k,i+1)-SWARM(j,k,i);                end            else                if SWARM(j,k,i+1) < LB(k),                    SWARM(j,k,i+1) = LB(k)+rand*(LB(k)-SWARM(j,k,i+1));                    VELOCITIES(j,k,i+1) = SWARM(j,k,i+1)-SWARM(j,k,i);                end            end        end    end                % update counters        nITERATIONS = nITERATIONS+1;        % give user feedback on screen if requested        if strcmp(OPTIONS.DISPLAY,'iter'),        if nITERATIONS == 1,            disp(' Nr Iter  Nr Fun Eval    Current best function    Current worst function       Best function');            disp(sprintf(' %5.0f     %5.0f             %12.6g              %12.6g           %15.6g',nITERATIONS,nFUN_EVALS,min(FITNESS(:,i)),max(FITNESS(:,i)),GBEST_FITNESS(i)));        else            disp(sprintf(' %5.0f     %5.0f             %12.6g              %12.6g           %15.6g',nITERATIONS,nFUN_EVALS,min(FITNESS(:,i)),max(FITNESS(:,i)),GBEST_FITNESS(i)));        end    end        % end the optimization if one of the stopping criteria is met    %% 1. difference between best and worst function evaluation in simplex is smaller than TOLFUN     %% 2. maximum difference between the coordinates of the vertices in simplex is less than TOLX    %% 3. no convergence,but maximum number of iterations has been reached    %% 4. no convergence,but maximum time has been reached        if abs(max(FITNESS(:,i))-min(FITNESS(:,i))) < OPTIONS.TOLFUN,        if strcmp(OPTIONS.DISPLAY,'iter'),            disp('Change in the objective function value less than the specified tolerance (TOLFUN).')        end        EXITFLAG = 1;        break;    end        if max(max(abs(diff(SWARM(:,:,i),1,1)))) < OPTIONS.TOLX,        if strcmp(OPTIONS.DISPLAY,'iter'),            disp('Change in X less than the specified tolerance (TOLX).')        end        EXITFLAG = 2;        break;    end        if (i >= OPTIONS.MAX_ITER*NDIM) || (i*OPTIONS.SWARM_SIZE >= OPTIONS.MAX_FUN_EVALS*NDIM*(NDIM+1)),        if strcmp(OPTIONS.DISPLAY,'iter'),            disp('Maximum number of function evaluations or iterations reached.');        end        EXITFLAG = 0;        break;    end        if toc/60 > OPTIONS.MAX_TIME,        if strcmp(OPTIONS.DISPLAY,'iter'),            disp('Exceeded maximum time.');        end        EXITFLAG = -1;        break;    endend% return solutionX = GBEST(i,:);FVAL = GBEST_FITNESS(i);% store number of function evaluationsOUTPUT.nFUN_EVALS = nFUN_EVALS;% store number of iterationsOUTPUT.nITERATIONS = nITERATIONS;% trim OUTPUT data structureOUTPUT.SWARM = SWARM(:,:,1:nITERATIONS);OUTPUT.PBEST = PBEST(:,:,1:nITERATIONS);OUTPUT.GBEST = GBEST(1:nITERATIONS,:);OUTPUT.FITNESS = FITNESS(:,1:nITERATIONS);OUTPUT.PBEST_FITNESS = PBEST_FITNESS(:,1:nITERATIONS);OUTPUT.GBEST_FITNESS = GBEST_FITNESS(1:nITERATIONS,1);% store the amount of time needed in OUTPUT data structureOUTPUT.TIME = toc;return% ==============================================================================% COST FUNCTION EVALUATION% ------------------------function [YTRY] = CALCULATE_COST(FUN,PTRY,LB,UB,varargin)global NDIM nFUN_EVALS% add one to number of function evaluationsnFUN_EVALS = nFUN_EVALS + 1;for i = 1:NDIM,    % check lower bounds    if PTRY(i) < LB(i),        YTRY = 1e12+(LB(i)-PTRY(i))*1e6;        return    end    % check upper bounds    if PTRY(i) > UB(i),        YTRY = 1e12+(PTRY(i)-UB(i))*1e6;        return    endend% calculate cost associated with PTRYYTRY = feval(FUN,PTRY,varargin{:});return

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区伦理片| 欧美午夜片在线看| 91久久国产最好的精华液| 91麻豆精品国产91久久久久久| 欧美大尺度电影在线| 亚洲欧洲精品成人久久奇米网| 午夜精品久久久久久久| 精品在线免费视频| 精品视频在线视频| 国产精品日韩精品欧美在线 | 久久影音资源网| 一区二区三区产品免费精品久久75| 久久99久久久欧美国产| 欧美午夜一区二区三区免费大片| 国产亚洲欧美中文| 看片的网站亚洲| 色欧美片视频在线观看| 中国色在线观看另类| 精品制服美女丁香| 日韩欧美中文字幕一区| 天天操天天干天天综合网| 波多野结衣的一区二区三区| 精品日韩99亚洲| 日韩二区三区四区| 欧美日韩在线三级| 夜夜操天天操亚洲| 色香蕉久久蜜桃| 亚洲欧美日韩国产综合| 94色蜜桃网一区二区三区| 久久久不卡网国产精品二区| 日本亚洲一区二区| 日韩一区二区三区免费观看| 天天综合色天天综合| 色婷婷av一区二区| 亚洲自拍偷拍图区| 欧美色视频在线| 亚洲国产精品一区二区久久| 欧美三日本三级三级在线播放| 亚洲精品你懂的| 色吧成人激情小说| 亚洲福利电影网| 制服.丝袜.亚洲.中文.综合| 五月天精品一区二区三区| 欧美欧美欧美欧美首页| 日韩av一区二| 精品久久久久久亚洲综合网| 国产真实乱对白精彩久久| 26uuu亚洲综合色| 国产成人aaa| 中文字幕一区二区三区不卡 | 久久精品国产精品亚洲综合| 欧美一级片在线| 国产一区二区伦理| 综合激情成人伊人| 欧美日韩一区二区三区在线| 日韩电影免费在线观看网站| 日韩欧美一区二区不卡| 韩国三级电影一区二区| 中文字幕亚洲欧美在线不卡| 在线观看视频一区二区欧美日韩| 亚洲综合精品自拍| 日韩欧美成人一区| 91丨porny丨在线| 亚洲国产美女搞黄色| 精品国产一二三区| av在线播放成人| 视频一区国产视频| 国产无遮挡一区二区三区毛片日本| av网站免费线看精品| 日韩在线观看一区二区| 国产日产欧产精品推荐色| 91色.com| 精品一区二区久久久| 中文字幕一区二区在线播放| 欧美一区二区三区小说| 成人精品电影在线观看| 日韩精品免费专区| 中文字幕制服丝袜成人av | 欧美不卡一区二区| 91免费看`日韩一区二区| 日本成人中文字幕| 亚洲国产成人在线| 91精品国产综合久久精品图片| 高清在线不卡av| 日韩av高清在线观看| 国产精品久久久一区麻豆最新章节| 精品视频123区在线观看| 国产成人免费av在线| 亚洲第一二三四区| 国产精品乱人伦中文| 日韩欧美国产系列| 欧美三级三级三级| av亚洲精华国产精华精华| 久久电影网电视剧免费观看| 亚洲一区免费在线观看| 欧美激情综合五月色丁香小说| 7777精品伊人久久久大香线蕉| av在线综合网| 国产激情一区二区三区| 麻豆精品视频在线观看视频| 亚洲综合视频在线观看| 国产精品成人一区二区艾草 | 欧美三区免费完整视频在线观看| 成人网页在线观看| 国产在线播放一区| 日韩精品每日更新| 午夜精品福利久久久| 一区二区日韩电影| 国产精品视频九色porn| 久久久久久一二三区| 精品欧美久久久| 日韩欧美一区电影| 欧美tk—视频vk| 欧美一级在线视频| 欧美一区二区久久| 91精品国产综合久久精品| 8v天堂国产在线一区二区| 欧美男生操女生| 欧美精品国产精品| 制服视频三区第一页精品| 69堂国产成人免费视频| 欧美一级欧美一级在线播放| 日韩精品最新网址| 日韩精品一区二区三区在线| 日韩欧美一区二区免费| 精品国产区一区| www欧美成人18+| 国产婷婷色一区二区三区四区 | 国产精品免费丝袜| 国产精品久久久久一区二区三区共| 国产香蕉久久精品综合网| 中文字幕av一区二区三区| 国产精品人成在线观看免费| 亚洲人成网站影音先锋播放| 亚洲综合久久久| 免费在线视频一区| 国产在线国偷精品免费看| 成人免费毛片片v| 99久久免费精品高清特色大片| 99久久精品国产一区| 91国偷自产一区二区开放时间| 欧美伊人久久久久久久久影院| 欧美日韩在线电影| 精品国内片67194| 欧美韩日一区二区三区四区| 亚洲天堂av一区| 亚洲国产一二三| 韩国视频一区二区| 91在线国产福利| 日韩免费高清av| 亚洲欧洲av在线| 日产国产高清一区二区三区| 国产激情视频一区二区在线观看| 色呦呦日韩精品| 久久午夜色播影院免费高清| 国产精品成人在线观看| 日韩av一区二区在线影视| 成人综合在线网站| 欧美精品电影在线播放| 国产欧美一区二区精品性色超碰| 亚洲另类春色国产| 美女任你摸久久| 一本色道久久综合精品竹菊| 日韩欧美在线综合网| 亚洲美女少妇撒尿| 精品影视av免费| 欧美在线综合视频| 国产日韩欧美不卡在线| 日韩专区欧美专区| 97se狠狠狠综合亚洲狠狠| 日韩三级视频中文字幕| 亚洲免费资源在线播放| 国产一区二区日韩精品| 欧美片在线播放| 亚洲三级免费观看| 国产精品亚洲第一| 欧美一区二区女人| 亚洲va国产va欧美va观看| 成人免费黄色大片| 精品国一区二区三区| 天堂va蜜桃一区二区三区漫画版| 成人性生交大片免费看中文网站| 5858s免费视频成人| 亚洲最大色网站| av电影天堂一区二区在线| 精品国产第一区二区三区观看体验 | 韩日欧美一区二区三区| 欧美二区三区91| 亚洲午夜在线视频| 色狠狠色狠狠综合| 亚洲精品videosex极品| gogogo免费视频观看亚洲一| 国产色综合一区| 国产一区二区看久久| 精品蜜桃在线看| 九色|91porny| 久久婷婷色综合| 国产一区二区毛片| 国产亚洲婷婷免费| 成人免费看视频|