public void UpdateBatchesData() { try { foreach (var c in m_Batches) { ListExtras.Resize <ScreenshotBatch.ActiveItem>(c.m_ActiveResolutions, m_Resolutions.Count); for (int i = 0; i < m_Resolutions.Count && i < c.m_ActiveResolutions.Count; ++i) { c.m_ActiveResolutions[i].m_Name = m_Resolutions[i].ToString(); c.m_ActiveResolutions[i].m_Id = i; // c.m_ActiveResolutions[i].m_Resolution = m_Resolutions[i]; } ListExtras.Resize <ScreenshotBatch.ActiveItem>(c.m_ActiveCompositions, m_Compositions.Count); for (int i = 0; i < m_Compositions.Count && i < c.m_ActiveCompositions.Count; ++i) { c.m_ActiveCompositions[i].m_Name = m_Compositions[i].m_Name; c.m_ActiveCompositions[i].m_Id = i; // c.m_ActiveCompositions[i].m_Composition = m_Compositions[i]; } } } catch { } }
//default constructor public ProbabilisticGate(List <int> inputsAddress, List <int> outputsAddress, List <List <double> > rawTable, int id) { _id = id; int i, j; inputs = inputsAddress; outputs = outputsAddress; int numInputs = inputs.Count(); int numOutputs = outputs.Count(); ListExtras.Resize(table, 2 ^ numInputs); //normalize each row for (i = 0; i < (2 ^ numInputs); i++) { //for each row (each possible input bit string) ListExtras.Resize(table[i], (2 ^ numOutputs)); // first sum the row double S = 0; for (j = 0; j < (2 ^ numOutputs); j++) { S += rawTable[i][j]; } // now normalize the row if (S == 0.0) { //if all the inputs on this row are 0, then give them all a probability of 1/(2^(number of outputs)) for (j = 0; j < (2 ^ numOutputs); j++) { table[i][j] = 1.0 / (2 ^ numOutputs); } } else { //otherwise divide all values in a row by the sum of the row for (j = 0; j < (2 ^ numOutputs); j++) { table[i][j] = rawTable[i][j] / S; } } } }