?? test1.cpp
字號:
#include "stdafx.h"
#include "aine.h"
#include "ne-neuron.h"
#include "ne-data.h"
using namespace aine;
extern ofstream tron;
double Inverse( const double v )
{
return v > 1.0 ? 0.0 : 1.0;
}
int EORTest( const string )
{
cout << "create a sample meural Process of EOR" << endl;
tron << "create a sample meural Process of EOR" << endl;
/*
*/
Neuron input[2] , _and , _or , _not , trigger , ans;
// Connect to AND
input[0].ConnectWith( &_and );
input[1].ConnectWith( &_and );
// Connect to OR
input[0].ConnectWith( &_or );
input[1].ConnectWith( &_or );
// Initialize the not trigger
trigger.ConnectWith( &_not );
// Connect the OR to the NOT and set threshold.
_or.ConnectWith( &_not );
_or.SetThreshold( .5 );
// Connect the MOT to the ans
_not.ConnectWith( &ans );
_not.axon[0]->SetCallBack( Inverse );
// Connect the and with the OR and set threshold.
_and.SetThreshold( 1.0 );
_and.ConnectWith( &_or );
// Connect the ans to te OR
ans.ConnectWith( &_or );
double in[4][2] =
{ { 0.0 , 0.0 } ,
{ 1.0 , 0.0 } ,
{ 0.0 , 1.0 } ,
{ 1.0 , 1.0 }
};
for( int i = 0 ; i < 4 ; i++ )
{
input[0].SetInputValue( in[i][0] );
input[1].SetInputValue( in[i][1] );
cout << i << ") " << in[i][0] << " EOR " << in[i][1] << " : " ;
tron << i << ") " << in[i][0] << " EOR " << in[i][1] << " : " ;
input[0].Depolarization();
input[1].Depolarization();
_or.Depolarization();
trigger.SetInputValue( 1.0 );
trigger.Depolarization();
_not.Depolarization();
cout << "\t A AND B = " << (int)(_and.ActionPotential() ? 1 : 0);
cout << "\t A NOR B = " << (int)(ans.ActionPotential() ? 1 : 0);
tron << " A AND B = " << (int)(_and.ActionPotential() ? 1 : 0);
tron << " A NOR B = " << (int)(ans.ActionPotential() ? 1 : 0);
_or.Clean();
_not.Clean();
cout << "\t: " << (int)(_and.ActionPotential() ? 1 : 0) << " OR " << (int)(ans.ActionPotential() ? 1 : 0);
tron << "\t: " << (int)(_and.ActionPotential() ? 1 : 0) << " OR " << (int)(ans.ActionPotential() ? 1 : 0);
ans.Depolarization();
_and.Depolarization();
cout << " -NEOR-> " << (int)(_or.ActionPotential() ? 1 : 0);
tron << " -NEOR-> " << (int)(_or.ActionPotential() ? 1 : 0);
_or.Depolarization();
trigger.SetInputValue( 1.0 );
trigger.Depolarization();
_not.Depolarization();
cout << " =EOR=> " << (int)(ans.ActionPotential() ? 1 : 0) << endl;
tron << " =EOR=> " << (int)(ans.ActionPotential() ? 1 : 0) << endl;
ans.Clean();
_and.Clean();
_or.Clean();
_not.Clean();
}
return 0;
}
int ReduceNeuron( const string )
{
cout << "create a sample meural Process of boolean operators with less neurons" << endl;
tron << "create a sample meural Process of boolean operators with less neurons" << endl;
Neuron n1 , n2;
double in[4][2] =
{ { 0.0 , 0.0 } ,
{ 1.0 , 0.0 } ,
{ 0.0 , 1.0 } ,
{ 1.0 , 1.0 }
};
n1.ConnectWith( &n2 );
n2.ConnectWith( &n2 );
cout << "Tracing OR:" << endl;
tron << "Tracing OR:" << endl;
for( int i = 0 ; i < 40 ; i++ )
{
const int at = i >= 4 ? (int)Random( 0 , 4 , true ) : i;
n1.SetInputValue( in[at][0] );
n2.SetInputValue( in[at][1] + n2.GetThreshold() );
n1.Depolarization();
n2.Depolarization();
cout << i << ") " << in[at][0] << " OR " << in[at][1] << " ---> " << (int)(n2.ActionPotential() ? 1 : 0) << endl;
tron << i << ") " << in[at][0] << " OR " << in[at][1] << " ---> " << (int)(n2.ActionPotential() ? 1 : 0);
if( n2.ActionPotential() )
if( !(in[at][0] || in[at][1]) )
tron << " **** ERROR *** ";
tron << endl;
}
cout << endl;
tron << endl;
return 0;
}
int BoolTest( const string path )
{
cout << "create a sample meural Process of boolean operators" << endl;
tron << "create a sample meural Process of boolean operators" << endl;
Neuron output( 0.0 , 0.5 ) , input[2] , NotOp , InvTrigger , ans;
input[0].ConnectWith( &output );
input[1].ConnectWith( &output );
output.ConnectWith( &NotOp );
NotOp.ConnectWith( &ans );
InvTrigger.ConnectWith( &NotOp );
InvTrigger.SetInputValue( 1.0 );
NotOp.axon[0]->SetCallBack( Inverse );
double in[4][2] =
{ { 0.0 , 0.0 } ,
{ 1.0 , 0.0 } ,
{ 0.0 , 1.0 } ,
{ 1.0 , 1.0 }
};
output.SetThreshold( .5 );
for( int i = 0 ; i < 4 ; i++ )
{
const int at = i;
input[0].SetInputValue( in[at][0] );
input[1].SetInputValue( in[at][1] );
input[0].Depolarization();
input[1].Depolarization();
cout << i << ") " << in[at][0] << " OR " << in[at][1] << " ---> " << (int)(output.ActionPotential() ? 1 : 0) << endl;
tron << i << ") " << in[at][0] << " OR " << in[at][1] << " ---> " << (int)(output.ActionPotential() ? 1 : 0);
if( output.ActionPotential() )
if( !(in[at][0] || in[at][1]) )
tron << " **** ERROR *** ";
tron << endl;
output.Clean();
}
for( int i = 0 ; i < 40 ; i++ )
{
const int at = (int)Random( 0 , 4 , true );
input[0].SetInputValue( in[at][0] );
input[1].SetInputValue( in[at][1] );
input[0].Depolarization();
input[1].Depolarization();
cout << i << ") " << in[at][0] << " OR " << in[at][1] << " ---> " << (int)(output.ActionPotential() ? 1 : 0) << endl;
tron << i << ") " << in[at][0] << " OR " << in[at][1] << " ---> " << (int)(output.ActionPotential() ? 1 : 0);
if( output.ActionPotential() )
if( !(in[at][0] || in[at][1]) )
tron << " **** ERROR *** ";
tron << endl;
output.Clean();
}
cout << endl;
tron << endl;
for( int i = 0 ; i < 4 ; i++ )
{
const int at = i;
input[0].SetInputValue( in[at][0] );
input[1].SetInputValue( in[at][1] );
input[0].Depolarization();
input[1].Depolarization();
output.Depolarization();
InvTrigger.Depolarization();
NotOp.Depolarization();
cout << i << ") " << in[at][0] << " NOR " << in[at][1] << " ---> " << (int)(ans.ActionPotential() ? 1 : 0) << endl;
tron << i << ") " << in[at][0] << " NOR " << in[at][1] << " ---> " << (int)(ans.ActionPotential() ? 1 : 0);
if( output.ActionPotential() )
if( in[at][0] || in[at][1] )
tron << " **** ERROR *** ";
tron << endl;
ans.Clean();
InvTrigger.SetInputValue( 1.0 );
}
for( int i = 0 ; i < 40 ; i++ )
{
const int at = (int)Random( 0 , 4 , true );
input[0].SetInputValue( in[at][0] );
input[1].SetInputValue( in[at][1] );
input[0].Depolarization();
input[1].Depolarization();
output.Depolarization();
InvTrigger.Depolarization();
NotOp.Depolarization();
cout << i << ") " << in[at][0] << " NOR " << in[at][1] << " ---> " << (int)(ans.ActionPotential() ? 1 : 0) << endl;
tron << i << ") " << in[at][0] << " NOR " << in[at][1] << " ---> " << (int)(ans.ActionPotential() ? 1 : 0);
if( output.ActionPotential() )
if( in[at][0] || in[at][1] )
tron << " **** ERROR *** ";
tron << endl;
ans.Clean();
output.Clean();
InvTrigger.SetInputValue( 1.0 );
}
cout << endl;
tron << endl;
output.SetThreshold( 1.5 );
for( int i = 0 ; i < 4 ; i++ )
{
const int at = i;
input[0].SetInputValue( in[at][0] );
input[1].SetInputValue( in[at][1] );
input[0].Depolarization();
input[1].Depolarization();
cout << i << ") " << in[at][0] << " AND " << in[at][1] << " ---> " << (int)(output.ActionPotential() ? 1 : 0) << endl;
tron << i << ") " << in[at][0] << " AND " << in[at][1] << " ---> " << (int)(output.ActionPotential() ? 1 : 0);
if( output.ActionPotential() )
if( !(in[at][0] && in[at][1]) )
tron << " **** ERROR *** ";
tron << endl;
output.Clean();
}
for( int i = 0 ; i < 40 ; i++ )
{
const int at = (int)Random( 0 , 4 , true );
input[0].SetInputValue( in[at][0] );
input[1].SetInputValue( in[at][1] );
input[0].Depolarization();
input[1].Depolarization();
cout << i << ") " << in[at][0] << " AND " << in[at][1] << " ---> " << (int)(output.ActionPotential() ? 1 : 0) << endl;
tron << i << ") " << in[at][0] << " AND " << in[at][1] << " ---> " << (int)(output.ActionPotential() ? 1 : 0);
if( output.ActionPotential() )
if( !(in[at][0] && in[at][1]) )
tron << " **** ERROR *** ";
tron << endl;
output.Clean();
}
cout << endl;
tron << endl;
for( int i = 0 ; i < 4 ; i++ )
{
const int at = i;
input[0].SetInputValue( in[at][0] );
input[1].SetInputValue( in[at][1] );
input[0].Depolarization();
input[1].Depolarization();
InvTrigger.Depolarization();
output.Depolarization();
NotOp.Depolarization();
cout << i << ") " << in[at][0] << " NAND " << in[at][1] << " ---> " << (int)(ans.ActionPotential() ? 1 : 0) << endl;
tron << i << ") " << in[at][0] << " NAND " << in[at][1] << " ---> " << (int)(ans.ActionPotential() ? 1 : 0);
if( output.ActionPotential() )
if( (in[at][0] && in[at][1]) )
tron << " **** ERROR *** ";
tron << endl;
ans.Clean();
output.Clean();
InvTrigger.SetInputValue( 1.0 );
}
for( int i = 0 ; i < 40 ; i++ )
{
const int at = (int)Random( 0 , 4 , true );
input[0].SetInputValue( in[at][0] );
input[1].SetInputValue( in[at][1] );
input[0].Depolarization();
input[1].Depolarization();
InvTrigger.Depolarization();
output.Depolarization();
NotOp.Depolarization();
cout << i << ") " << in[at][0] << " NAND " << in[at][1] << " ---> " << (int)(ans.ActionPotential() ? 1 : 0) << endl;
tron << i << ") " << in[at][0] << " NAND " << in[at][1] << " ---> " << (int)(ans.ActionPotential() ? 1 : 0);
if( output.ActionPotential() )
if( (in[at][0] && in[at][1]) )
tron << " **** ERROR *** ";
tron << endl;
ans.Clean();
InvTrigger.SetInputValue( 1.0 );
}
tron << endl;
cout << endl;
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -