遗传算法求二元函数极值怎么编码_使用遗传算法求解多元函数最值(实例).pdf

该博客介绍如何使用遗传算法来寻找二元函数的极值。通过定义变量个数、上下界、种群大小、编码长度等参数,初始化种群并进行编码,再进行适应度计算、选择、交叉和变异操作,最终找到目标函数的最优解。
摘要由CSDN通过智能技术生成

使用遗传算法求解多元函数最值(实例)

使用遗传算法求解多元函数最值

使用遗传算法求解多元函数最值

使使用用遗遗传传算算法法求求解解多多元元函函数数最最值值

这是我们的待求解问题模型,下面是我们的实现代码:

package test;

import java.util.Random;

public class GA {

public static final int varnum=5;//变量的个数

public static final double []lower=new double[varnum];

public static final double []uper=new double[varnum];

public static final int POP_SIZE=80;//种群数目

public static final double[][]initpop=new double[varnum][POP_SIZE];

public static final int M=22; //每一个变量编码位数

public static String[]pop=new String[POP_SIZE];//种群编码

public static double[][]result=new double[varnum][POP_SIZE];//种群代表的结果

public static final int LENGTH=M*varnum;//编码长度,因为要精确到小数点后六位,所以编为22位长,22*i,i

为变量个数

public static final int MJ2=4194304;//2^22

public static double[]fitness=new double[POP_SIZE];//存放种群适应度

public static final double PC=0.35;//交叉率

public static final double PM=0.08;//变异率

public static double[]p=new double[POP_SIZE];//轮盘赌方法个体适应度概率(按比例的适应度分配)

public static double[]q=new double[POP_SIZE];//q[i]是前n项p之和(累积概率)

public static Random random=new Random();//用于产生随机数的工具

public static Best best=new Best();//记录最佳答案的对象

public GA(double initpop[][])

{

for (int i = 0; i < initpop.length; i++) {

for(int j=0;j

result[i][j]=initpop[i][j];

}

}

}

public void encoding()

{

for (int i = 0; i < POP_SIZE; i++) {

pop[i]="";

for(int j=0;j

double d1=((initpop[j][i]-lower[j])/(uper[j]-lower[j]))*(MJ2-1);

String GeneCode=Integer.toBinaryString((int)d1);

if(GeneCode.length()

int k=M-GeneCode.length();

for(int l=0;l

GeneCode="0"+GeneCode;

}

}

pop[i]+=GeneCode;

}

}

}

public void decoding()//将2进制编码转换为10进制

{

for (int i = 0; i < pop.length; i++) {

for(int j=0;j

int k=Integer.parseInt((pop[i].substring(j*22, (j+1)*22-1)), 2);

result[j][i]=lower[j]+k*(uper[j]-lower[j]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值