本文整理汇总了C++中Solver::Clauses方法的典型用法代码示例。如果您正苦于以下问题:C++ Solver::Clauses方法的具体用法?C++ Solver::Clauses怎么用?C++ Solver::Clauses使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Solver
的用法示例。
在下文中一共展示了Solver::Clauses方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReadNET
int
main(int argc, char *argv[])
{
int i,j,n;
Solver S;
unsigned atractor_count=0;
unsigned atractor_stats_count=0;
std::vector<Lit> lits;
char command[100];
float avg_length = 0;
std::vector< std::vector<Lit> > orig_clauses;
global_var.orig_clauses = &orig_clauses;
ReadNET(argv[1], S); //ckhong: read networks and then make transition relations with depth 2 by using update functions
//PRINT(orig_clauses.size());
vec<Clause*>* orig_clauses_pr = S.Clauses();
lits.clear();
i=(*orig_clauses_pr).size();
//PRINT(i);
while(i--){
int j=(*((*orig_clauses_pr)[i])).size(); //ckhong: j has the number of literals in each clause
while(j--){
lits.push_back((*((*orig_clauses_pr)[i]))[j]);
}
orig_clauses.push_back( lits );
lits.clear();
}
/*Handle assignments of variables made in solver*/
/*ckhong: what is this for ?*/
/*ckhong: initial state value setting ?*/
i=number_of_var;
while(i--){
if(S.value(i)!= l_Undef){
lits.push_back((S.value(i)==l_True)? Lit(i) : ~Lit(i));
orig_clauses.push_back( lits );
lits.clear();
}
}
//PRINT(orig_clauses.size());
global_var.S = &S;
global_var.number_of_var = number_of_var;
global_var.depth=2;
if(number_of_var<100){ //ckhong: make n-length formula
construct_depth(number_of_var);
}else{
construct_depth(100);
}
//puts("Start searching...");
while(1){
if (!S.solve()) break;
/*ckhong: found valid path*/
for( i=1; i<global_var.depth; i++ ){
if(compare_states(0,i,number_of_var,S.model )){
atractor_count++;
atractor_stats_count+=i;
//PRINT(atractor_stats_count);
//constrain all states of atractor sequence on 0 index variable
//char temp_attr[i*number_of_var];
char tState[number_of_var];
Attractor tAttr;
tAttr.length = i;
for( j = 0; j < i; j++ ){
constrain_state(j, S.model, 0, S, number_of_var );
#ifdef PRINT_STATE
/*ckhong: attractor state print out*/
int a_tmp=j*number_of_var;
int b_tmp=0;
int counter=number_of_var;
while(counter--){
if(S.model[a_tmp] != l_Undef){
//printf( "%s", (S.model[a_tmp]==l_True)?"1":"0");
//sprintf(temp_attr+a_tmp, "%s", (S.model[a_tmp]==l_True)?"1":"0");
sprintf(tState+b_tmp, "%s", (S.model[a_tmp]==l_True)?"1":"0");
}else{
//printf("-");
//sprintf(temp_attr+a_tmp, "-");
sprintf(tState+b_tmp, "-");
}
a_tmp++;
b_tmp++;
}
//.........这里部分代码省略.........