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

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

?? swarm.m

?? 一系列好用的用戶友好的啟發式優化算法
?? M
?? 第 1 頁 / 共 2 頁
字號:
function [sol, fval, evals] = swarm(varargin)
%SWARM                              Particle Swarm Optimization
%
%   Usage: 
%   sol = SWARM(PROBLEM)
%   sol = SWARM(func, swarmsize, lb, ub)
%   sol = SWARM(func, swarmsize, lb, ub, 'option1', value1, ...)
%
%   [sol, fval] = SWARM(...)
%   [sol, fval, evals] = SWARM(...)
%
%   SWARM(func, popsize, lb, ub) tries to find the global minimum of the 
%   fitness-function [func], using a particle swarm optimization strategy. 
%   The number of particles is set by [swarmsize], and the boundaries for 
%   each dimension are set by the vectors [lb] and [ub], respectively. 
%
%   [sol, fval, evals] = SWARM(...) returns the trial vector found to yield the 
%   global minimum in [sol], and the corresponding function value by [fval]. 
%   The total amount of function evaluations that the algorithm performed is 
%   returned in [evals].
%
%   The function [func] must accept a vector argument of length [N], equal to 
%   the number of elements in the vectors [lb] or [ub]. Also, the function 
%   must be vectorized so that inserting a matrix of [popsize]x[N] will return 
%   a vector of size [popsize]x[1] containing the corresponding function values
%   for the [N] trial vectors.   
%
%   The default parameters used by SWARM are
%
%        eta1   = 2             social factor
%
%        eta2   = 2             cooperative factor
%
%        eta3   = 0.5           nostalgia factor
%
%        omega  = 0.5           inertial constant
%
%        numneighbors = 5       amount of neighbors for each particle
%
%        convvalue  = 150       maximum number of iterations without 
%                               improvement
%
%   These values, as well as additional options, may be given manually in 
%   any extra input variables. Additionally, SWARM may be called as 
%   SWARM(PROBLEM), where [PROBLEM] is a complete problem-structure 
%   constructed by HEURSET. Type 'help HEURSET' for more details on how to
%   use it. 
%
%   Some optimizations require repeated evaluation of a function that takes 
%   in the order of hours per evaluation. In those cases, it might be 
%   convenient to interrupt the optimization after a few days and use the 
%   results thus far obtained. Unfortunately, usually after you interrupt a 
%   function, its results are lost. For that reason, SWARM creates two 
%   global variables, [SWARM_bestind] and [SWARM_bestfval], which store 
%   the best individual and function value thus far found. When the
%   optimization is interrupted, the intermediate results from the
%   optmization are still available. Once an optimization has succesfully
%   converged, these variables are deleted from the workspace again. 
%
%   See also heurset, swarm, simanneal, diffevolve, genetic.

% Author: Rody P.S. Oldenhuis
% Delft University of Technology
% E-mail: oldenhuis@dds.nl
% Last edited: 28/Feb/2009

%%  initizalize & parse input
                                
    % initial values    
    skippop = false; 
    problem = heurset;   
    [pop, func, swarmsize, lb, ub, grace, display, maxfevals, convmethod, convvalue, ...
     eta1, eta2, eta3, omega, numneighbors] = parseprob(problem);
 
    % define temporary globals
    global SWARM_bestfval SWARM_bestind
    
    % common inputs
    if (nargin >= 4)
        func      =  varargin{1};        
        swarmsize =  varargin{2}; 
        lb        =  varargin{3};
        ub        =  varargin{4};        
    end
    
    % with additional options
    if (nargin >= 5) 
        if ~isstruct(varargin{5})
            options = heurset(varargin{5:end});
        else
            options = varargin{5};                
        end        
        [dum1, dum2, dum3, dum4, dum5, grace, display, maxfevals, convmethod, ...
         convvalue, eta1, eta2, eta3, omega, numneighbors] = parseprob(options);
    end
    
    % if called from GODLIKE
    if (nargin == 2)  
        problem = varargin{2};  
        % errortrap
        if ~isstruct(problem)
            error('PROBLEM should be a structure. Type `help heurset` for details.')
        end 
        [pop, func, swarmsize, lb, ub, grace, display, maxfevals, convmethod, ...
         convvalue, eta1, eta2, eta3, omega, numneighbors] = parseprob(problem);
        
        % make sure the options are correct        
        convmethod = 'maxiters'; 
        grace   = 0;
        display = false;
        skippop = true;
    end
    
    % if given a full problem structure
    if (nargin == 1)
        problem  = varargin{1};        
        % errortrap
        if ~isstruct(problem)
            error('PROBLEM should be a structure. Type `help heurset` for details.')
        end    
        [pop, func, swarmsize, lb, ub, grace, display, maxfevals, convmethod, convvalue,...
         eta1, eta2, eta3, omega, numneighbors] = parseprob(problem);             
    end
    
    % initialize convergence method and adaptive control parameter, setting
    % the default values if they are not given    
    if strcmpi(convmethod, 'exhaustive')
        convergence  = 1;
        maxiterinpop = convvalue;
        maxiters     = inf; 
    elseif strcmpi(convmethod, 'maxiters')
        convergence  = 2;
        maxiterinpop = inf;
        maxiters     = convvalue; 
    elseif strcmpi(convmethod, 'achieveFval')
        convergence  = 3;         
        %errortrap
        if isempty(convvalue)
            error('Please define function value to achieve.')
        end        
        maxiterinpop = inf;
        maxiters     = inf;        
    else
        convergence  = 1;
        maxiterinpop = convvalue;
    end    
    
    % problem dimensions
    dims = size(lb, 2);
    
    % errortraps
    if ( (size(lb, 2) ~= 1 || size(ub, 2) ~= 1) &&...
         (size(lb, 2) ~= dims || size(ub, 2) ~= dims) )
        error('Upper- and lower boundaries must be the same size.')
    end
    if (swarmsize < numneighbors+1)
        error('SWARM needs a population size at least equal to the number of neighbors, plus one.')
    end  

%%  initial values

    % iteration-zero values
    improvement = maxiterinpop;
    previousbestfit = inf;
    iters       = 0;   
    evals       = 0;
    firsttime   = true;
    converging1 = false;
    converging2 = false;
    
    % boundaries on hyperspace
    if (numel(lb) == 1)
        mins   = repmat(lb, swarmsize, dims);
        maxs   = repmat(ub, swarmsize, dims); 
    end
    if (numel(lb) == numel(ub) && size(lb, 2) == dims)
        mins   = repmat(lb, swarmsize, 1);
        maxs   = repmat(ub, swarmsize, 1);                        
    end  
    
    % buondaries on hypervelocities
    velUb = (maxs - mins)/2;
    velLb = (maxs - mins)/1e6;
        
    % initialize swarm    
    if (~skippop)   
        pop = repmat(ub, swarmsize, 1) - repmat(ub-lb, swarmsize, 1).* rand(swarmsize, dims);
    end        
    velocity  = repmat( abs(ub-lb)/2, swarmsize, 1) - ...
                repmat(-abs(ub-lb)/2, swarmsize, 1).* rand(swarmsize, dims);
    localbest = pop;
    prevpop   = pop;

    % initialize neighbors
    neighbors    = round( swarmsize * rand(swarmsize, numneighbors));
    selfcentered = true;
    while selfcentered
        selfs       = repmat( (1:swarmsize)', 1, numneighbors);
        selfindices = (selfs == neighbors);
        zeroindices = (neighbors == 0);
        neighbors(selfindices) = round(swarmsize*rand(sum(selfindices(:)), 1));        
        neighbors(zeroindices) = round(swarmsize*rand(sum(zeroindices(:)), 1));        
        selfindices = (selfs == neighbors);
        zeroindices = (neighbors == 0);
        if ~any(selfindices(:)) && ~any(zeroindices(:))
            selfcentered = false;
        else 
            selfcentered = true;
        end
    end
    
    % initial fitnesses are worst possible
    localbestfit = inf(swarmsize, 1);
    
    % Display strings
    overfevals1  = '\n\nCould not find better solution within given maximum';
    overfevals2  = '\nof function evaluations. Increase MaxFevals option.\n\n';
    fitbackspace = '\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b';
    converge1bck = [fitbackspace, '\b\b\b\b\b\b\b\b\b\b\b'];
    converge2bck = [fitbackspace, '\b\b\b\b\b\b\b'];
    convergestr  = ', possibly converging: ';
    itersstr     = ', iterations left: ';        
    if display      
        fprintf(1, ['\nNote that when SWARM is interrupted, the best solution and function\n',...
                    'value are saved in global variables SWARM_bestind and SWARM_bestfval.\n\n']);
        fprintf(1, 'Optimizing with ');
        switch convergence
            case 1
            	fprintf(1, 'exhaustive convergence criterion...\n');
            case 2
                fprintf(1, 'maximum iterations convergence criterion...\n');
            case 3
                fprintf(1, 'goal-attain convergence criterion...\n');
        end
        fprintf(1, 'Current best solution has cost of   ------------- ');       
    end
    
%%  Particle Swarm optimization loop

    % replication matrices
    dimsrep   = ones(1, dims);
    swarmrep  = ones(swarmsize, 1);
    neighinds = (0:swarmsize-1)';
    
    % loop while none of the convergence criteria is met
    while (improvement > 0 && iters <= maxiters)
        

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区不卡| 狠狠久久亚洲欧美| 中文字幕免费不卡在线| 久久综合五月天婷婷伊人| 日韩一区二区在线观看视频播放| 欧美日韩免费视频| 欧美巨大另类极品videosbest | 国产乱对白刺激视频不卡| 亚洲成人黄色影院| 亚洲成人黄色小说| 国产精品福利影院| 亚洲人快播电影网| 一区二区三区免费看视频| 一区二区三区色| 亚洲一线二线三线视频| 午夜av一区二区| 免费在线观看一区二区三区| 加勒比av一区二区| 国产.精品.日韩.另类.中文.在线.播放| 国产不卡免费视频| 94色蜜桃网一区二区三区| 欧美日韩一区二区三区免费看| 欧美精品在线观看一区二区| 精品欧美乱码久久久久久1区2区| xf在线a精品一区二区视频网站| 国产欧美日韩激情| 亚洲午夜久久久久久久久电影院| 午夜在线成人av| 狠狠色综合日日| 色悠久久久久综合欧美99| 在线成人高清不卡| 中文字幕成人av| 亚洲成人av福利| 国产馆精品极品| 欧美日韩一区二区在线视频| 精品日韩一区二区三区| 亚洲天堂精品视频| 日韩电影免费在线看| 高清在线成人网| 欧美精品一二三| 国产精品伦一区| 五月天丁香久久| 不卡的av电影在线观看| 91精品免费在线观看| 欧美高清一级片在线观看| 五月天一区二区三区| www.久久精品| 精品少妇一区二区三区日产乱码| 亚洲欧美偷拍另类a∨色屁股| 麻豆精品在线观看| 国产一区 二区| 91麻豆精品久久久久蜜臀| 99国产一区二区三精品乱码| 欧美日韩国产小视频在线观看| 国产亚洲欧美色| 天天做天天摸天天爽国产一区| 不卡视频在线看| 2023国产精品视频| 奇米四色…亚洲| 91福利在线观看| 成人欧美一区二区三区视频网页| 久久精品久久综合| 欧美丰满嫩嫩电影| 亚洲午夜影视影院在线观看| aaa欧美大片| 欧美激情中文不卡| 国产一区二区h| 精品国产网站在线观看| 日韩黄色免费网站| 欧美美女一区二区| 亚洲成人免费观看| 韩国女主播成人在线观看| 亚洲欧美日韩国产综合| 麻豆91在线播放免费| 欧美日韩精品专区| 亚洲第一在线综合网站| 欧美综合亚洲图片综合区| 中文字幕一区三区| 色综合久久综合网97色综合| 国产精品成人免费在线| 9i看片成人免费高清| 国产精品区一区二区三| www.久久精品| 亚洲免费在线观看视频| 在线视频国内自拍亚洲视频| 亚洲免费av观看| 欧美日韩一区二区三区四区五区| 午夜精品福利视频网站| 在线不卡一区二区| 久久成人精品无人区| 久久影院电视剧免费观看| 国产成人精品亚洲777人妖 | 久久久久久久久99精品| 国产一区二区三区在线观看精品| 久久亚洲一区二区三区四区| 国产福利一区在线| 亚洲欧美色综合| 欧美日韩精品综合在线| 久久97超碰国产精品超碰| 国产亚洲一区二区三区四区 | 国产欧美一区二区精品秋霞影院 | 一区二区三区加勒比av| 欧美视频一区二区三区四区 | 欧美自拍丝袜亚洲| 日韩欧美一二三区| 欧美精品18+| 精品99999| 91亚洲国产成人精品一区二区三| 亚洲男人的天堂在线观看| 欧美日韩成人在线| 国产在线国偷精品产拍免费yy| 国产精品国产自产拍在线| 欧美日韩在线直播| 国产一区二区导航在线播放| 亚洲精品视频一区| 日韩免费电影一区| 色综合天天在线| 久久99蜜桃精品| 一区二区三区成人| 久久久久久久一区| 91精品久久久久久久久99蜜臂| 国产一区二区电影| 日韩精品免费视频人成| 中文字幕va一区二区三区| 欧美精品 国产精品| www.亚洲精品| 青青草一区二区三区| 亚洲人午夜精品天堂一二香蕉| 久久久久久久综合| 国产成人精品aa毛片| 五月激情综合婷婷| 国产精品传媒在线| 久久日一线二线三线suv| 欧美日韩国产乱码电影| 99久久综合精品| 国产乱子轮精品视频| 日韩高清不卡一区二区三区| 亚洲欧美日韩在线不卡| 欧美激情一区二区三区不卡| 日韩亚洲欧美综合| 欧美日韩国产成人在线免费| 色婷婷亚洲综合| 99亚偷拍自图区亚洲| 国产成人av在线影院| 久草中文综合在线| 美女性感视频久久| 三级久久三级久久| 五月天久久比比资源色| 亚洲成年人网站在线观看| 悠悠色在线精品| 一区二区三区四区在线| 亚洲精品第一国产综合野| ㊣最新国产の精品bt伙计久久| 国产精品女同互慰在线看| 欧美高清在线一区二区| 国产偷国产偷亚洲高清人白洁| 精品理论电影在线观看| 日韩久久久精品| wwww国产精品欧美| 国产欧美精品一区aⅴ影院 | 亚洲国产一区二区三区青草影视| 欧美在线免费视屏| 欧美最新大片在线看| 欧美视频完全免费看| 欧美日韩视频在线第一区| 精品视频免费在线| 91麻豆精品国产91久久久久久久久 | 久久9热精品视频| 国产真实精品久久二三区| 黑人精品欧美一区二区蜜桃| 国产成人自拍网| 99视频精品在线| 欧美体内she精高潮| 正在播放亚洲一区| 久久这里只有精品视频网| 国产精品久久久一区麻豆最新章节| 国产精品高潮呻吟| 偷拍一区二区三区四区| 国产一区二区精品久久99| 99国产欧美另类久久久精品| 欧美日精品一区视频| 欧美大片在线观看| 国产精品久线在线观看| 亚洲一区在线视频| 激情综合网激情| av电影一区二区| 欧美妇女性影城| 中文字幕不卡的av| 日韩电影在线观看一区| 成人动漫中文字幕| 欧美日本视频在线| 国产目拍亚洲精品99久久精品 | 欧美亚洲愉拍一区二区| 欧美成人精品福利| 亚洲乱码一区二区三区在线观看| 婷婷综合五月天| 99精品欧美一区二区蜜桃免费| 欧美高清视频不卡网| 亚洲视频1区2区| 久久er99精品|