⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 griewank.m

📁 主要分为3个函数。第一个函数为粒子群初始化函数 InitSwarm(SwarmSize......AdaptFunc)其主要作用是初始化粒子群的粒子
💻 M
字号:
% Griewank.m
% Griewank function
% described by Clerc in ...
% http://clerc.maurice.free.fr/pso/Semi-continuous_challenge/Semi-continuous_challenge.htm
%
% used to test optimization/global minimization problems 
% in Clerc's "Semi-continuous challenge"
%
% f(x) = sum((x-100).^2,2)./4000 - ...
%        prod(cos((x-100)./(sqrt(repmat([1:N],length(x(:,1),1)))),2) ...
%        +1
% 
% x = N element row vector containing [x0, x1, ..., xN]
% each row is processed independently,
% you can feed in matrices of timeXN no prob
%
% example: cost = Griewank([1,2;5,6;0,-50])
% note: known minimum =0 @ all x = 100

% Brian Birge
% Rev 1.0
% 9/12/04
function [out]=Griewank(in)
 persistent d D tlen sqrtd

% this speeds routine up a lot, if called from PSO these won't change from
% call to call
 Dx=length(in(1,:));
 tlenx=length(in(:,1));
 if isempty(D) | D~=Dx | tlen~=tlenx
   D=Dx; % dimension of prob
   tlen=tlenx; % how many separate states
   d=repmat([1:D],tlen,1); % needed to vectorize this
   sqrtd=sqrt(d);
 end

% just follows from the referenced website/paper
 term1 = sum([(in-100).^2],2)./4000;
 term2 = prod( (cos( (in-100)./sqrtd )) ,2);
 out = term1 - term2 + 1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -