MATLAB初始化种群-随机和一定的实数序列

发布时间:2024年01月23日

在智能算法的编码场景中,很多时候是需要用求和为一定的编码的,?比如分配问题,?配送问题等,?下面给出具体程序代码:

clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;


N=5; % 设定优化问题维数
lb=0*ones(1,N);% 自变量上限
ub=1*ones(1,N);% 自变量下限

popsize=10;% 种群数
p=12.5;% 求和的目标?
Chrom=mygenfun(popsize,N,lb,ub,p)

disp('验证求和是否为p');
sum(Chrom,2)

function Chrom=mygenfun(popsize,N,lb,ub,p)
% 建立随机种群
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
? ??
? ? x2=p*x/sum(x);% 和为p的非负序列
? ??
? ? Chrom(i,:)=x2;% 求和序列赋值
end

程序结果:

可看到产生了10行随机数,?每一行的和都是12.5,?说明代码有效.

文章来源:https://blog.csdn.net/corn1949/article/details/135762826
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。