本文整理汇总了C++中Network::UpdateLivesWithPain方法的典型用法代码示例。如果您正苦于以下问题:C++ Network::UpdateLivesWithPain方法的具体用法?C++ Network::UpdateLivesWithPain怎么用?C++ Network::UpdateLivesWithPain使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Network
的用法示例。
在下文中一共展示了Network::UpdateLivesWithPain方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main() {
ScopedPass pass("Evolver [single-bit adder]");
Network network;
Evolver evolver(network);
Neuron * input0 = new OrNeuron();
Neuron * input1 = new OrNeuron();
Neuron * output = new OrNeuron();
network.AddNeuron(*input0);
network.AddNeuron(*input1);
network.AddNeuron(*output);
while (true) {
bool flag0 = RandomBool();
bool flag1 = RandomBool();
if (flag0) input0->Fire();
else input0->Inhibit();
if (flag1) input1->Fire();
else input1->Inhibit();
bool gotResponse = false;
bool expectingResponse = (flag0 && !flag1) || (flag1 && !flag0);
// Give it ten cycles to respond with the answer
for (int i = 0; i < 10; ++i) {
network.Cycle();
if (output->IsFiring()) {
gotResponse = true;
}
evolver.Prune();
evolver.Grow();
}
if (gotResponse != expectingResponse) {
std::cout << "wrong!" << std::endl;
network.UpdateLivesWithPain(0.5);
} else {
std::cout << "right!" << std::endl;
}
// Give the network some time to flush out its activity
for (int i = 0; i < 5; ++i) {
network.Cycle();
evolver.Prune();
evolver.Grow();
}
}
return 0;
}