void ADMMCut::CreateC(int cut, int rew) { C_.resize(Md_, Md_); vector<Triplet<double>> C_list; vector<double> v_r; vector<double> v_c; for (int i = 0; i < Md_; i++) { int u = ptr_dualgraph_->u(i); int v = ptr_dualgraph_->v(i); C_list.push_back(Triplet<double>(i, i, pow(ptr_dualgraph_->Weight(i), 2) * r_(u, v))); v_r.push_back(r_(u, v)); v_c.push_back(pow(ptr_dualgraph_->Weight(i), 2) * r_(u, v)); } C_.setFromTriplets(C_list.begin(), C_list.end()); string str_c = "Cut_" + to_string(cut) + "_Rew_" + to_string(rew) + "_C"; Statistics s_c(str_c, v_c); s_c.GenerateStdVecFile(); //string str_r = "Cut_" + to_string(cut) + "_Rew_" + to_string(rew) + "_R"; //Statistics s_r(str_r, v_r); //s_r.GenerateStdVecFile(); H1_ = SpMat(Nd_, Nd_); H1_ = A_.transpose() * C_ * A_; }
int main() { Board p; SingleCandidate s_c(&p); SinglePosition s_p(&p); CandidateLines c_l(&p); NakedPairs n_p(&p); int level = 1; getchar(); int changd = 0; while(1){ again: p.display(); getchar(); if(s_c.perform_op()){ changd = 1; goto again; } if(s_p.perform_op()){ level = max(level, 2); changd =1; goto again; } if(c_l.perform_op()){ level = max(level, 3); changd=1; goto again; } if(n_p.perform_op()){ level = max(level, 4); changd=1; goto again; } break; } if(!changd) level = 5; /*while(1) { char g=getchar(); if(g!='\n') p.display(g-'0'); }*/ //s.perform_op(); //p.display(); printf("Board Level:%d\n", level); return 0; }