📄 buildn.c
字号:
/* YAKS, a Khepera simulator including a separate GA and ANN (Genetic Algoritm, Artificial Neural Net). Copyright (C) 2000 Johan Carlsson (johanc@ida.his.se) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include "buildn.h"void feedforward(Ann *orginal){ for(int i=0; i < 8; i++) orginal->addNeuron(0,INPUT,SIGMOID); for(int i=0; i < 4; i++) orginal->addNeuron(5,OUTPUT,SIGMOID); orginal->connectLayer(0,5);}void elman(){ Ann *orginal; orginal = new Ann(); for(int i=0; i < 8; i++) orginal->addNeuron(0,INPUT,SIGMOID); for(int i=0; i < 4; i++) orginal->addNeuron(5,INTERN,SIGMOID); for(int i=0; i < 2; i++) orginal->addNeuron(10,OUTPUT,SIGMOID); orginal->connectLayer(0,5); orginal->connectLayer(5,5); orginal->connectLayer(5,10);}void scn(){ Ann *orginal; orginal = new Ann(); for(int i=0; i < 8; i++) orginal->addNeuron(0,INPUT,SIGMOID); for(int i=0; i < 2; i++) orginal->addNeuron(5,INTERN,SIGMOID); for(int i=0; i < 2; i++) orginal->addNeuron(10,OUTPUT,SIGMOID); for(int i=0; i < 16; i++) orginal->addNeuron(7,SCN,LINEAR); orginal->connectLayerWithSCN(0,5,7); orginal->connectLayer(5,7); orginal->connectLayer(5,10);}void ff8i2o(Ann *orginal){ for(int i=0; i < 8; i++) orginal->addNeuron(0,INPUT,SIGMOID); for(int i=0; i < 2; i++) orginal->addNeuron(5,OUTPUT,SIGMOID); orginal->connectLayer(0,5);}void srn8i4r2o(Ann *orginal){ for(int i=0; i < 8; i++) orginal->addNeuron(0,INPUT,SIGMOID); for(int i=0; i < 4; i++) orginal->addNeuron(5,INTERN,SIGMOID); for(int i=0; i < 2; i++) orginal->addNeuron(10,OUTPUT,SIGMOID); orginal->connectLayer(0,5); orginal->connectLayer(5,5); orginal->connectLayer(5,10);}void scn8i2n2o16scn(Ann *orginal){ for(int i=0; i < 8; i++) orginal->addNeuron(0,INPUT,SIGMOID); for(int i=0; i < 2; i++) orginal->addNeuron(5,INTERN,SIGMOID); for(int i=0; i < 2; i++) orginal->addNeuron(10,OUTPUT,SIGMOID); for(int i=0; i < 16; i++) orginal->addNeuron(7,SCN,LINEAR); orginal->connectLayerWithSCN(0,5,7); orginal->connectLayer(5,7); orginal->connectLayer(5,10);}void n16if6nrf2o(Ann *orginal){ for(int i=0; i<25; i++) orginal->addNeuron(0,INPUT,SIGMOID); for(int i=0; i<6; i++) orginal->addNeuron(5,INTERN,SIGMOID); for(int i=0; i<2; i++) orginal->addNeuron(11,OUTPUT,SIGMOID); orginal->connectLayer(0,5); orginal->connectLayer(5,5); orginal->connectLayer(5,11);}void n16i4nsf2o64s(Ann *orginal){ for(int i=0; i<25; i++) orginal->addNeuron(0,INPUT,SIGMOID); for(int i=0; i<4; i++) orginal->addNeuron(5,INTERN,SIGMOID); for(int i=0; i<2; i++) orginal->addNeuron(11,OUTPUT,SIGMOID); for(int i=0; i<8; i++) orginal->addNeuron(7,SCN,LINEAR); orginal->connectLayer(0,5); orginal->connectLayerWithSCN(5,11,7); orginal->connectLayer(5,7);}void n16if6nf2o(Ann *orginal){ for(int i=0; i<25; i++) orginal->addNeuron(0,INPUT,SIGMOID); for(int i=0; i<6; i++) orginal->addNeuron(5,INTERN,SIGMOID); for(int i=0; i<2; i++) orginal->addNeuron(11,OUTPUT,SIGMOID); orginal->connectLayer(0,5); orginal->connectLayer(5,11);}void n16if4nf4nf2o(Ann *orginal){ for(int i=0; i<25; i++) orginal->addNeuron(0,INPUT,SIGMOID); for(int i=0; i<4; i++) orginal->addNeuron(5,INTERN,SIGMOID); for(int i=0; i<4; i++) orginal->addNeuron(7,INTERN,SIGMOID); for(int i=0; i<2; i++) orginal->addNeuron(11,OUTPUT,SIGMOID); orginal->connectLayer(0,5); orginal->connectLayer(5,7); orginal->connectLayer(7,11); } void n16xxx(Ann *orginal){ for(int i=0; i < 8; i++) orginal->addNeuron(0,INPUT,SIGMOID); for(int i=0; i < 4; i++) orginal->addNeuron(8,INTERN,SIGMOID); for(int i=0; i < 32; i++) orginal->addNeuron(13,SCN,LINEAR); for(int i=0; i < 9; i++) orginal->addNeuron(4,INPUT,SIGMOID); for(int i=0; i < 5; i++) orginal->addNeuron(10,INTERN,SIGMOID); for(int i=0; i < 4; i++) orginal->addNeuron(20,INTERN,SIGMOID); for(int i=0; i < 2; i++) orginal->addNeuron(30,OUTPUT,SIGMOID); orginal->connectLayerWithSCN(0,8,13); orginal->connectLayer(8,20); orginal->connectLayer(10,13); orginal->connectLayer(4,10); orginal->connectLayer(10,20); orginal->connectLayer(20,30); }void n16xx2(Ann *orginal){ for(int i=0; i < 8; i++) // infrared orginal->addNeuron(1,INPUT,SIGMOID); orginal->addNeuron(2,INPUT,SIGMOID); // Energy orginal->addNeuron(3,INPUT,SIGMOID); // Gripper orginal->addNeuron(4,INPUT,SIGMOID); // Ground orginal->addNeuron(5,INPUT,SIGMOID); // Compass for(int i=0; i < 8; i++) // Light orginal->addNeuron(6,INPUT,SIGMOID); for(int i=0; i < 5; i++) // Rod orginal->addNeuron(7,INPUT,SIGMOID); for(int i=0; i < 4; i++) // Target controller orginal->addNeuron(10,INTERN,SIGMOID); for(int i=0; i < 4; i++) // Navigation orginal->addNeuron(13,INTERN,SIGMOID); for(int i=0; i < 17*4; i++) // Navigation * (IR + Gripper + Light) orginal->addNeuron(11,SCN,LINEAR); for(int i=0; i < 2; i++) orginal->addNeuron(14,OUTPUT,SIGMOID); // IR + Gripper + Light -> Navigation with SCN orginal->connectLayerWithSCN(1,13,11); orginal->connectLayerWithSCN(5,13,11); orginal->connectLayerWithSCN(6,13,11); // Other to Target controller orginal->connectLayer(2,10); orginal->connectLayer(3,10); orginal->connectLayer(4,10); orginal->connectLayer(7,10); // Target controller -> SCN nodes orginal->connectLayer(10,11); // Navigation -> Output orginal->connectLayer(13,14);}FB *buildNetwork[NETWORKS]= {feedforward, feedforward};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -