public void AddBinaryFactor(int factorId, Factorable.BinaryFactor factorFunction, Layer layer, bool enabled = true) { switch (layer) { case Layer.NodeLayer: AddBinaryFactorToLayer(factorId, factorFunction, this.NodeLayer, enabled); break; case Layer.EdgeLayer: AddBinaryFactorToLayer(factorId, factorFunction, this.EdgeLayer, enabled); break; case Layer.GroupLayer: AddBinaryFactorToLayer(factorId, factorFunction, this.GroupLayer, enabled); break; case Layer.AllLayer: AddBinaryFactorToLayer(factorId, factorFunction, this.NodeLayer, enabled); AddBinaryFactorToLayer(factorId, factorFunction, this.EdgeLayer, enabled); AddBinaryFactorToLayer(factorId, factorFunction, this.GroupLayer, enabled); break; default: break; } if (!Lambda.ContainsKey(factorId)) { Lambda.Add(factorId, new Dictionary <byte, double>()); } }
void AddBinaryFactorToLayer <T>(int factorId, Factorable.BinaryFactor factorFunction, List <T> layer, bool enabled = true) where T : Factorable, ILayerNode { layer.ForEach(delegate(T f) { f.AddBinaryFactor(factorId, factorFunction, enabled); }); }