在智能算法的编码场景中,很多时候是需要用求和为一定的编码的, 比如分配问题, 配送问题等, 下面给出具体程序代码:
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
程序结果:
文章来源:https://www.toymoban.com/news/detail-818306.html
可看到产生了10行随机数, 每一行的和都是12.5, 说明代码有效.文章来源地址https://www.toymoban.com/news/detail-818306.html
到了这里,关于MATLAB初始化种群-随机和一定的实数序列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!