本文整理汇总了C#中INetwork.RelaxNetwork方法的典型用法代码示例。如果您正苦于以下问题:C# INetwork.RelaxNetwork方法的具体用法?C# INetwork.RelaxNetwork怎么用?C# INetwork.RelaxNetwork使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类INetwork
的用法示例。
在下文中一共展示了INetwork.RelaxNetwork方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: generateGenome
public virtual NeatGenome.NeatGenome generateGenome(INetwork network)
{
int maxIterations = 2 * (network.TotalNeuronCount - (network.InputNeuronCount + network.OutputNeuronCount)) + 1;
double epsilon = 0.0;
uint firstBias = 0;
uint lastBias = biasCount;
uint firstInput = biasCount;
uint lastInput = biasCount + inputCount;
uint firstOutput = biasCount + inputCount;
uint lastOutput = biasCount + inputCount + outputCount;
uint firstHidden = biasCount + inputCount + outputCount;
uint lastHidden = biasCount + inputCount + outputCount + hiddenCount;
float[] coordinates = new float[4];
float output;
uint connectionCounter = 0;
ConnectionGeneList connections = new ConnectionGeneList();
// give bias inputs to all hidden and output nodes.
// the source of the the link is located at (0,0), the target is each node, and the weight of the link is the second output of CPPN.
coordinates[0] = 0;
coordinates[1] = 0;
for (uint bias = firstBias; bias < lastBias; bias++) {
// link the bias to all hidden nodes.
coordinates[2] = -1 + hiddenDelta / 2.0f;
coordinates[3] = 0;
for (uint hidden = firstHidden; hidden < lastHidden; hidden++) {
coordinates[2] += hiddenDelta;
network.ClearSignals();
network.SetInputSignals(coordinates);
network.RelaxNetwork(maxIterations, epsilon);
output = network.GetOutputSignal(1);
if (Math.Abs(output) > threshold) {
float weight = (float)(((Math.Abs(output) - (threshold)) / (1 - threshold)) * weightRange * Math.Sign(output));
connections.Add(new ConnectionGene(connectionCounter++, bias, hidden, weight));
}
}
// link the bias to all output nodes.
coordinates[2] = -1 + outputDelta / 2.0f;
coordinates[3] = 1;
for (uint outp = firstOutput; outp < lastOutput; outp++) {
coordinates[2] += outputDelta;
network.ClearSignals();
network.SetInputSignals(coordinates);
network.RelaxNetwork(maxIterations, epsilon);
output = network.GetOutputSignal(1);
if (Math.Abs(output) > threshold) {
float weight = (float)(((Math.Abs(output) - (threshold)) / (1 - threshold)) * weightRange * Math.Sign(output));
connections.Add(new ConnectionGene(connectionCounter++, bias, outp, weight));
}
}
}
if (hiddenCount > 0) {
// link all input nodes to all hidden nodes.
coordinates[0] = -1 + inputDelta / 2.0f;
coordinates[1] = -1;
coordinates[2] = -1 + hiddenDelta / 2.0f;
coordinates[3] = 0;
for (uint input = firstInput; input < lastInput; input++) {
coordinates[0] += inputDelta;
coordinates[2] = -1 + hiddenDelta / 2.0f;
for (uint hidden = firstHidden; hidden < lastHidden; hidden++) {
coordinates[2] += hiddenDelta;
network.ClearSignals();
network.SetInputSignals(coordinates);
network.RelaxNetwork(maxIterations, epsilon);
output = network.GetOutputSignal(0);
if (Math.Abs(output) > threshold) {
float weight = (float)(((Math.Abs(output) - (threshold)) / (1 - threshold)) * weightRange * Math.Sign(output));
connections.Add(new ConnectionGene(connectionCounter++, input, hidden, weight));
}
}
}
// link all hidden nodes to all output nodes.
coordinates[0] = -1 + hiddenDelta / 2.0f;
coordinates[1] = 0;
coordinates[2] = -1 + outputDelta / 2.0f;
coordinates[3] = 1;
for (uint hidden = firstHidden; hidden < lastHidden; hidden++) {
coordinates[0] += hiddenDelta;
coordinates[2] = -1 + outputDelta / 2.0f;
for (uint outp = firstOutput; outp < lastOutput; outp++) {
coordinates[2] += outputDelta;
network.ClearSignals();
network.SetInputSignals(coordinates);
network.RelaxNetwork(maxIterations, epsilon);
output = network.GetOutputSignal(0);
if (Math.Abs(output) > threshold) {
float weight = (float)(((Math.Abs(output) - (threshold)) / (1 - threshold)) * weightRange * Math.Sign(output));
connections.Add(new ConnectionGene(connectionCounter++, hidden, outp, weight));
}
}
//.........这里部分代码省略.........