Пример #1
0
void CSoftMaxCPD::GenerateSample(CEvidence* evidence, int maximize) const
{
  //need to check
  //is all parents observed
  int NNodes = m_Domain.size();
  bool isObserved = true;

  for (int node = 0; node < NNodes - 1; node++) 
    if (!evidence->IsNodeObserved(m_Domain[node]))
      isObserved = false;
     
  CPotential *pTabPot;

  if (!isObserved) {
		PNL_THROW(CAlgorithmicException, "all parents must be observed");
	}

  pTabPot = ConvertWithEvidenceToTabularPotential(evidence);

  pTabPot->GenerateSample(evidence);

  delete pTabPot;
}