allchrs代码matlab,基于Matlab遗传算法的非线性方程组优化程序

基于Matlab遗传算法的非线性方程组优化程序

clear,clc;%清理内存,清屏

circleN=200;%迭代次数

format long

%构造可能解的空间,确定染色体的个数、长度

solutionSum=4;leftBoundary=-10;rightBoundary=10;

distance=1;chromosomeSum=500;solutionSumError=0.1;

oneDimensionSet=leftBoundary:distance:rightBoundary;

oneDimensionSetN=size(oneDimensionSet,2);%返回oneDimensionSet中的元素个数

solutionN=oneDimensionSetN^solutionSum;%解空间(解集合)中可能解的总数

binSolutionN=dec2bin(solutionN);%把可能解的总数转换成二进制数

chromosomeLength=size(binSolutionN,2);%由解空间中可能解的总数(二进制数)计算染色体的长度

%程序初始化

%随机生成初始可能解的顺序号,+1是为了防止出现0顺序号

solutionSequence=fix(rand(chromosomeSum,1)*solutionN)+1;

for i=1:chromosomeSum%防止解的顺序号超出解的个数

if solutionSequence(i)>solutionN;

solutionSequence(i)=solutionN;

end

end

%把解的十进制序号转成二进制序号

fatherChromosomeGroup=dec2bin(solutionSequence,chromosomeLength); holdLeastFunctionError=Inf;%可能解的最小误差的初值

holdBestChromosome=0;%对应最小误差的染色体的初值

%计算

circle=0;

while circlecircle=circle+1;%记录迭代次数

%1:由可能解的序号寻找解本身(关键步骤)

x=chromosome_x(fatherChromosomeGroup,oneDimensionSet,solutionSum);

%2:把解代入非线性方程计算误差

functionError=nonLinearSumError1(x);%把解代入方程计算误差

[solution,minError,isTrue]=isSolution(x,functionError,solutionSumError);

if isTrue==1

'方程得解'

solution

minError

circle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值