⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cell.cpp

📁 人工智能神经网络算法的实现。注意可能由于实现方式不同而导致结果有点不一样
💻 CPP
字号:
#include <iostream>
#include<fstream>
using namespace std;

double u;
int m,n;

int f(int a,int b,int c,int d,double*power,double val)
{ if((a*power[0]+b*power[1]+c*power[2]+d*power[3]-val)>=0)
     return 1;
else
return -1;
}//f函数计算第一种编码的输出值。
int ff(int a,int b,int c,int d,int e,int f,int g,int h,double*power,double val)
{
	if((a*power[0]+b*power[1]+c*power[2]+d*power[3]+e*power[4]+f*power[5]+g*power[6]+h*power[7]-val)>=0)
     return 1;
else
return -1;
}//ff函数计算第二种编码的输出值。
double change(double power,double u,int teach,int y,int x)
{
	power=power+2*u*(teach-y)*x;
	return power;
}//change函数用于修正权重。

int main()
{
int brand[20];
int atti[20];
int per[20];
int park[20];
int gendar[20];
int park1[10][20];//相对于第二种编码
int brand1[10][20];//相对于第二种编码

ifstream input;
int a;
cout<<"请输入编码方式,1or2:";
cin>>a;
/*由用户输入选择编码形式,若输入1则从文件input.txt中读取数据,2从in.txt,其他数字返回错误。*/
if(a==2)
input.open("in.txt");
else if(a==1)input.open("input.txt");
else {cout<<"输入方式错误!"<<endl;return 0;}
input>>m>>n>>u;
int i=0;
//相对2种不同编码读取数据。
if(a==1)
while(input>>brand[i]>>per[i]>>atti[i]>>park[i]>>gendar[i]) i++;
else if(a==2)
while(input>>brand1[i][0]>>brand1[i][1]>>brand1[i][2]>>per[i]>>atti[i]>>park1[i][0]>>park1[i][1]>>park1[i][2]>>gendar[i]) i++;
double power[20]={1.0};
double val=1.0;
bool loop=true;
int k=0;
int test=0;
/*对每个不满足条件的权重进行修正,然后重新计算所有样本。*/
while(loop)
{
	int temp;
	//相对2种不同编码执行不同操作。
	if(a==1){
	temp=f(brand[k],per[k],atti[k],park[k],power,val);
	while(temp!=gendar[k])
	{
		test=0;
		power[0]=change(power[0],u,gendar[k],temp,brand[k]);
		power[1]=change(power[1],u,gendar[k],temp,per[k]);
		power[2]=change(power[2],u,gendar[k],temp,atti[k]);
		power[3]=change(power[3],u,gendar[k],temp,park[k]);
		val=val-2*u*(temp-gendar[k]);
		temp=f(brand[k],per[k],atti[k],park[k],power,val);
	}
	}//第一种仅计算4个权重。
	else if(a==2)
	{
		temp=ff(brand1[k][0],brand1[k][1],brand1[k][2],per[k],atti[k],park1[k][0],park1[k][1],park1[k][2],power,val);
		while(temp!=gendar[k])
		{
		test=0;
		power[0]=change(power[0],u,gendar[k],temp,brand1[k][0]);
		power[1]=change(power[1],u,gendar[k],temp,brand1[k][1]);
		power[2]=change(power[2],u,gendar[k],temp,brand1[k][2]);
		power[3]=change(power[3],u,gendar[k],temp,per[k]);
		power[4]=change(power[4],u,gendar[k],temp,atti[k]);
		power[5]=change(power[5],u,gendar[k],temp,park1[k][0]);
		power[6]=change(power[6],u,gendar[k],temp,park1[k][1]);
		power[7]=change(power[7],u,gendar[k],temp,park1[k][2]);
		val=val-2*u*(temp-gendar[k]);
		temp=ff(brand1[k][0],brand1[k][1],brand1[k][2],per[k],atti[k],park1[k][0],park1[k][1],park1[k][2],power,val);
		}
	}//第二种则计算8个。
	test++;
k++;
k=k%n;
if(test==n)
loop=false;
}
ofstream output;
if(a==1) output.open("output.txt");
else output.open("out.txt");
output<<"power is as below:"<<endl;
for(int i=0;i<m;i++)
output<<power[i]<<endl;
output<<"value is as below:"<<endl;
output<<val<<endl;
input.close();
output.close();
return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -