matlab工具箱中的神经网络和遗传算法要怎么调用?

如题所述

第1个回答  2012-07-11
都是有两种调用方法,一种图形界面的,这个从开始菜单,然后工具,然后从里面找神经网络 neural network,遗传算法工具是 全局优化工具箱里面的,global optimization。
另外 一种通过命令行调用,这个需要你理解你都要做什么,我用神经网络举例。第一步需要先整理出输入变量和输出变量,第二步设计并初始化神经网络,第三部训练,第四部获得结果。
如果你想结合这两者,就会更加复杂,详细的你可以再问。我曾经做过用遗传算法优化神经网络的工具。追问

谢啦!
两者结合的,我想先用BP神经网络建立模型,再用遗传算法找到最优解

追答

两者结合会比较复杂,自己编写代码会比较方便一些。
首先是调用神经网络,第三步,训练的部分使用遗传算法代替,这里可以使用遗传算法工具箱。
我假设你知道怎么初始化神经网络,怎么准备输入和输出。如果你不知道,那么参阅matlab 帮助,搜索newff,就会知道怎么初始化神经网络了。其中的训练函数部分可以不用管。
然后是使用遗传算法优化。这个优化算法目前有很多论文写到,使用matlab自带工具箱的问题是,无法直接用遗传算法优化。首先你需要先理解遗传算法的原理。遗传算法利用达尔文的进化论作为蓝本进行杂交,然后其中优秀的子代,也就是误差小的子代会留下来,不好的子代会被剔除。进化的核心是有两点,一种是变异,mutation,这个可以进化出新的表现性以适应环境,另外一个核心是孟德尔基因连锁交换定律,这个可以保留上一代的特性继续遗传下去。那么就需要把神经网络里面的权值,偏置提取出来当做遗传序列。和真实的ATGC碱基对,每三个决定一个氨基酸不同,这里的每一个数字都是一个遗传代码。
在这个程序里面实现,你需要先提取神经网络的偏置和权重。神经网络初始化以后,是一个struct结构,net.IW是输入权重,net.LW是输出权重,net.b是偏置。你需要提取并且把这些数字放在一个序列里。你要知道怎么从这个序列转化回神经网络中对应的值。其中,第一代是什么样的非常重要,这个决定了最终这个种群将优化到什么程度。
如果这个东西非常详细的写,非常复杂。
我这里再提示一个地方。matlab遗传算法工具箱中,仅仅支持一个序列,不过你可以吧神经网络不同的层对应的不同权值和偏置作为不同的遗传序列,这样就有更多的,类似染色体的东西。
还有目前的算法中,我没见到有论文涉及孟德尔遗传定律中第一条,也就是基因分离定律的部分,我目前正在写相关的论文。
再详细你就继续问我吧,我曾经开发过这方面的商业软件,目前在工业上有应用。

本回答被提问者和网友采纳