📄 training.cpp
字号:
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <fstream>
#include <time.h>
#include <iomanip>
void main()
{
using namespace std;
ofstream fout1;
fout1.open("ourput.txt");
if (fout1.fail())
{
exit(1);
cout<<"cannot open file.";
}
fout1.setf(ios::showpoint);
fout1.setf(ios::fixed);
fout1.precision(5);
int i,j,k,h,count=0;
double cood[10][2],v[10][10],dis[10][10],u[10][10],deta_u[10][10];
double a=800,b=800,c=200,d=500;
double u0=0.01,u_init,deta_t=0.00001;
double judge=0;
double sum_vj=0,sum_vy=0,sum_xj=0,sum_dy=0;
srand((unsigned)time(NULL));
for (i=0;i<10;i++)
{
cood[i][0]=(rand()%100)/100.0;
cood[i][1]=(rand()%100)/100.0;
}
//show the ten place coordinate
for (i=0;i<10;i++)
{
fout1<<cood[i][0]<<" "<<cood[i][1]<<endl;
}
for (i=0;i<10;i++)
{
for (j=i;j<10;j++)
{
double distancesqu;
distancesqu=(cood[i][0]-cood[j][0])*(cood[i][0]-cood[j][0])+(cood[i][1]-cood[j][1])*(cood[i][1]-cood[j][1]);
dis[i][j]=sqrt(distancesqu);
dis[j][i]=dis[i][j];
}
}
//show the distance matrix
fout1<<"the distance matrix"<<endl;
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
fout1<<setw(10)<<dis[i][j];
}
fout1<<endl;
}
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
v[i][j]=0.0;//(rand()%500)/1000.0;
}
}
//show the change place matrix
fout1<<"show the change place matrix"<<endl;
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
fout1<<setw(10)<<v[i][j];
}
fout1<<endl;
}
//compute step
u_init=0.5*u0*log(9.0);
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
u[i][j]=u_init+(rand()%100-50)*u0/1000.0;
}
}
do
{
judge=0;
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
v[i][j]=0.5*(1+tanh(u[i][j]/u0));
}
}
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
for (k=0;k<10;k++)
{
if (!(k==j))
{
sum_vj=sum_vj+v[i][k];
}
}
for (k=0;k<10;k++)
{
if (!(k==i))
{
sum_vy=sum_vy+v[k][j];
}
}
for (k=0;k<10;k++)
{
for (h=0;h<10;h++)
{
sum_xj=sum_xj+v[k][h];
}
}
for (k=0;k<10;k++)
{
int add,sub,addk,subk;
add=j+1;
sub=j-1;
addk=k;
subk=k;
if (add==10)
{
add=0;
}
if (sub==-1)
{
sub=9;
}
if (!(k==i))
{
sum_dy=sum_dy+dis[i][k]*(v[addk][add]+v[subk][sub]);
}
}
deta_u[i][j]=-u[i][j]-a*sum_vj-b*sum_vy-c*(sum_xj-13)-d*sum_dy;
sum_vj=0,sum_vy=0,sum_xj=0,sum_dy=0;
}
}
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
u[i][j]=u[i][j]+deta_u[i][j]*deta_t;
}
}
count=count+1;
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
judge=judge+v[i][j];
}
}
}
while (count<2000);
fout1<<"show the results"<<endl;
fout1<<"the number of the step times:"<<count<<endl;
for (i=0;i<10;i++)
{
for (j=0;j<10;j++)
{
fout1<<setw(10)<<v[i][j];
}
fout1<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -