#include <stdlib.h>
#include <time.h>
#include "geneticnet.h"
CGeneticNet::CGeneticNet() {
srand((unsigned)(time(NULL)));
for (int i=0;i<CGN_POPULATION;i++) {
// Weights automatically initialized
// in neural network constructor.
m_pcPopulation[i] = new CSimpleNet;
}
}
CGeneticNet::~CGeneticNet() {
for (int i=0;i<CGN_POPULATION;i++) {
delete m_pcPopulation[i];
}
}
CSimpleNet *CGeneticNet::Run() {
float error = 0.0f;
for (int iter=0;iter<CGN_MAXITER;iter++) {
for (int i=0;i<CGN_POPULATION;i++) {
error = ((m_pcPopulation[i]->Train(0,0,0) +
m_pcPopulation[i]->Train(0,1,1) +
m_pcPopulation[i]->Train(1,0,1) +
m_pcPopulation[i]->Train(1,1,0)) / 4.0f);
if (error < CGN_THRESHOLD) return m_pcPopulation[i];
m_fErrors[i] = error;
}
SortFitnesses();
NewPopulation();
}
return NULL;
}
void CGeneticNet::SortFitnesses() {
int n = CGN_POPULATION;
int disorder = n;
while (disorder) {
disorder = 0;
for(int i=1;i<n;i++) {
if (m_fErrors[i] < m_fErrors[i-1]) {
float m_fTemp = m_fErrors[i-1];
m_fErrors[i-1] = m_fErrors[i];
m_fErrors[i] = m_fTemp;
CSimpleNet *tempnn = m_pcPopulation[i-1];
m_pcPopulation[i-1] = m_pcPopulation[i];
m_pcPopulation[i] = tempnn;
disorder++;
}
}
n--;
}
}
void CGeneticNet::NewPopulation() {
int id1, id2;
float *wp1 = new float[9];
float *wp2 = new float[9];
for (int i=0;i<CGN_POPULATION / 2;i++) {
id1 = rand() % CGN_POPULATION / 2;
id2 = rand() % CGN_POPULATION / 2 + CGN_POPULATION / 2;
m_pcPopulation[id1]->GetWeights(wp1);
m_pcPopulation[id2]->GetWeights(wp2);
for (int j=0;j<2;j++) {
float temp;
temp = wp1[j+6];
wp1[j+6] = wp2[j+6];
wp2[j+6] = temp;
}
if (rand() % 10 < 2) {
for (int i=0;i<3;i++) {
for (int j=0;j<3;j++) {
m_pcPopulation[id1]->AlterWeights((float)(rand())/(32767/2) - 1);
m_pcPopulation[id2]->AlterWeights((float)(rand())/(32767/2) - 1);
}
}
}
m_pcPopulation[id2]->SetWeights(wp1);
}
delete [] wp1;
delete [] wp2;
}
GA优化BP神经网络的权值程序
4星 · 超过85%的资源 需积分: 10 88 浏览量
2011-03-06
08:41:36
上传
评论 6
收藏 35KB RAR 举报
zhengpt
- 粉丝: 4
- 资源: 5
最新资源
- database-project-massunaAi笔记
- 2%EF%BC%9A%E9%99%95%E8%A5%BF%E
- yyspdz62_944.apk
- SAP公司间采购EDI配置-如何触发自动MIRO.docx
- python197基于图像识别的仪表实时监控系统.rar
- python196基于循环神经网络的情感分类系统.rar
- I2C驱动SHT30温湿度传感器和LCD12864使用例程(RSCG12864B)
- python193中学地理-中国的江河湖泊教学网(django).rar
- python191基于时间序列分析的大气污染预测软件(django).rar
- python190基于人脸识别智能化小区门禁管理系统.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页