产生随机不重复整数序列矩阵是智能算法最常用的操作之一,以下给出具体方法:
clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;
N=10; % 设定优化问题维数
lb=0*ones(1,N);% 自变量上限
ub=1*ones(1,N);% 自变量下限
popsize=10;% 种群数
Chrom=mygenfun(popsize,N,lb,ub)
?
function Chrom=mygenfun(popsize,N,lb,ub)
% 建立随机种群
Chrom=zeros(popsize,N);% 初始化编码矩阵
for i=1:popsize% 循环
? ? x=zeros(1,N);% 初始化变量
? ? for j=1:N
? ? ? ?x(1,j)=lb(j)+(ub(j)-lb(j))*rand(1,1);% 随机赋值
? ? end
? ? [v1,S]=sort(x);% 排序
? ? ?Chrom(i,:)=S;% 排序赋值
end
?
程序运行结果如下:
Chrom =
? ? ?3 ? ? 2 ? ? 1 ? ?10 ? ? 5 ? ? 4 ? ? 7 ? ? 8 ? ? 6 ? ? 9
? ? ?2 ? ? 5 ? ? 6 ? ? 1 ? ?10 ? ? 3 ? ? 7 ? ? 4 ? ? 9 ? ? 8
? ? ?1 ? ? 7 ? ? 8 ? ? 3 ? ? 5 ? ? 9 ? ? 6 ? ? 4 ? ? 2 ? ?10
? ? ?2 ? ? 7 ? ? 5 ? ? 4 ? ?10 ? ? 1 ? ? 9 ? ? 8 ? ? 6 ? ? 3
? ? ?9 ? ? 1 ? ? 5 ? ? 6 ? ? 3 ? ? 7 ? ? 2 ? ? 8 ? ?10 ? ? 4
? ? ?1 ? ? 9 ? ? 8 ? ? 7 ? ?10 ? ? 4 ? ? 3 ? ? 6 ? ? 2 ? ? 5
? ? ?3 ? ? 8 ? ? 2 ? ? 4 ? ? 1 ? ? 6 ? ? 7 ? ? 5 ? ? 9 ? ?10
? ? ?1 ? ? 6 ? ? 7 ? ? 3 ? ? 8 ? ?10 ? ? 5 ? ? 9 ? ? 2 ? ? 4
? ? ?8 ? ? 9 ? ? 5 ? ? 1 ? ? 2 ? ? 3 ? ? 4 ? ? 6 ? ?10 ? ? 7
? ? ?8 ? ?10 ? ? 3 ? ? 4 ? ? 7 ? ? 9 ? ? 2 ? ? 6 ? ? 1 ? ? 5
>>?
熟练掌握此方法可以广泛用于各类排序编码的智能算法,避让遗传算法,蚁群算法等,用于解决很多排序问题.