人工鱼群算法java版

本文介绍了如何使用人工鱼群算法解决图像分割中的二元二次函数问题。算法目前设置步长和视野为固定值,可进一步优化为变值策略,逐步减小。同时,内容提及算法中每次探路后的迈步优化和剪枝操作,以提高效率。此外,还提出了增加变化机制,微调最优值以提升算法性能。
摘要由CSDN通过智能技术生成

这是自己在图像分割时用到的,稍作修改变成简单的求解二元二次函数问题,没有进行优化,确定可以

    (1)    步长和视野为定值,可以修改为变值,先大后小

(2)    每次探路后的迈步也可以进行优化,此处未用

(3)    对于不需要的部分完全可以剪枝

(4) 可以增加变化机制,适当微量调整最优值

一、主函数

package AFAS_PACK;

import java.io.IOException;

public class mainTest {

	/**
	 * @param args
	 * @throws IOException
	 * @author sun 
	 */
	public static void main(String[] args) throws IOException {
		//int fishNum, int tryTime, int dim, double step, double delta, double visual	
		System.out.println("begin");
		AFAS run = new AFAS(10,5,2,5,0.2,10);
  		run.doAFAS(40 );//括号内为迭代次数
	}

}

二、人工鱼

package AFAS_PACK;

import java.io.IOException;

public class Fish {
	public int dim;                   //每条鱼的维度
	public int[] x;                //每条鱼的具体多维坐标
	public double fit;                //鱼的适应值,浓度
	public int visaul;             //每条鱼的视野
	public final double[] H = new double[256];
	public final double[] W = new double[256];
	

	public Fish(int dim, int visaul) throws IOException {
		super();
		this.dim = dim;
		this.visaul = visaul;
		x = new int[dim];
		for(int i=0;i<dim;i++)
			x[i] = (int) Math.floor(256*Math.random());
		fit = 0;
		//init();
	}
	/*getfit = newfunction(this.x[0],this.x[1]);*/
	

	public double distance(Fish f)
	{
		double a = 0;
		for(int i=0;i<dim;i++)
		{
			if(this.x[i]-f.x[i]==0)
				a = 0.00001;
			else 
				a += (this.x[
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值