Exemple #1
0
        public static int GenerateAssignment(SatProblem origProblem, IWellAnalyzed algorithm, out VariableAssignment assignment)
        {
            assignment = new VariableAssignment();

            var curProblem = origProblem;

            foreach (var problemVariable in origProblem.Variables)
            {
                var subsProblem0 = SubstituteVaraible(curProblem, problemVariable, false);
                var subsProblem1 = SubstituteVaraible(curProblem, problemVariable, true);

                double W0 = algorithm.GetExpectedValue(subsProblem0);
                double W1 = algorithm.GetExpectedValue(subsProblem1);

                if (W0 <= W1)
                {
                    assignment[problemVariable] = true;
                    curProblem = subsProblem1;
                }
                else
                {
                    assignment[problemVariable] = false;
                    curProblem = subsProblem0;
                }
            }

            return(origProblem.GetNumberOfSatisfiedClauses(assignment));
        }
Exemple #2
0
        public int GenerateAssingment(SatProblem problem, out VariableAssignment assignment)
        {
            assignment = new VariableAssignment();
            foreach (var problemVariable in problem.Variables)
            {
                assignment[problemVariable] = _rand.NextDouble() < _probailities[problemVariable];
            }

            return(problem.GetNumberOfSatisfiedClauses(assignment));
        }