Home > Mateda2.0 > functions > sat > EvaluateSAT.m

# EvaluateSAT

## PURPOSE

[valfun] = EvaluateSAT(solution)

## SYNOPSIS

function[valfun] = EvaluateSAT(solution)

## DESCRIPTION

     [valfun] = EvaluateSAT(solution)
     EvaluateSAT: Evaluates a solution on a set of 3-SAT formulas contained in the
                  global variable Formulas. The output is a multi-objective
                  solution, one component corresponds to the evaluation of one
                  formula.

     INPUTS
     solution: Binary vector
     Formulas{i,j}: Contains the clause j in the formula i. A clause is six
                    component vector. The first three components are the numbers of the
                    variables in the clause. The rest three component indicate whether the
                    literal is negated (0) or not (1).
     OUTPUTS
     valfun: A vector of m components. valfun(i) is the number of clauses
     satisfied in formula i.

     Last version 2/17/2009. Roberto Santana (roberto.santana@ehu.es)

## CROSS-REFERENCE INFORMATION

This function calls:

This function is called by:

## SOURCE CODE

    0001 function[valfun] = EvaluateSAT(solution)
    0002 % [valfun] = EvaluateSAT(solution)
    0003 % EvaluateSAT: Evaluates a solution on a set of 3-SAT formulas contained in the
    0004 %              global variable Formulas. The output is a multi-objective
    0005 %              solution, one component corresponds to the evaluation of one
    0006 %              formula.
    0007 %
    0008 % INPUTS
    0009 % solution: Binary vector
    0010 % Formulas{i,j}: Contains the clause j in the formula i. A clause is six
    0011 %                component vector. The first three components are the numbers of the
    0012 %                variables in the clause. The rest three component indicate whether the
    0013 %                literal is negated (0) or not (1).
    0014 % OUTPUTS
    0015 % valfun: A vector of m components. valfun(i) is the number of clauses
    0016 % satisfied in formula i.
    0017 %
    0018 % Last version 2/17/2009. Roberto Santana (roberto.santana@ehu.es)
    0019
    0020  global Formulas;
    0021
    0022   n = size(solution,2);   % number of variables
    0023   m = size(Formulas,1);   % number of formulas (objectives)
    0024   c = size(Formulas,2);   % number of clauses
    0025   valfun = zeros(1,m);
    0026
    0027   for i=1:m,
    0028     for j=1:c,
    0029       auxclause(1:3) = solution(Formulas{i,j}(1:3));
    0030       auxclause(4:6) = Formulas{i,j}(4:6);
    0031       valfun(i) = valfun(i) + ( xor(auxclause(1),auxclause(4)) + xor(auxclause(2),auxclause(5)) + xor(auxclause(3),auxclause(6)) <3);
    0032     end,
    0033   end,
    0034