Cream.DefaultSolver.InfVariable C# (CSharp) Method

InfVariable() protected method

InfVariable Method
protected InfVariable ( ) : Variable
return Variable
        protected internal virtual Variable InfVariable()
        {
            Variable min = null;
            int infMin = Int32.MaxValue;
            IList<Variable> vars = network.Variables.Cast<Variable>().ToList();

            // we are only concerned about integer domains which size > 1 and they are not value type
            IEnumerable<Variable> nonAssignedVars =
                vars.Where(var => (var.Domain is IntDomain) && (var.Domain.sizeField > 1) && !var.IsValueType);
            foreach (Variable v in nonAssignedVars)
            {
                Domain d = v.Domain;

                int inf = ((IntDomain)d).Minimum();
                if (inf < infMin)
                {
                    min = v;
                    infMin = inf;
                }
            }

            return min;
        }