Ejemplo n.º 1
0
        public Instance GetInstance(int variableCount)
        {
            var formula = new LogicalProductFormula(new List <IFormula>());

            var productLenth = rand.Next(MIN_PRODUCT_LENGTH, MAX_PRODUCT_LENGTH + 1);

            for (var i = 0; i < productLenth; i++)
            {
                var sumFormula = new LogicalSumFormula(new List <IFormula>());
                formula.Formulas.Add(sumFormula);

                var sumLength = rand.Next(MIN_SUM_LENGTH, MAX_SUM_LENGTH + 1);
                for (var j = 0; j < sumLength; j++)
                {
                    var variableIndex  = rand.Next(variableCount);
                    var literalFormula = new LiteralFormula(variableIndex);

                    if (rand.Next(2) == 0)
                    {
                        sumFormula.Formulas.Add(literalFormula);
                    }
                    else
                    {
                        sumFormula.Formulas.Add(new NegateFormula(literalFormula));
                    }
                }
            }

            var instance = new Instance
            {
                Formula = formula,
                Weights = Enumerable.Range(0, variableCount).Select(x => rand.Next(MIN_WEIGHT, MAX_WEIGHT + 1)).ToArray()
            };

            return(instance);
        }
Ejemplo n.º 2
0
 public override string Stringify(LiteralFormula <string> t)
 {
     return(t.Text);
 }