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); }
public override string Stringify(LiteralFormula <string> t) { return(t.Text); }