C++ 如何控制信号槽机构中的信号流?

C++ 如何控制信号槽机构中的信号流?,c++,qt,signals-slots,C++,Qt,Signals Slots,我正在尝试使用信号和槽机制制作一个神经网络。 我的神经网络不是分层的,所以我有一块隐藏的神经元,它们是随机连接的。所以我可能在我喜欢的结构中有循环。 问题是当我开始从输入神经元发出信号时,第一个输入神经元将信号发送给第一个隐藏神经元,然后我希望我的程序将第二个信号发送给第二个隐藏神经元。但是,第一个接收到信号的隐藏神经元开始发出自己的信号,依此类推。当第一条路径到达末端(输出神经元)时,第一个输入神经元向其第二个隐藏神经元发出第二个信号。这会导致信息部分流动的问题。i、 在某个神经元接收到所有输

我正在尝试使用信号和槽机制制作一个神经网络。 我的神经网络不是分层的,所以我有一块隐藏的神经元,它们是随机连接的。所以我可能在我喜欢的结构中有循环。 问题是当我开始从输入神经元发出信号时,第一个输入神经元将信号发送给第一个隐藏神经元,然后我希望我的程序将第二个信号发送给第二个隐藏神经元。但是,第一个接收到信号的隐藏神经元开始发出自己的信号,依此类推。当第一条路径到达末端(输出神经元)时,第一个输入神经元向其第二个隐藏神经元发出第二个信号。这会导致信息部分流动的问题。i、 在某个神经元接收到所有输入之前,它只根据接收到的一个输入发送一个信号。我试图通过添加一个计数器来解决这个问题,该计数器在接收到所有预期信号后发出信号,而在结构中的循环中,它不起作用。两个神经元在等待另一个发出信号,然后它们就有了完整的信号集。 甚至我尝试在接收所有信号之前传递一个空信号(值为0),并在接收所有信号之后传递完整的信号。这一个不起作用,因为空信号正在累积计数器,它失去了控制

void Neuron::receiveOutput(const int &senderIndex, const double &senderOutput)
{
this->m_sumOfSignals += m_indexedWeights[senderIndex] * senderOutput;
m_receivedSignals.push_back(senderIndex);

qDebug() << "I am neuron " << this->index() << " and I received a signal from neuron "
         << senderIndex << " valued " << senderOutput;
if(m_receivedSignals.size() == m_indexedWeights.size())
{
    m_output = this->activate();
    qDebug() << "I have receieved all " << m_receivedSignals.size() << " signals so I send my output as "
             << m_output;
    m_sumOfSignals = 0.0;
    emit sendOutput(m_index, m_output);
}

if(m_receivedSignals.size() < m_indexedWeights.size())
{
    m_output = this->activate();
    qDebug() << "so far I have receieved " << m_receivedSignals.size() << " signals so I send my output as "
             << m_output;
    emit sendOutput(m_index, 0.0);
}

if(m_receivedSignals.size() > m_indexedWeights.size())
{
    qDebug() << "I have receieved " << m_receivedSignals.size() << " signals so I stoped sending signals";
    return;
}
}
void Neuron::receiveOutput(常量int和senderIndex、常量double和senderOutput)
{
此->m_sumOfSignals+=m_indexedWeights[senderIndex]*senderOutput;
m_收到信号。推回(senderIndex);

qDebug()你有没有考虑过用延迟来代替预期信号的计数?延迟对我有什么帮助,我不明白。你能解释更多吗?只是一个想法:在神经元中,不是计数信号,而是等待一段时间再发出你的信号。我现在通过设置阈值来修复它,但我仍然需要知道如何控制信号流。