function [options, names] = GPSOoption(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15)
%MPOPTION 用于设定和接受PSO算法的各个项目
%
% opt = GPSOoption
% 返回默认参数数组,具体值见下面。
%
% opt = GPSOoption(name1, value1, name2, value2, ...)
% 返回默认参数数组,其中指定的项用输入参数确定,最多只可以改7个项目。
% name#是项目的名称,value#是新赋的值
% 例如:opt = GPSOoption('DELTA', 1e-4, 'CG_END', 1.6)
%
% opt = GPSOoption(opt, name1, value1, name2, value2, ...)
% 与前者相同,但是用输入的options代替默认的options
%
%
% 目前定义的各项目含义如下:
%
% 编号——名称——默认值 描述 [options]
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% %% 总体控制参数
% 001——GROUP,3 agent分组
% 002——SUB_SWARM,10 分组内agent的数量
% 003——ITERATION, 2000 迭代次数
% 004——NEIGHBOR_STRUCT,0 临预结构
% [ 0 - 环状结构 ]
% [ 1 - 网状结构 ]
% 005——NEIGHBOR,1 左右两边邻居数量
% 006——ERROR,0 迭代允许的误差,在误差范围内终止,为0的时候不考虑这个终止条件
% 007——OPTIMUM,NaN 目标函数值
% 008——NEIGHBOR_PF,0.45
% 009——PBEST_PF,0.45
% 010——PB_GB,0 个体最优和全局最优重复时的位置更新策略
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% %% 加速度和步长控制
% 011——W_UPDATE,0 惯性权重更新算法
% [ 0 - 不变W ]
% [ 1 - 线性变W: W=W_BEGIN-(W_BEGIN-W_END)*n/N ); ]
% [ 2 - 随机变W: W=rand*(W_BEGIN-W_END)+W_END ; ]
% [ 3 - 自适应W, GBV/PV ]
% [ 4 - 分组比较 ]
% 012——W_BEGIN,0.9 惯性系数的起始值
% 013——W_END,0.4 惯性系数的终止值
% 014——CG_UPDATE,0 全局步长更新算法
% [ 0 - 不变 ]
% [ 1 - 线性变CG: CG=CG_BEGIN-(CG_BEGIN-CG_END)*n/N ); ]
% [ 2 - 随机变CG: CG=rand*(CG_BEGIN-CG_END)+CG_END ; ]
% [ 3 - GB/PV ]
% 015——CG_BEGIN,0.5 全局步长起始值
% 016——CG_END, 2.5 全局步长终止值
% 017——CP_UPDATE,0 个体步长更新算法
% [ 0 - 不变 ]
% [ 1 - 线性变CP: CP=CP_BEGIN-(CP_BEGIN-CP_END)*n/N ); ]
% [ 2 - 随机变CP: CP=rand*(CP_BEGIN-CG_END)+CP_END ; ]
% [ 3 - GB/PV ]
% 018——CP_BEGIN,2.5 个体步长起始值
% 019——CP_END, 0.5 个体步长终止值
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% %% 速度约束条件参数
% 020——VELO_BOUND_FIX,1.0 固定速度约束时的倍数
% 021——VELO_TIMES,10 如果速度不在约束条件以内重新计算的最大次数
% 022——VELO_CONDITION,0 速度变化方式
% [ 0 - 用MAX/MIN限制 ]
% 023——VELO_CON_MAKE 固定速度约束条件的策略
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 位置变异相关参数
% 领域竞争算子
% 024——NEIGH_COMPETE,1 采用领域竞争算子概率
% 025——OPT_MUTATION,0.2 2-opt的概率
% 026——COMPETE_BAK1,0 领域竞争备用参数
% 027——COMPETE_BAK2,0 领域竞争备用参数
% 028——CROSSOVER,0 领域竞争备用参数
% 高斯变异算子
% 029——GAUSSIAN,0.1 采用高斯变异的概率
% 030——GAUSS_LAMDA,0 高斯变异的幅度
% [ 0 - 0.000001 ]
% [ 1 - 1/generation.step ]
% 031——GAUSSIAN_BAK1,0 高斯变异备用参数
% 032——GAUSSIAN_BAK2,0 高斯变异备用参数
% 033——GAUSSIAN_BAK3,0 高斯变异备用参数
% 正交算子
% 034——ORTHOGONAL,0.1 正交算子概率
% 035——ORTHOGONAL_Q2,3 Q2
% 036——ORTHOGONAL_F,4 因素个数
% 037——ORTHOGONAL_M2,9 M2
% 038——ORTHOGONAL_bak1,0 正交算子备用参数
% 039——ORTHOGONAL_bak2,0 正交算子备用参数
% 040——ORTHOGONAL_bak3,0 正交算子备用参数
% 自学习算子
% 041——SELF_LEARN,1 自学习概率
% 042——SELF_NET,5 自学习网络边长
% 043——SELF_RANGE,0.2 自学习搜索半径
% 044——SELF_ITERATION,10 自学习迭代次数
% 045——SELF_LAMDA,0.05 自学习变异概率
% 046——SELF_BAK1,0 自学习备用参数
% 047——SELF_BAK2,0 自学习备用参数
% 048——SELF_BAK3,0 自学习备用参数
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 分组惯性权重方式
% 049——GW_LAMDA,0.5 原权重保留的百分比
% 050——GW_DAMP,1 备用参数
% 051——E_BAK3,0 备用参数
% 052——E_BAK4,0 备用参数
% 053——E_BAK5,0 备用参数
% 变异算子分组
% 054——MO_SCORE,0 评价分组优劣方式:0/可行解个数|1/最优解大小
% 055——MO_UNIQ,0 采用算子的方式:0/一旦运行一个就不再运行其它的|1/按照概率运行,可能运行多个也可能一个都没有
% 056——VB_BAK2,0 备用参数
% 057——VB_BAK3,0 备用参数
% 差分变异
% 058 - DE_TIMES,10 位置更新最大次数
% 059 - DE_YES,0 是否差分
% 060 - DE_PER,1 差分的概率
% 061 - DE_DEM,0 差分的维度
% 062 - DE_LAMDA,0.5 差分系数
% 063 - DE_POSITION,0 更新个体当前或历史最佳位置
% 064 - DE_VELO,0 是否更新速度
% 065 - DE_PF,0.45 差分以后随机排序的概率
% 066 - DE_COMPARE,0 差分产生的解是否需要和原解比较
% 067 - DE_SELECT,0.5 多少的微粒被用于差分
% 高斯变异
% 068 - GS_YES,0 是否高斯
% 069 - GS_PER,1 高斯的起点概率
% 070 - GS_DEM,0 高斯的维度
% 071 - GS_LAMDA,1e-5 高斯系数
% 072 - GS_POSITION,0 更新个体当前或历史最佳位置
% 073 - GS_VELO,0 是否更新速度
% 074 - GS_DIM,0 维度变化的百分比
% 075 - GS_END,0 变异终点概率
% 076 - GS_BAK3,0 备用
% 随机变异
% 077 - MT_YES,0 是否高斯
% 078 - MT_PER,0 高斯的概率
% 079 - MT_DEM,0 高斯的维度
% 080 - MT_LAMDA,0.5 变化的维度百分比
% 081 - MT_POSITION,0 更新个体当前或历史最佳位置
% 082 - MT_VELO,0 是否更新速度
% 083 - MT_BAK1,0 备用
% 084 - MT_BAK2,0 备用
% 085 - MT_BAK3,0 备用
%
%
%
%
% PSOt
% $Id: psoption.m,v 1.00 2007/04/02 09:03:31 ray Exp $
% by 李剑
%%----- set up default option values -----
i = 1;
if rem(nargin, 2) %% 判断输入参数的奇偶性,
options = p1; %% 如果是奇数就将第一个参数作为输入的option
i = 2; %% start processing parameters with 2nd one
else %% 否则在eles里面构造一个默认的。
options = [
%% 总体控制参数
5; %% 001 - GROUP
5; %% 002 - SUB_SWARM
300; %% 003 - ITERATION
0; %% 004 - NEIGHBOR_STRUCT
1; %% 005 - NEIGHBOR
0; %% 006 - ERROR
NaN; %%
PSO 算法在VRP中的应用
5星 · 超过95%的资源 需积分: 50 111 浏览量
2018-01-30
11:22:42
上传
评论 1
收藏 256KB RAR 举报
评论5
最新资源