public RandomVariable GetRandomVariable(object owner, IContextLookup globalVars) { Domain objDomain; switch (DomainType) { case RandomVariableDomainType.Boolean: objDomain = new BooleanDomain(); break; case RandomVariableDomainType.FiniteInteger: objDomain = new FiniteIntegerDomain(IntValues.ConvertAll <Integer>(intObj => new Integer(intObj)).ToArray()); break; case RandomVariableDomainType.ArbitraryToken: var enumerable = ArbitraryValues.EvaluateTyped(owner, globalVars); var asList = new System.Collections.ArrayList(); foreach (object o in enumerable) { asList.Add(o); } objDomain = new ArbitraryTokenDomain(asList.ToArray()); break; default: throw new ArgumentOutOfRangeException(); } return(new RandVar(Name, objDomain)); }
public IntegerSumProposition(string name, FiniteIntegerDomain sumsDomain, params IRandomVariable[] sums) : base(name) { if (null == sumsDomain) { throw new IllegalArgumentException("Sum Domain must be specified."); } if (null == sums || 0 == sums.Length) { throw new IllegalArgumentException("Sum variables must be specified."); } this.sumsDomain = sumsDomain; foreach (IRandomVariable rv in sums) { addScope(rv); sumVars.Add(rv); } }