怎么用遗传算法工具箱调用神经网络来寻求最优解啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用遗传算法工具箱调用神经网络来寻求最优解啊相关的知识,希望对你有一定的参考价值。

我先训练好一个函数,现在我要用遗传算法工具箱调用这个网络来找到最优解,可是那个目标函数怎么弄啊?我@我之前训练的网络,可是运行不起来啊?求大神帮助

把你之前训练好的网络设置成一个全局变量ann,然后建立一个函数func,在func函数中调用这个训练好的网络ann获得输出。最后,遗传算法调用func作为目标函数追问

朋友,再细讲一下,怎么设置全局变量ann,谢谢!

参考技术A 请问解决了吗

[MATLAB] 利用遗传算法函数求目标函数的最优解

最近接触到了遗传算法以及利用遗传算法求最优解,所以就把这些相关的内容整理记录一下。

一、遗传算法简介(摘自维基百科)

遗传算法(英语:genetic algorithm (GA))是计算数学中用于解决最佳化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。

算法

  • 选择初始生命种群
  • 循环
    • 评价种群中的个体适应度
    • 以比例原则(分数高的挑中概率也较高)选择产生下一个种群。
    • 改变该种群(交叉和变异)
  • 直到停止循环的条件满足

适用问题

遗传算法擅长解决的问题是全局最优化问题。
跟传统的爬山算法相比,遗传算法能够跳出局部最优而找到全局最优点。而且遗传算法允许使用非常复杂的适应度函数(或者叫做目标函数),并对变量的变化范围可以加以限制。

二、MATLAB中的GA函数

  1. X = ga(FITNESSFCN, NVARS)
    这是GA函数最简单的调用方法,其中FITNESSFCN是目标函数,其参数应为一向量,NVARS则是参数向量的维度。
    X是目标函数值为最小时的参数向量。
  2. X = ga(FITNESSFCN, NVARS, A, b, Aeq, beq, lb, ub, NONLCON, options)
    这些参数用于约束X:
    • AX <= B, AeqX = Beq (线性约束)
    • LB <= X <= UB
    • NONLCON:定义C(X) <= 0, Ceq(X) = 0(非线性约束)
    • options:设置GA的相关参数
  3. [X,FVAL,EXITFLAG,OUTPUT] = ga(FITNESSFCN, ...)
    • FVAL是在目标函数的参数为X时的值
    • EXITFLAG是结束遗传算法计算的标志
      -0 Maximum number of generations exceeded.
      -1 Optimization terminated by the output or plot function.
      -2 No feasible point found.
      -4 Stall time limit exceeded.
      -5 Time limit exceeded.
    • OUTPUT结构体包含了遗传代数、输出种群等信息
  4. options
    options = gaoptimset();
    options.Generations=5000; %迭代次数
    options.PopulationSize=30; %种群数目
    还又其他很多选项可以设置。

三、一个实例

假设要求目标函数
f = (339-0.01*x1-0.003*x2)*x1 + (399-0.004*x1-0.01*x2)*x2 - (400000+195*x1+225*x2);
的最大值。

首先编写目标函数myfit.m

 
function f = myfit( x )
    f = (339-0.01*x(1)-0.003*x(2))*x(1)...
        + (399-0.004*x(1)-0.01*x(2))*x(2)...
        - (400000+195*x(1)+225*x(2));
    f = -f; %因为GA是寻找最小值,所以为了求这个函数的最大值,取f的相反数
end 

调用GA函数:

X =ga(@myfit, 2)

结果显示: Optimization terminated: maximum number of generations exceeded.
说明迭代达到最大次数仍未求得最优解。因此下面通过options增大迭代次数:

 
options = gaoptimset();
options.Generations = 2000; %最大迭代数设为2000
 
%再次调用GA函数
[X,FVAL,EXITFLAG,OUTPUT] =ga(@myfit, 2 ,[], [],[],[],[],[],[],options);

结果显示: Optimization terminated: average change in the fitness value less than options.TolFun.

此时

X =
  1.0e+03 *
  4.7350 7.0429
 
FVAL = -5.5364e+05

这个结果与对目标函数 x1、x2 分别求偏导得到的结果(x1=4735, x2=7043, y=553641)是一致的,表明结果正确。

四、其他求最优解的方法

MATLAB还有许多其他求最优解的常用函数,如 fmincon()、fminsearch()、fminimax()等。

以上是关于怎么用遗传算法工具箱调用神经网络来寻求最优解啊的主要内容,如果未能解决你的问题,请参考以下文章

[MATLAB] 利用遗传算法函数求目标函数的最优解

遗传算法--GA

简要说明遗传算法中交叉和变异概率是如何设定的?

遗传算法

PSO算法、蚁群算法和遗传算法matlab求解函数最值问题,程序怎么编写?

模拟退火算法和遗传算法