要考试的题目,大家快来给个最优化的程序,高分回报...

要考试的题目,大家快来给个最优化的程序,高分回报...,第1张

IPerson接口:

public interface IPerson {

void print()

}

Teacher类:

public class Teacher implements IPerson {

private String num

private String name

private int workage

private String job

public String getName() {

return name

}

Teacher(){

}

public Teacher(String num, String name, int workage, String job) {

super()

this.num = num

this.name = name

this.workage = workage

this.job = job

}

public Teacher(String num, double workage) {

this.num = num

this.workage = (int)workage

}

public void print() {

System.out.println("==========="+name+"的 个 人 信 息===============")

System.out.println("工号:"+num+"\t姓名:"+name+"\t工龄:"+workage+"\t职位:"+job)

System.out.println()

}

}

Director类:

public class Director extends Teacher{

private String assistantName

public Director(String num, String name, int workage, String job,String assistanName) {

super(num, name, workage, job)

this.assistantName=assistanName

}

public void print(){

super.print()

System.out.println("主任"+super.getName()+"的助理是:"+this.assistantName)

}

}

Test类

public static void main(String[] args) {

Teacher t1=new Teacher("0351","蔡木生",4,"专业负责人")

Teacher t2=new Teacher("0840","詹卫许",1,"教师")

Teacher t3=new Teacher("0302","黄玲玲",4,"教师")

Director d=new Director("0411","黄思曾",3,"主任","罗琼")

t1.print()

t2.print()

t3.print()

d.print()

}

}

蒙特卡洛: 大量随机抽样下的比对,最后结果就是在当前抽样数量下筛选出的一定是最想要的那个结果。举例:假如篮子里有1000个苹果(你定的测试集),让你 每次闭着眼睛找一个最大的,可以不限制挑选次数;于是,你可以闭着眼随机拿了一个,然后再随机拿一个与第一个比,留下大的;再随机拿一个,与前次留下的比较,又 可以留下大的;循环往复这样:拿的次数越多,挑出最大苹果的可能性也就越大!但除非你把1000个苹果都挑一遍,否则你无法肯定最终挑出来的就是最大的一个。如果有 10000个苹果的话,继续如此说不定就能找到更大的!

模拟退火 :“渐渐”清楚自己的目标是什么!并不断朝“越发”明确的目标迈进,“越来越”不被诱惑干扰。举例:为了找出地球上最高的山,一只兔子在开始并没有 合适的策略,它随机地跳了很长时间!在这期间,它可能走向高处,也可能踏入平地或沟壑。但是,随着时间的流逝,它“渐渐清醒”! 并“直直地”朝着最高的方向跳去, 最后就到达了珠穆朗玛峰。

粒子群 :信息的社会共享,以一个团队的形式来搜索!团队里成员信息共享,共同进步;避免一个人工作时出现目光短浅,没有全局意识。举例:就像下围棋,只 专注于一个角落的战斗不一定能获取最终的胜利,只有放眼全局,把所有己方的棋子都盘活,相互间彼此帮助,才能获得最后胜利。

蚁群 :和粒子群算法有些相似,都是靠团队的力量共同去找目标!蚁群算法中特殊的是它的"信息素"挥发! 这个效果是其他算法中没有的!

以上所有的最优化算法都很难做到极高的精度,这是必然的: 一是 因为全局搜索已经耗费了大量的时间和资源,再过分强调精度有些不经济; 二是 因为全局搜索得到的最值可以理解为一精确最值的一个准确范围!即进入这个范围再进行精确的搜索一定可以找到精确最值;但是,全局最优的核心是随机/概率,当进入一个准确范围时,这个范围肯定是很小的,如果之后精确搜索还用全局搜索的概率参数(此时来说波动范围太大了),很可能又会跳出这个好不容易找到的精确区域!

因此: 全局最优算法与局部最优算法是要相结合的 !全局最优算法负责划定最值所在的一个精确的、较小的范围内,即告诉局部最优算法在这个范围内继续找一定可以找到精确解;局部最优算法按照较小的步长、较高的精度继续搜索精确最值。

常用全局最优算法:蒙特卡洛(MC)、模拟退火(SA)、粒子群(PSO)、蚁群(AG);

常用局部最优算法:梯度下降法、牛顿法、阻尼牛顿法、共轭梯度法;

推荐搭配1:蒙特卡洛

推荐搭配2:粒子群 + 梯度下降

推荐搭配3:蚁群 + 梯度下降 + 重检机制

以上提到算法的 “程序 + 详细使用说明” 参考以下地址:

优化算法


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11114805.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存