CMNet* CMNet::CreateWithRandomMatrices( const intVecVector& clqs, CModelDomain* pMD) { CMNet* pMNet = CMNet::Create( clqs, pMD ); pMNet->AllocFactors(); int numFactors = pMNet->GetNumberOfFactors(); int i; for( i = 0; i < numFactors; i++ ) { pMNet->AllocFactor( i ); CFactor* ft = pMNet->GetFactor(i); ft->CreateAllNecessaryMatrices(); } return pMNet; }
CMNet* myCreateDiscreteMNet() { const int numOfNds = 4; const int numOfNodeTypes = 1; const int numOfClqs = 4; intVector clqSizes( numOfClqs, 2 ); int clq0[] = { 0, 1 }; int clq1[] = { 1, 2 }; int clq2[] = { 2, 3 }; int clq3[] = { 3, 0 }; const int *clqs[] = { clq0, clq1, clq2, clq3 }; CNodeType nodeType( 1, 2 ); intVector nodeAssociation( numOfNds, 0 ); CMNet *pMNet = CMNet::Create( numOfNds, numOfNodeTypes, &nodeType, &nodeAssociation.front(), numOfClqs, &clqSizes.front(), clqs ); pMNet->AllocFactors(); float data0[] = { 0.79f, 0.21f, 0.65f, 0.35f }; float data1[] = { 0.91f, 0.09f, 0.22f, 0.78f }; float data2[] = { 0.45f, 0.55f, 0.24f, 0.76f }; float data3[] = { 0.51f, 0.49f, 0.29f, 0.71f }; float *data[] = { data0, data1, data2, data3 }; int i = 0; for( ; i < numOfClqs; ++i ) { pMNet->AllocFactor(i); pMNet->GetFactor(i)->AllocMatrix( data[i], matTable ); } return pMNet; }