全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java 将方法作为传参--多态的实例

在前段时研究智能算法时,发现如果使用java进行实现的话,往往具体实现过程差不多,但是适应值函数却根据

研究对象的不同发生很大的改变,这样对代码的维护产生很大的阻碍,于是产生的一个疑问:可不可以将适应值函数

作为参数传入到方法中,根据C/C++的习惯的话,由于指针的存在,可以将函数作为指针传入,由于指针使用的复杂

性以及难维护性,效果一般。如果换一种面向对象的思想,可以想设计一个接口I,这个接口只提供一个方法,那么相

当于可以将接口作为参数传入到方法中,调用时只需要将设计一个类,实现接口I,那么就可以将函数传入到方法中了。

下面以0.618黄金搜索法为例,由于目标函数的不同,满足上面所叙述的,注意这种搜索只能时单峰的函数才可行,

算法如下图所示:

1.首先创建一个接口,这个接口只有一个适应值的方法:

public interface Fitness {
 public double getFitness(double X);
}

2.创建一个类,简单实现上面0.618搜索的方法:

public class stationUtils{/***
 * 黄金分割搜索法,寻找最小值的函数
 * @param min 搜索上限
 * @param max 搜索下限
 * @param fitness 函数值
 * @return
 */
 public double goldenSearch(double min,double max,Fitness fitness){
  /*double X1=min+0.382*(max-min);*/
  double a=doubleOperation.substract(max,min);
  double X1=doubleOperation.add(min,doubleOperation.multiply(0.382,a));
  /*double X2=min+0.618*(max-min);*/
  double X2=doubleOperation.add(min,doubleOperation.multiply(0.618,a));
  double F1=fitness.getFitness(X1);
  double F2=fitness.getFitness(X2);
  while(Math.abs(doubleOperation.substract(X1,X2))>delt){
   if(F1<F2){
   max=X2;
   X2=X1;
   F2=F1;
   X1=min+0.382*(max-min);
   F1=fitness.getFitness(X1);
   }else{
   min=X1;
   X1=X2;
   F1=F2;
   X2=min+0.618*(max-min);
   F2=fitness.getFitness(X2);
   }
  }
  return doubleOperation.divide(doubleOperation.add(max,min),2);

 }
}

3.在创建一个类,用来实现Fitness接口,也就是将自己目标函数写进去,这里以一元二次函数为例:

 public class Func implements Fitness{
  @Override
  public double getFitness(double X) {
   return X*X- 3 * X + 1;
  }
 }

4.简单调用一下:

 @Test
 public void run1(){
  Func func=new Func();
  double result=stationUtils.goldenSearch(-2.00,4.00,func);
  System.out.println(result);
 }

总结,加入传入的参数比较多,可以将值传入到接口实现类中,那么getFitness这个方法就可以访问这个参数了。

以上这篇java 将方法作为传参--多态的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# java  # 方法多态  # java方法重载和参数类型自动提升方式  # Java中方法重写与重载的区别  # Java支持方法重载的原因  # Java基础学习之方法的重载知识总结  # java基础之方法和方法的重载详解  # Java开启新线程并传参方法代码实现  # Java 方法的重载与参数传递详解  # 创建一个  # 给大家  # 为例  # 就可以  # 只需  # 希望能  # 只有一个  # 中了  # 所示  # 要将  # 这篇  # 比较多  # 只提供  # 小编  # 大家多多  # 面向对象  # 如下图  # 类中  # 研究对象  # 换一种 


相关文章: 高性价比服务器租赁——企业级配置与24小时运维服务  如何通过西部建站助手安装IIS服务器?  网站制作话术技巧,网站推广做的好怎么话术?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  如何通过老薛主机一键快速建站?  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  建站之星代理如何获取技术支持?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  定制建站策划方案_专业建站与网站建设方案一站式指南  C++时间戳转换成日期时间的步骤和示例代码  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  简单实现Android文件上传  表情包在线制作网站免费,表情包怎么弄?  建站之星好吗?新手能否轻松上手建站?  c++ stringstream用法详解_c++字符串与数字转换利器  宁波自助建站系统如何快速打造专业企业网站?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何在企业微信快速生成手机电脑官网?  C#如何使用XPathNavigator高效查询XML  如何在建站宝盒中设置产品搜索功能?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  建站之星后台管理:高效配置与模板优化提升用户体验  家庭服务器如何搭建个人网站?  如何在IIS7上新建站点并设置安全权限?  如何快速重置建站主机并恢复默认配置?  网站企业制作流程,用什么语言做企业网站比较好?  如何在阿里云虚拟服务器快速搭建网站?  建站主机服务器选购指南:轻量应用与VPS配置解析  如何零基础开发自助建站系统?完整教程解析  如何做静态网页,sublimetext3.0制作静态网页?  如何选择PHP开源工具快速搭建网站?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  制作公司内部网站有哪些,内网如何建网站?  学校建站服务器如何选型才能满足性能需求?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  高防服务器租用指南:配置选择与快速部署攻略  如何在服务器上三步完成建站并提升流量?  b2c电商网站制作流程,b2c水平综合的电商平台?  定制建站如何定义?其核心优势是什么?  如何用免费手机建站系统零基础打造专业网站?  建站主机功能解析:服务器选择与快速搭建指南  内网网站制作软件,内网的网站如何发布到外网?  如何快速生成专业多端适配建站电话?  网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?  较简单的网站制作软件有哪些,手机版网页制作用什么软件? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。