void jecplots(){ gROOT->SetStyle("Plain"); gStyle->SetPalette(1); gStyle->SetOptStat(1111111); // Show overflow, underflow + SumOfWeights gStyle->SetOptFit(111110); gStyle->SetOptFile(1); gStyle->SetMarkerStyle(20); gStyle->SetMarkerSize(.3); gStyle->SetMarkerColor(1); TCanvas* c0 = new TCanvas("c0"," ",200,10,500,500); c0->Clear(); TFile g("/tmp/delre/vbf.root"); TFile g1("/tmp/delre/vbf1.root"); TFile g2("/tmp/delre/vbf2.root"); TFile g3("/tmp/delre/vbf3.root"); TFile g4("/tmp/delre/vbf4.root"); TFile h("/tmp/delre/vh.root"); TFile h1("/tmp/delre/vh1.root"); TFile h2("/tmp/delre/vh2.root"); TFile h3("/tmp/delre/vh3.root"); TFile h4("/tmp/delre/vh4.root"); g.cd(); JECresovbf->SetTitle(""); JECresovbf->SetStats(0); JECresovbf->SetXTitle("(p_{T}^{meas}-p_{T}^{gen}))/p_{T}^{gen}"); JECresovbf->Draw(); g1.cd(); JECresovbf->SetLineColor(kRed); JECresovbf->Draw("same"); g2.cd(); JECresovbf->SetLineColor(kBlue); JECresovbf->Draw("same"); c0->SaveAs("JECsyst_vbf.png"); h.cd(); JECresovh->SetTitle(""); JECresovh->SetStats(0); JECresovh->SetXTitle("(p_{T}^{meas}-p_{T}^{gen}))/p_{T}^{gen}"); JECresovh->Draw(); h1.cd(); JECresovh->SetLineColor(kRed); JECresovh->Draw("same"); h2.cd(); JECresovh->SetLineColor(kBlue); JECresovh->Draw("same"); c0->SaveAs("JECsyst_vh.png"); g4.cd(); JECresovbf->SetLineColor(kRed); JECresovbf->SetTitle(""); JECresovbf->SetStats(0); JECresovbf->SetXTitle("(p_{T}^{meas}-p_{T}^{gen}))/p_{T}^{gen}"); JECresovbf->Draw(); g.cd(); JECresovbf->Draw("same"); g3.cd(); JECresovbf->SetLineColor(kBlue); JECresovbf->Draw("same"); c0->SaveAs("JERsyst_vbf.png"); h4.cd(); JECresovh->SetTitle(""); JECresovh->SetLineColor(kRed); JECresovh->SetStats(0); JECresovh->SetXTitle("(p_{T}^{meas}-p_{T}^{gen}))/p_{T}^{gen}"); JECresovh->Draw(); h.cd(); JECresovh->Draw("same"); h3.cd(); JECresovh->SetLineColor(kBlue); JECresovh->Draw("same"); c0->SaveAs("JERsyst_vh.png"); }
int main () { textmode (ATC_TEXT_MODE); clrscr(); Position::MaxX = 30; Position::MaxY = 30; char pid; Position::MaxX = 30; Position::MaxY = 30; RadarScreen *r; Landmarks l; Traffic t; Plane *p1; Gate g (Position (0, 10), 1, D90); Gate g1 (Position (0, 0), 2, D45); Gate g2 (Position (10, 0), 3, D0); Gate g3 (Position (MAX_X, MAX_Y), 4, D225); // Gate g4 (Position (10, 0), 4, D0); Airport a1 (Position (5, 5), 1, Heading (D90)); Airport a2 (Position (10, 12), 2, Heading (D45)); Beacon b1 (Position (7,13), 1); Beacon b2 (Position (1,1), 2); FlightPath fp (Position (MIN_FIELD_X, MIN_FIELD_Y), Position (MAX_FIELD_X, MAX_FIELD_Y)); FlightPath fp1 (Position (MIN_FIELD_X, MAX_FIELD_Y), Position (MAX_FIELD_X, MIN_FIELD_Y)); FlightPath fp2 (Position (10, 1), Position (10, MAX_FIELD_Y)); int i; l.AddAirport (&a1); l.AddAirport (&a2); l.AddBeacon (&b1); l.AddBeacon (&b2); l.AddGate (&g); l.AddGate (&g1); l.AddGate (&g2); l.AddGate (&g3); // l.AddGate (&g4); l.AddFlightPath (&fp); l.AddFlightPath (&fp1); l.AddFlightPath (&fp2); r = new RadarScreen (&l); Boolean Crashed = False; r->Refresh(); pid = t.NewId(); p1 = new Plane (pid, g.NewPlaneCoords(), Prop, &g1); t.NewAirborne (p1); p1 = new Plane (t.NewId(), g1.NewPlaneCoords(), Jet, &g); t.NewAirborne (p1); p1 = new Plane (t.NewId(), g2.NewPlaneCoords(), Jet, &g); t.NewAirborne (p1); r->DisplayPlanes (&t); for (i = 0; i < 34; i++) { delay (500); if (i == 17) { t.SearchAirborne ('a'); t.FoundAirborne() -> AlterTargHeading (D270, AntiClockwise); t.SearchAirborne ('b'); t.FoundAirborne() -> MakeCircle (AntiClockwise); } r->UnDisplayPlanes (&t); if (i % 2 == 0) { t.StepJets(); } else { t.StepAll(); } r->DisplayPlanes (&t); if (!Crashed && t.Crashed ()) { cout << '\a'; Crashed = True; } } textmode (C80); _setcursortype (_NORMALCURSOR); clrscr(); return 0; }
int main(){ Scalar a("a",STRING,"Hello"); Scalar b("b",STRING,"World"); std::cout << " a : " << a << std::endl; std::cout << " b : " << b << std::endl; Scalar c("c",STRING,"Hello"); std::cout << " c : " << c << std::endl; std::cout << " a == b : " << (a == b) << std::endl; std::cout << " a == c : " << (a == c) << std::endl; std::cout << " a < b : " << (a < b) << std::endl; std::cout << " c < a : " << (c < a) << std::endl; std::cout << " b < a : " << (b < a) << std::endl; Scalar ga("ga",BOOLEAN,"M"); Scalar gb("gb",BOOLEAN,"F"); Scalar gc("gc",BOOLEAN,"F"); Scalar d("d",STRING,"M"); std::cout << " ga : " << ga << std::endl; std::cout << " gb : " << gb << std::endl; std::cout << " gc : " << gc << std::endl; std::cout << " d : " << d << std::endl; std::cout << " (ga == gb) : " << (ga == gb) << std::endl; std::cout << " (gb == gc) : " << (gb == gc) << std::endl; std::cout << " (ga == d) : " << (ga == d) << std::endl; std::cout << " (gb < gc) : " << (gb < gc) << std::endl; std::cout << " (ga < gc) : " << (ga < gc) << std::endl; std::cout << " (gc < ga) : " << (gc < ga) << std::endl; std::cout << " (ga < a) : " << (ga < a) << std::endl; std::cout << " (b < gb) : " << (b < gb) << std::endl; std::cout << "Testing Assignment and Copy operators" << std::endl; Scalar copy1(ga); std::cout << " copy1 of ga : " << copy1 << std::endl; std::cout << " name and type : " << copy1.getName() << " = " << copy1.getValueType() << std::endl; Scalar e("e",STRING,"Namaste"); std::cout << " e : " << e << std::endl; e=ga; std::cout << " e=ga : " << e << std::endl; std::cout << " name and type : " << e.getName() << " = " << e.getValueType() << std::endl; e=a; std::cout << " e=a : " << e << std::endl; std::cout << " name and type : " << e.getName() << " = " << e.getValueType() << std::endl; ga=a; std::cout << " ga=a : " << ga << std::endl; std::cout << " name and type : " << ga.getName() << " = " << ga.getValueType() << std::endl; std::cout << "Testing Scalar variables of type ANY" << std::endl; Scalar anyVar("anyVar"); std::cout << " name and type : " << anyVar.getName() << " = " << anyVar.getValueType() << std::endl; std::cout << " anyVar : " << anyVar << std::endl; std::cout << " anyVar < ga : " << (anyVar < ga) << std::endl; std::cout << " a < anyVar : " << (a < anyVar) << std::endl; std::cout << " a == anyVar : " << (a == anyVar) << std::endl; anyVar.set(STRING,"Wow"); std::cout << " anyVar=Wow : " << anyVar << std::endl; Scalar anyVar1("anyVar1"); std::cout << " anyVar1 : " << anyVar1 << std::endl; std::cout << " name and type : " << anyVar1.getName() << " = " << anyVar1.getValueType() << std::endl; anyVar1 = anyVar; std::cout << " anyVar1=anyVar : " << anyVar1 << std::endl; std::cout << " name and type : " << anyVar1.getName() << " = " << anyVar1.getValueType() << std::endl; Scalar anyVar2("anyVar2"); std::cout << " anyVar2 : " << anyVar2 << std::endl; std::cout << " name and type : " << anyVar2.getName() << " = " << anyVar2.getValueType() << std::endl; anyVar = anyVar2; std::cout << " anyVar=anyVar2 : " << anyVar << std::endl; std::cout << " anyVar name and type : " << anyVar.getName() << " = " << anyVar.getValueType() << std::endl; std::cout << " anyVar2 name and type : " << anyVar2.getName() << " = " << anyVar2.getValueType() << std::endl; Scalar anyType("anyType",ANY,"Testing Any"); std::cout << " anyType : " << anyType << std::endl; std::cout << " name and type : " << anyType.getName() << " = " << anyType.getValueType() << std::endl; std::cout << " anyVar2 < anyType : " << (anyVar2 < anyType) << std::endl; std::cout << " anyVar2 == anyType : " << (anyVar2 == anyType) << std::endl; Scalar g1("g1",GENOTYPE,"120/120"); Scalar g2("g2",GENOTYPE,"120/120"); Scalar g3("g3",GENOTYPE,"112/118"); Scalar g4("g4",GENOTYPE,"C/T"); Scalar g5("g5",GENOTYPE,"A/A"); std::cout << " g1 : " << g1 << std::endl; std::cout << " name and type : " << g1.getName() << " = " << g1.getValueType() << std::endl; anyVar2 = g1; std::cout << " anyVar2=g1 : " << anyVar2 << std::endl; std::cout << " name and type : " << anyVar2.getName() << " = " << anyVar2.getValueType() << std::endl; std::cout << " g2 : " << g2 << std::endl; std::cout << " g3 : " << g3 << std::endl; std::cout << " g4 : " << g4 << std::endl; std::cout << " g5 : " << g5 << std::endl; std::cout << " name and type : " << g5.getName() << " = " << g5.getValueType() << std::endl; std::cout << " g1 < g2 : " << (g1 < g2) << std::endl; std::cout << " g2 == g1 : " << (g2 == g1) << std::endl; std::cout << " g5 < g4 : " << (g5 < g4) << std::endl; std::cout << " g2 < g4 : " << (g2 < g4) << std::endl; std::cout << " g2 < e : " << (g2 < e) << std::endl; std::cout << " ga == g2 : " << (ga == g2) << std::endl; Scalar f("f",STRING,"123/125"); Scalar g6Any("g6Any"); std::cout << " g6Any : " << g6Any << std::endl; std::cout << " name and type : " << g6Any.getName() << " = " << g6Any.getValueType() << std::endl; g6Any = f; std::cout << " g6Any=f : " << g6Any << std::endl; std::cout << " name and type : " << g6Any.getName() << " = " << g6Any.getValueType() << std::endl; g3 = g6Any; std::cout << " g3=g6Any : " << g3 << std::endl; std::cout << " name and type : " << g3.getName() << " = " << g3.getValueType() << std::endl; Scalar g7Inv("g7Inv"); g7Inv.set(GENOTYPE,"0/0"); std::cout << " g7Inv : " << g7Inv << std::endl; std::cout << " name and type : " << g7Inv.getName() << " = " << g7Inv.getValueType() << std::endl; Scalar d1("d1",DATE,"1987-08-23"); Scalar d2("d2",DATE,"1987-08"); Scalar d3("d3",DATE,"[1987-1990]"); Scalar d4("d4",DATE,"~2000-02-13"); Scalar d5("d5",DATE,"1948"); Scalar d6Any("d6Any"); std::cout << " d1 : " << d1 << std::endl; std::cout << " name and type : " << d1.getName() << " = " << d1.getValueType() << std::endl; std::cout << " d6Any : " << d6Any << std::endl; std::cout << " name and type : " << d6Any.getName() << " = " << d6Any.getValueType() << std::endl; d6Any = d1; std::cout << " d6Any=d1 : " << d6Any << std::endl; std::cout << " name and type : " << d6Any.getName() << " = " << d6Any.getValueType() << std::endl; std::cout << " d2 : " << d2 << std::endl; std::cout << " d3 : " << d3 << std::endl; std::cout << " d4 : " << d4 << std::endl; std::cout << " d5 : " << d5 << std::endl; Scalar d7Inv("d7Inv"); d7Inv.set(DATE,"2003-[03-04-12"); std::cout << " d7Inv : " << d7Inv << std::endl; std::cout << " name and type : " << d7Inv.getName() << " = " << d7Inv.getValueType() << std::endl; std::cout << " d1 < d2 : " << (d1 < d2) << std::endl; std::cout << " d2 == d1 : " << (d2 == d1) << std::endl; std::cout << " d2 == d3 : " << (d2 == d3) << std::endl; std::cout << " d3 < d2 : " << (d3 < d2) << std::endl; std::cout << " d5 < d4 : " << (d5 < d4) << std::endl; std::cout << " d2 < d4 : " << (d2 < d4) << std::endl; std::cout << " d2 < e : " << (d2 < e) << std::endl; std::cout << " ga == d2 : " << (ga == d2) << std::endl; Scalar d8Copy(d4); std::cout << " Copy of d4 : " << d8Copy << std::endl; std::cout << " name and type : " << d8Copy.getName() << " = " << d8Copy.getValueType() << std::endl; std::cout << " d4 == d8Copy : " << (d4 == d8Copy) << std::endl; Scalar n1("n1",NUMBER,"19-23"); Scalar n2("n2",NUMBER,"18-38"); Scalar n3("n3",NUMBER,"17"); Scalar n4("n4",NUMBER,"~20"); Scalar n5("n5",NUMBER,"48"); Scalar n6Any("n6Any"); std::cout << " n1 : " << n1 << std::endl; std::cout << " name and type : " << n1.getName() << " = " << n1.getValueType() << std::endl; std::cout << " n6Any : " << n6Any << std::endl; std::cout << " name and type : " << n6Any.getName() << " = " << n6Any.getValueType() << std::endl; n6Any = n1; std::cout << " n6Any=n1 : " << n6Any << std::endl; std::cout << " name and type : " << n6Any.getName() << " = " << n6Any.getValueType() << std::endl; std::cout << " n2 : " << n2 << std::endl; std::cout << " n3 : " << n3 << std::endl; std::cout << " n4 : " << n4 << std::endl; std::cout << " n5 : " << n5 << std::endl; Scalar n7Inv("n7Inv"); n7Inv.set(NUMBER,"2003-["); std::cout << " n7Inv : " << n7Inv << std::endl; std::cout << " name and type : " << n7Inv.getName() << " = " << n7Inv.getValueType() << std::endl; std::cout << " n1 < n2 : " << (n1 < n2) << std::endl; std::cout << " n2 == n1 : " << (n2 == n1) << std::endl; std::cout << " n2 == n3 : " << (n2 == n3) << std::endl; std::cout << " n3 < n2 : " << (n3 < n2) << std::endl; std::cout << " n5 < n4 : " << (n5 < n4) << std::endl; std::cout << " n2 < n4 : " << (n2 < n4) << std::endl; std::cout << " n2 < e : " << (n2 < e) << std::endl; std::cout << " ga == n2 : " << (ga == n2) << std::endl; Scalar n8Copy(n4); std::cout << " Copy of n4 : " << n8Copy << std::endl; std::cout << " name and type : " << n8Copy.getName() << " = " << n8Copy.getValueType() << std::endl; std::cout << " n4 == n8Copy : " << (n4 == n8Copy) << std::endl; Number::addNumberMissingValue("99"); std::cout << "Added 99 as Number missing value" << std::endl; Scalar n8("n8",NUMBER,"99"); std::cout << " n8=99 : " << n8 << std::endl; return 0; }
int g4(int a1, int a2, int a3, int a4) const { g3(a1, a2, a3); g1(a4); return 0; }
void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); gluLookAt(r*cos(c*du), h, r*sin(c*du), 0, 0, 0, 0, 3, 0); //head position;eye direction(0.0,0.0,0.0),original point;(0.0,1.0,0.0),head above direction¡£ //cylinder a(1, 15, 0, 90, 0, 0, 5, 0); //r,h,xangle yangle zangle, module position(xx yy zz) //sphere b(3, 100, 100, 0, 0, 0, 0, 2.5, 0); //r,xangle yangle zangle, module position(xx yy zz) //cube c(5, 10, 0, 0, 1, 1, 1); //length xangle yangle zangle, module position(xx yy zz) //rectangularpyramid d(4, 0, 0, 0, 0, 2, 0); //length xangle yangle zangle, module position(xx yy zz) //triangularpyramid f(2, 0, 0, 0, 8, 8, 8);//length xangle yangle zangle, module position(xx yy zz) //f.draw(); sphere sp(3, 100, 100, 0, 0, -2, 0, 8, 0); cylinder cy(3, 5, 0, 90, 0, -3, 9, -10); cube cu(3, 0, 0, 0, 0, 8, 10); triangularpyramid tr(2, 0, 0, 0, 0, -6, 8); rectangularpyramid rec(2, 0, 0, 0, 0, -6, -8); cylinder k1(0.3, 2, 90, 0, 0, 0, 0, 0); cylinder k2(0.3, 2, -90, 0, 0, 0, 0, 0); cylinder k3(0.3, 2, -45, 0, 0, 0, 0, 0); cylinder k4(0.3, 2.5, 45, 0, 0, 0, 0, 0); cylinder u1(0.3, 2, 90, 0, 0, 0, 0, 3); cylinder u2(0.3, 1.5, -90, 0, 0, 0, 0, 3); cylinder u3(0.3, 2, 0, 0, 0, 0, -1.8, 3); cylinder u4(0.3, 2, 90, 0, 0, 0, 0, 5); cylinder u5(0.3, 1.5, -90, 0, 0, 0, 0, 5); cylinder g1(0.3, 2, -90, 0, 0, 0, -0.5, 6.4); cylinder g2(0.3, 1.5, -90, 0, 0, 0, -0.5, 6.4); cylinder g3(0.3, 2, 0, 0, 0, 0, -0.3, 6.4); cylinder g4(0.3, 2, 0, 0, 0, 0, 1.3, 6.4); cylinder g5(0.3, 2, 90, 0, 0, 0, 0, 8.4); cylinder g6(0.3, 1.5, -90, 0, 0, 0, 0, 8.4); cylinder g7(0.3, 2, 0, 0, 0, 0, -1.8, 6.4); cylinder e1(0.3, 1.8, -90, 0, 0, 0, -0.2, 10); cylinder e2(0.3, 1.8, 90, 0, 0, 0, -0.2, 10); cylinder e3(0.3, 2, 0, 0, 0, 0, -0.3, 10); cylinder e4(0.3, 2, 0, 0, 0, 0, 1.3, 10); cylinder e5(0.3, 2, 0, 0, 0, 0, -1.8, 10); cylinder r1(0.3, 1.8, -90, 0, 0, 0, -0.2, 13.5); cylinder r2(0.3, 1.8, 90, 0, 0, 0, -0.2, 13.5); cylinder r3(0.3, 2, 0, 0, 0, 0, -0.3, 13.5); cylinder r4(0.3, 1.2, 0, 0, 0, 0, 1.3, 13.5); cylinder r5(0.3, 1.7, 60, 0, 0, 0, 1.3, 14.5); cylinder r6(0.3, 2.5, 45, 0, 0, 0, 0, 13.5); cylinder c1(0.3, 2, 90, 0, 0, 0, 0, -15); cylinder c2(0.3, 2, -90, 0, 0, 0, 0, -15); cylinder c3(0.3, 3, 0, 0, 0, 0, -1.8, -15); cylinder c4(0.3, 3, 0, 0, 0, 0, 1.8, -15); cylinder plus1(0.3,3.5, 0, 0, 0, 0, 0, -11); cylinder plus2(0.3, 4, 90, 0, 0, 0, 2, -9.2); cylinder plus3(0.3, 3.5, 0, 0, 0, 0, 0, -6); cylinder plus4(0.3, 4, 90, 0, 0, 0, 2, -4.2); cy.draw(); sp.draw(); cu.draw(); tr.draw(); rec.draw(); k1.draw(); k2.draw(); k3.draw(); k4.draw(); u1.draw(); u2.draw(); u3.draw(); u4.draw(); u5.draw(); g1.draw(); g2.draw(); g3.draw(); g4.draw(); g5.draw(); g6.draw(); g7.draw(); e1.draw(); e2.draw(); e3.draw(); e4.draw(); e5.draw(); r1.draw(); r2.draw(); r3.draw(); r4.draw(); r5.draw(); r6.draw(); c1.draw(); c2.draw(); c3.draw(); c4.draw(); plus1.draw(); plus2.draw(); plus3.draw(); plus4.draw(); glFlush(); }
template <class T> decltype(g3(T())) f3() { return g3(T()); }
void test1(int n) { Normal nn; Uniform uniform; cout << "Print 20 N(0,1) random numbers - should be the same as in sample output" << endl; { Format F; F.FormatType(Format::DEC_FIGS); F.Precision(12); F.Width(15); for (int i=0; i<20; i++) cout << F << nn.Next() << endl; } cout << endl; cout << "Print histograms of data from a variety distributions" << endl; cout << "Histograms should be close to those in sample output" << endl; cout << "s. mean and s. var should be close to p. mean and s. mean" << endl << endl; { Constant c(5.0); Histogram(&c, n); } { Uniform u; Histogram(&u, n); } { SumRandom sr=uniform(3)-1.5; Histogram(&sr, n); } { SumRandom sr=uniform-uniform; Histogram(&sr, n); } { Normal normal; Histogram(&normal, n); } { Cauchy cauchy; Histogram(&cauchy, n); } { AsymGenX normal10(NORMAL10, 10.0); Histogram(&normal10, n); } cout << "Mean and variance should be 10.0 and 4.0" << endl; { AsymGenX uniform2(UNIF,0.5); Histogram(&uniform2, n); } cout << "Mean and variance should be 0.5 and 0.083333" << endl; { SymGenX triang(TRIANG); Histogram(&triang, n); } cout << "Mean and variance should be 0 and 0.16667" << endl; { Poisson p(0.25); Histogram(&p, n); } { Poisson p(10.0); Histogram(&p, n); } { Poisson p(16.0); Histogram(&p, n); } { Binomial b(18,0.3); Histogram(&b, n); } { Binomial b(19,0.3); Histogram(&b, n); } { Binomial b(20,0.3); Histogram(&b, n); } { Binomial b(58,0.3); Histogram(&b, n); } { Binomial b(59,0.3); Histogram(&b, n); } { Binomial b(60,0.3); Histogram(&b, n); } { Binomial b(18,0.05); Histogram(&b, n); } { Binomial b(19,0.05); Histogram(&b, n); } { Binomial b(20,0.05); Histogram(&b, n); } { Binomial b(98,0.01); Histogram(&b, n); } { Binomial b(99,0.01); Histogram(&b, n); } { Binomial b(100,0.01); Histogram(&b, n); } { Binomial b(18,0.95); Histogram(&b, n); } { Binomial b(19,0.95); Histogram(&b, n); } { Binomial b(20,0.95); Histogram(&b, n); } { Binomial b(98,0.99); Histogram(&b, n); } { Binomial b(99,0.99); Histogram(&b, n); } { Binomial b(100,0.99); Histogram(&b, n); } { NegativeBinomial nb(100,6.0); Histogram(&nb, n); } { NegativeBinomial nb(11,9.0); Histogram(&nb, n); } { NegativeBinomial nb(11,1.9); Histogram(&nb, n); } { NegativeBinomial nb(11,0.10); Histogram(&nb, n); } { NegativeBinomial nb(1.5,1.9); Histogram(&nb, n); } { NegativeBinomial nb(1.0,1.9); Histogram(&nb, n); } { NegativeBinomial nb(0.3,19); Histogram(&nb, n); } { NegativeBinomial nb(0.3,1.9); Histogram(&nb, n); } { NegativeBinomial nb(0.3,0.05); Histogram(&nb, n); } { NegativeBinomial nb(100.8,0.18); Histogram(&nb, n); } { ChiSq c(1,2.0); Histogram(&c, n); } { ChiSq c(2,2.0); Histogram(&c, n); } { ChiSq c(3,2.0); Histogram(&c, n); } { ChiSq c(4,2.0); Histogram(&c, n); } { ChiSq c(1 ); Histogram(&c, n); } { ChiSq c(2 ); Histogram(&c, n); } { ChiSq c(3 ); Histogram(&c, n); } { ChiSq c(4 ); Histogram(&c, n); } { Gamma g1(1.0); Histogram(&g1, n); } { Gamma g2(0.5); Histogram(&g2, n); } { Gamma g3(1.01); Histogram(&g3, n); } { Gamma g4(2.0); Histogram(&g4, n); } { Pareto p1(0.5); Histogram(&p1, n); } { Pareto p2(1.5); Histogram(&p2, n); } { Pareto p3(2.5); Histogram(&p3, n); } { Pareto p4(4.5); Histogram(&p4, n); } Real probs[]={.1,.3,.05,.11,.05,.04,.05,.05,.1,.15}; Real val[]={2,3,4,6,8,12,16,24,32,48}; { DiscreteGen discrete(10,probs); Histogram(&discrete, n); } { DiscreteGen discrete(10,probs,val); Histogram(&discrete, n); } }
int main() { //The grid will be fined by an axis aligned bounding box... Eigen::AlignedBox<double,3> m(Eigen::Vector3d(0,0,0),Eigen::Vector3d(1,1,1)); //In order to have all grids created be consistent wit heach other you need to make them //from a factory MACGridFactory<double,3> factory(Eigen::Vector3i(10,10,10),m); //After you have a factory you can create a grid rather easily! auto&& g = factory.create<mtao::UGrid>(); std::cout << g.size() << std::endl; std::cout << g.N().transpose() << std::endl; std::cout << g.origin().transpose() << std::endl; std::cout << g.dx().transpose() << std::endl; //Here's a vertex-centered one (VGrid is already taken so I use N for nodal) auto&& g2 = factory.create<mtao::NGrid>(); std::cout << g2.size() << std::endl; std::cout << g2.N().transpose() << std::endl; std::cout << g2.indexToWorld(0,0,0).transpose() << std::endl; std::cout << g2.dx().transpose() << std::endl; //Individual elements can be accessed like this: g2(0,0,0) = 1; //Interpolating is done through lerp on a world space vector auto&& v = g2.lerp(Eigen::Vector3d(0.01,0.01,0.01)); std::cout << "Value" << v << std::endl; g2(0,0,0) = 1; g2(0,1,0) = 1; g2(0,1,1) = 1; g2(0,0,1) = 1; v = g2.lerp(Eigen::Vector3d(0.05,0.05,0.05)); std::cout << "Value" << v << std::endl; Eigen::AlignedBox<double,2> m2(Eigen::Vector2d(0,0),Eigen::Vector2d(1,1)); MACGridFactory<double,2> factory2(Eigen::Vector2i(10,10),m2); auto&& g3 = factory2.create<mtao::CGrid>(); std::cout << g3.size() << std::endl; std::cout << g3.N().transpose() << std::endl; std::cout << g3.origin().transpose() << std::endl; std::cout << g3.dx().transpose() << std::endl; //Can use fill because we forward std::vector iterators! std::fill(g3.begin(),g3.end(),3); g3(3,4) = 20; //Range for loops work too! for(auto&& v: g3) { std::cout << v << " "; } std::cout << std::endl; g3.loop([](double v)->double{ return 2*v; }); for(auto&& v: g3) { std::cout << v << " "; } std::cout << std::endl; Eigen::Vector2d center = factory2.bbox().center(); g3.loop([&](const Eigen::Vector2i& c, double v)->double{ return (g3.indexToWorld(c)-center).norm()-.3; }); for(auto&& v: g3) { std::cout << v << " "; } std::cout << std::endl; auto&& a = factory2.createManagedPtr<mtao::CGrid>(); auto&& b = factory2.createManagedPtr<mtao::CGrid>(); auto&& c = factory2.createManagedPtr<mtao::NGrid>(); auto&& d = factory2.createManagedPtr<mtao::UGrid>(); Eigen::Vector2i coord(2,2); a->indexToWorld(coord); b->indexToWorld(coord); c->indexToWorld(coord); d->indexToWorld(coord); std::cout << factory2.create<mtao::CGrid>().indexToWorld(coord).transpose() << std::endl; std::cout << factory2.create<mtao::UGrid>().indexToWorld(coord).transpose() << std::endl; std::cout << factory2.create<mtao::VGrid>().indexToWorld(coord).transpose() << std::endl; std::cout << factory2.create<mtao::NGrid>().indexToWorld(coord).transpose() << std::endl; std::cout << std::endl << "Resize test: " << std::endl; std::cout << a->indexToWorld(coord).transpose() << std::endl; std::cout << b->indexToWorld(coord).transpose() << std::endl; std::cout << c->indexToWorld(coord).transpose() << std::endl; std::cout << d->indexToWorld(coord).transpose() << std::endl; std::cout << std::endl; factory2.resize(Eigen::Vector2i(30,30)); std::cout << a->indexToWorld(coord).transpose() << std::endl; std::cout << b->indexToWorld(coord).transpose() << std::endl; std::cout << c->indexToWorld(coord).transpose() << std::endl; std::cout << d->indexToWorld(coord).transpose() << std::endl; auto&& f1 = factory2.indexToWorldIntegralFunction<mtao::CGrid>(); std::cout << f1(coord) << std::endl; }
void makePlots2() { gROOT->ProcessLine(".x lhcbStyle.C"); gStyle->SetOptStat(0); Double_t ignore, eff, massfit1, massfit2, bias1, bias2; Double_t value[6][19], stat[6][19], syst[6][19]; Int_t ng(4); TH1D pull("pull","",15,-3.0,3.0); std::ifstream fin("errs.dat"); fin.ignore(256,'\n'); for(Int_t q=0; q<19; ++q) { for(Int_t g=1; g<ng+1; ++g) { fin >> ignore >> ignore >> value[g+1][q] >> stat[g+1][q] >> eff >> massfit1 >> massfit2 >> bias1 >> bias2; syst[g+1][q] = TMath::Sqrt(stat[g+1][q]*stat[g+1][q] + eff*eff + massfit1*massfit1 + massfit2*massfit2 + bias1*bias1 + bias2*bias2); //plot syst errors on top of stats if(q<17) pull.Fill(value[g+1][q]/syst[g+1][q]); } value[0][q] = value[2][q]; stat[0][q] = stat[2][q]; syst[0][q] = syst[2][q]; value[1][q] = 2*value[3][q]+1; stat[1][q] = 2*stat[3][q]; syst[1][q] = 2*syst[3][q]; } fin.close(); Double_t xs[19] = { 0.54, 1.55, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 11.375, 12.125, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 3.55, 18.5}; Double_t exs[19] = { 0.44, 0.45, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.375, 0.375, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 2.45, 3.5}; TCanvas c; TF1 gaus("gaus","gaus(0)",-3.,3.); gaus.SetParameter(0,68); gaus.SetParameter(1,pull.GetBinCenter(pull.GetMaximumBin())); gaus.SetParameter(2,pull.GetStdDev()); gaus.SetParLimits(1,-2.0,2.0); gaus.SetParLimits(2,0.3,3.0); pull.Fit(&gaus,"S"); pull.Draw(); c.SaveAs("gPulls.pdf"); for(Int_t i=0; i<ng+2; ++i) { TString varName(""); TString varName2(""); switch(i) { case 0: varName="A_{FB}"; varName2="AFB"; break; case 1: varName="F_{H}"; varName2="FH"; break; default: varName="G^{("; varName+=(i-1); varName+=")}"; varName2="G"; varName2+=(i-1); } Double_t yMin = getMin(19,value[i])-getMax(19,syst[i]); Double_t yMax = getMax(19,value[i])+getMax(19,syst[i]); if(yMax-yMin == 0) continue; TH2D h("h","",1,0.0,22.,1,yMin,yMax); TLine l(0.0,0.0,22.0,0.0); l.SetLineStyle(kDashed); l.SetLineColor(kRed); h.GetYaxis()->SetTitle(varName); h.GetXaxis()->SetTitle("q^{2} [GeV^{2}/c^{4}]"); TGraphErrors g1(17,xs, value[i], exs, stat[i] ); TGraphErrors g2( 2,xs+17,value[i]+17,exs+17,stat[i]+17); TGraphErrors g3(17,xs, value[i], exs, syst[i] ); TGraphErrors g4( 2,xs+17,value[i]+17,exs+17,syst[i]+17); g2.SetLineColor(kBlue); g2.SetMarkerColor(kBlue); g3.SetLineColor(kRed); g4.SetLineColor(kRed); g2.SetFillColor(kBlue); g4.SetFillColor(kRed); g2.SetFillStyle(3001); g4.SetFillStyle(3002); h.Draw(); l.Draw(); g4.Draw("E2same"); g2.Draw("E2same"); g3.Draw("PEsame"); g1.Draw("PEsame"); c.SaveAs("plots/fromPatrickNew/"+varName2+".pdf"); c.SaveAs("plots/fromPatrickNew/"+varName2+".png"); } }
void g4(int a1, int a2, int a3, int a4) const { g3(a1, a2, a3); g1(a4); }
TEST(McmcDenseEMetric, gradients) { rng_t base_rng(0); Eigen::VectorXd q = Eigen::VectorXd::Ones(11); stan::mcmc::dense_e_point z(q.size()); z.q = q; z.p.setOnes(); std::fstream data_stream(std::string("").c_str(), std::fstream::in); stan::io::dump data_var_context(data_stream); data_stream.close(); std::stringstream model_output; std::stringstream debug, info, warn, error, fatal; stan::callbacks::stream_logger logger(debug, info, warn, error, fatal); funnel_model_namespace::funnel_model model(data_var_context, &model_output); stan::mcmc::dense_e_metric<funnel_model_namespace::funnel_model, rng_t> metric(model); double epsilon = 1e-6; metric.init(z, logger); Eigen::VectorXd g1 = metric.dtau_dq(z, logger); for (int i = 0; i < z.q.size(); ++i) { double delta = 0; z.q(i) += epsilon; metric.update_potential(z, logger); delta += metric.tau(z); z.q(i) -= 2 * epsilon; metric.update_potential(z, logger); delta -= metric.tau(z); z.q(i) += epsilon; metric.update_potential(z, logger); delta /= 2 * epsilon; EXPECT_NEAR(delta, g1(i), epsilon); } Eigen::VectorXd g2 = metric.dtau_dp(z); for (int i = 0; i < z.q.size(); ++i) { double delta = 0; z.p(i) += epsilon; delta += metric.tau(z); z.p(i) -= 2 * epsilon; delta -= metric.tau(z); z.p(i) += epsilon; delta /= 2 * epsilon; EXPECT_NEAR(delta, g2(i), epsilon); } Eigen::VectorXd g3 = metric.dphi_dq(z, logger); for (int i = 0; i < z.q.size(); ++i) { double delta = 0; z.q(i) += epsilon; metric.update_potential(z, logger); delta += metric.phi(z); z.q(i) -= 2 * epsilon; metric.update_potential(z, logger); delta -= metric.phi(z); z.q(i) += epsilon; metric.update_potential(z, logger); delta /= 2 * epsilon; EXPECT_NEAR(delta, g3(i), epsilon); } EXPECT_EQ("", model_output.str()); EXPECT_EQ("", debug.str()); EXPECT_EQ("", info.str()); EXPECT_EQ("", warn.str()); EXPECT_EQ("", error.str()); EXPECT_EQ("", fatal.str()); }
void test() { g1(X1()); g2(X2()); g3(X3()); g4(X4<int>()); }
int main (void) { return g0 () + g1 (1) + g2 (1, 2) + g3 (1, 2, 3) + g4 (1, 2, 3, 4); }
G<T>& operator+= (const G<T>& x) { for (E<T> i = x.g2 (); i != x.g1 (); ++i) g3 (*i); return *this; }
int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); jcz::TileFactory * tileFactory = new jcz::TileFactory(); RandomNextTileProvider rntp; Game * game = new Game(&rntp); qDebug("NODE_VARIANT: " STR(NODE_VARIANT)); if (false) { qDebug() << "CONTROL_GAME" << CONTROL_GAME; for (int i = 0; i < 10000; ++i) { qDebug() << "================================\nRUN" << i; Game g1(&rntp), g2(&rntp), g3(&rntp), g4(&rntp), g5(&rntp); Q_ASSERT(g1.equals(g2)); Q_ASSERT(g2.equals(g1)); g1.addPlayer(&RandomPlayer::instance); g1.addPlayer(&RandomPlayer::instance); // g1.addPlayer(new jcz::JCZPlayer(tileFactory)); for (Player * p : g1.getPlayers()) { g2.addPlayer(p->clone()); g3.addPlayer(p->clone()); g4.addPlayer(p->clone()); g5.addPlayer(p->clone()); } Q_ASSERT(g1.equals(g2)); Q_ASSERT(g2.equals(g1)); g1.newGame(Tile::BaseGame, tileFactory); g2.newGame(Tile::BaseGame, tileFactory); g4.newGame(Tile::BaseGame, tileFactory); g5.newGame(Tile::BaseGame, tileFactory); Q_ASSERT(g1.equals(g2)); Q_ASSERT(g2.equals(g1)); int steps = 0; bool notDone = true; //for ( ; steps < 23; ++steps) for ( ; notDone; ++steps) { notDone = g1.step(); MoveHistoryEntry const & e = g1.getMoveHistory().back(); g4.simStep(e); g5.simPartStepChance(e.tileIndex); g5.simPartStepTile(e.move.tileMove); g5.simPartStepMeeple(e.move.meepleMove); Q_ASSERT(g1.equals(g4)); Q_ASSERT(g4.equals(g1)); Q_ASSERT(g1.equals(g5)); Q_ASSERT(g5.equals(g1)); #if CONTROL_GAME g3.newGame(Tile::BaseGame, tileFactory, g1.getMoveHistory()); Q_ASSERT(g1.equals(g3)); Q_ASSERT(g3.equals(g1)); #endif } for (int i = 0; i < steps; ++i) { g1.simUndo(); g4.simUndo(); g5.simPartUndoMeeple(); g5.simPartUndoTile(); g5.simPartUndoChance(); Q_ASSERT(g1.equals(g4)); Q_ASSERT(g4.equals(g1)); Q_ASSERT(g1.equals(g5)); Q_ASSERT(g5.equals(g1)); #if CONTROL_GAME g3.newGame(Tile::BaseGame, tileFactory, g1.getMoveHistory()); Q_ASSERT(g1.equals(g3)); Q_ASSERT(g3.equals(g1)); #endif } Q_ASSERT(g1.equals(g2)); Q_ASSERT(g2.equals(g1)); } return 0; } if (true) { static int const playouts = 5000; Game g(&rntp); g.addPlayer(&RandomPlayer::instance); g.addPlayer(&RandomPlayer::instance); // g.addPlayer(new jcz::JCZPlayer(tileFactory)); // g.addPlayer(new jcz::JCZPlayer(tileFactory)); // g.addPlayer(new SimplePlayer()); QTime t; t.start(); for (int i = 0; i < playouts; ++i) { g.newGame(Tile::BaseGame, tileFactory); int steps = 0; do { ++steps; } while (g.step()); } int e = t.elapsed(); std::cout << playouts << "p / " << e << "ms = " << playouts / (e / 1000.0) << " pps" << std::endl; // return 0; } if (true) { static int const playouts = 5000; Game g(&rntp); g.addPlayer(&RandomPlayer::instance); g.addPlayer(&RandomPlayer::instance); // g.addPlayer(new SimplePlayer()); g.newGame(Tile::BaseGame, tileFactory); QTime t; t.start(); for (int i = 0; i < playouts; ++i) { int steps = 0; do { ++steps; } while (g.step()); for (; steps > 0; --steps) { g.simUndo(); } } int e = t.elapsed(); std::cout << playouts << "p / " << e << "ms = " << playouts / (e / 1000.0) << " pps" << std::endl; return 0; } if (false) { Player * p1 = &RandomPlayer::instance; // auto * p2 = new MonteCarloPlayer<>(tileFactory); auto * p2 = new MonteCarloPlayer2<>(tileFactory); game->addPlayer(p1); game->addPlayer(p2); QTime t; int const n = 5; t.start(); for (int i = 0; i < n; ++i) { #if !COUNT_PLAYOUTS t.start(); #endif game->newGame(Tile::BaseGame, tileFactory); for (int ply = 0; game->step(); ++ply) { // std::cout << ply << std::endl; } int e = t.elapsed(); #if COUNT_PLAYOUTS std::cout << i << " " << p2->playouts << "p / " << e << "ms = " << (p2->playouts) / (e / 1000.0) << " pps" << std::endl; #else std::cout << i << " " << e << std::endl; #endif } std::cout << (t.elapsed() / n) << std::endl; return 0; } if (true) { Player * p1 = &RandomPlayer::instance; auto * p2 = new MCTSPlayer<>(tileFactory); game->addPlayer(p1); game->addPlayer(p2); QTime t; int const n = 5; t.start(); for (int i = 0; i < n; ++i) { #if !COUNT_PLAYOUTS t.start(); #endif game->newGame(Tile::BaseGame, tileFactory); for (int ply = 0; game->step(); ++ply) { // std::cout << "ply " << ply << std::endl; } int e = t.elapsed(); #if COUNT_PLAYOUTS std::cout << i << " " << p2->playouts << "p / " << e << "ms = " << (p2->playouts) / (e / 1000.0) << " pps" << std::endl; #else std::cout << i << " " << e << std::endl; #endif #if MCTS_COUNT_EXPAND_HITS std::cout << i << " " << p2->hit << "hits / " << p2->miss << "misses = " << (p2->hit / qreal(p2->miss)) << std::endl; #endif } std::cout << (qreal(t.elapsed()) / qreal(n)) << std::endl; return 0; } if (false) { SimplePlayer3 s3; game->addPlayer(&s3); game->newGame(Tile::BaseGame, tileFactory); forever { game->simStep(&RandomPlayer::instance); if (game->getPlayerMeeples(0) <= 0) break; } qDebug() << game->getPlayerMeeples(0); forever { game->simStep(&s3); if (game->getPlayerMeeples(0) > 0) break; } qDebug() << game->getPlayerMeeples(0); qDebug(); MoveHistoryEntry h = game->getMoveHistory().back(); game->undo(); qDebug() << "m" << game->getPlayerMeeples(0); // qDebug() << "r" << game->getPlayerReturnMeeples(0); game->simStep(h); qDebug() << "m" << game->getPlayerMeeples(0); // qDebug() << "r" << game->getPlayerReturnMeeples(0); game->undo(); qDebug() << "m" << game->getPlayerMeeples(0); // qDebug() << "r" << game->getPlayerReturnMeeples(0); qDebug(); qDebug("simPartStepChance"); game->simPartStepChance(h.tileIndex); qDebug() << "m" << game->getPlayerMeeples(0); // qDebug() << "r" << game->getPlayerReturnMeeples(0); qDebug("simPartStepTile"); game->simPartStepTile(h.move.tileMove); qDebug() << "m" << game->getPlayerMeeples(0); // qDebug() << "r" << game->getPlayerReturnMeeples(0); qDebug() << "placements" << game->getPossibleMeeplePlacements(0, game->simTile).size(); qDebug("simPartStepMeeple"); game->simPartStepMeeple(h.move.meepleMove); qDebug() << "m" << game->getPlayerMeeples(0); // qDebug() << "r" << game->getPlayerReturnMeeples(0); qDebug(); qDebug(); qDebug("simPartUndoMeeple"); game->simPartUndoMeeple(); qDebug() << "m" << game->getPlayerMeeples(0); // qDebug() << "r" << game->getPlayerReturnMeeples(0); qDebug() << "placements" << game->getPossibleMeeplePlacements(0, game->simTile).size(); qDebug("simPartUndoTile"); game->simPartUndoTile(); qDebug() << "m" << game->getPlayerMeeples(0); // qDebug() << "r" << game->getPlayerReturnMeeples(0); qDebug("simPartUndoChance"); game->simPartUndoChance(); qDebug() << "m" << game->getPlayerMeeples(0); // qDebug() << "r" << game->getPlayerReturnMeeples(0); }
TEST(McmcUnitEMetric, gradients) { rng_t base_rng(0); Eigen::VectorXd q = Eigen::VectorXd::Ones(11); stan::mcmc::unit_e_point z(q.size()); z.q = q; z.p.setOnes(); std::fstream data_stream(std::string("").c_str(), std::fstream::in); stan::io::dump data_var_context(data_stream); data_stream.close(); funnel_model_namespace::funnel_model model(data_var_context, &std::cout); stan::mcmc::unit_e_metric<funnel_model_namespace::funnel_model, rng_t> metric(model, &std::cout); double epsilon = 1e-6; metric.update(z); Eigen::VectorXd g1 = metric.dtau_dq(z); for (int i = 0; i < z.q.size(); ++i) { double delta = 0; z.q(i) += epsilon; metric.update(z); delta += metric.tau(z); z.q(i) -= 2 * epsilon; metric.update(z); delta -= metric.tau(z); z.q(i) += epsilon; metric.update(z); delta /= 2 * epsilon; EXPECT_NEAR(delta, g1(i), epsilon); } Eigen::VectorXd g2 = metric.dtau_dp(z); for (int i = 0; i < z.q.size(); ++i) { double delta = 0; z.p(i) += epsilon; delta += metric.tau(z); z.p(i) -= 2 * epsilon; delta -= metric.tau(z); z.p(i) += epsilon; delta /= 2 * epsilon; EXPECT_NEAR(delta, g2(i), epsilon); } Eigen::VectorXd g3 = metric.dphi_dq(z); for (int i = 0; i < z.q.size(); ++i) { double delta = 0; z.q(i) += epsilon; metric.update(z); delta += metric.phi(z); z.q(i) -= 2 * epsilon; metric.update(z); delta -= metric.phi(z); z.q(i) += epsilon; metric.update(z); delta /= 2 * epsilon; EXPECT_NEAR(delta, g3(i), epsilon); } }
int main() { srand((unsigned)time(NULL)); Graph g("d:\\github\\CRANA_Voting\\graph2.txt"); int caseN=6; double judge=0,judge_sum=0; int req_sum=0,result_sum=0; vector<Req*> reqL_all; list<CEdge*> listEdge; int winner = 0;//No.1 float happiness_sum = 0;//记录各轮服务累加起来的满意度 int K_sum = 0;//记录一共有多少条流需要安排路径 float table[M2C+1][N2C+1] = {0}; int ranking[N2C+1]={0};//记录一种排序的投票人数 ofstream reqRecord("d:\\github\\reqRecord.txt"); //图的初始化 ifstream test("d:\\github\\CRANA_Voting\\graph2.txt"); int node_num,edge_num; int src,dst,weight,cap; test>>node_num>>edge_num; for(int i=1;i<=edge_num;i++) { test>>src>>dst>>weight>>cap; CEdge* e1=new CEdge(src,dst,weight,cap); CEdge* e2=new CEdge(dst,src,weight,cap); listEdge.push_back(e1); listEdge.push_back(e2); } CGraph gv(listEdge,node_num,edge_num); gv.p3(); gv.p4(); int req_num,req_constant; req_num=6; req_constant = req_num+1; for(int icase=1;icase<=caseN;icase++) { cout<<"--------------------------------------------------"<<endl; cout<<"case "<<icase<<endl; //需求记录 CReq* r1=new CReq(0,0,0); gv.r.push_back(r1); K=MAXREQ; if (req_num != (req_constant-1)) //第一个req来的时候,不需要修改link_bw { for (int k = 1; k <= K; k++) { list<CEdge*>::iterator it, iend; iend = listEdge.end(); for (it = listEdge.begin(); it != iend; it++) { gv.link_bw[k][(*it)->getTail()][(*it)->getHead()] = gv.link_bw[winner][(*it)->getTail()][(*it)->getHead()]; //cout << (*it)->getTail() << " " << (*it)->getHead() << " " << g.link_bw[k][(*it)->getTail()][(*it)->getHead()]<<endl; } } } for (int i = 1; i <= K; i++) for (int j = 1; j <= K; j++) { CPath* pa = new CPath(); gv.path_record[i][j] = pa; } //case输入 reqRecord<<"case "<<icase<<endl; int reqN,a,b,c; vector<Req*> reqL; reqN=MAXREQ; reqL.clear(); a=1;b=17; for(int i=0;i<reqN;i++) { c=0; while(c==0){c = 3 + rand()%MAXFLOW;} Req* r=new Req(a,b,c); reqL.push_back(r); CReq* r2=new CReq(a,b,c); gv.bw[i+1]=c; gv.r.push_back(r2); reqL_all.push_back(r); reqRecord<<c<<" "; } reqRecord<<endl<<endl; //@@@@@@@@@@@@@@@@ Voting @@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@ Voting @@@@@@@@@@@@@@@@@@@@@@ //提方案 for(int i=1;i<=K;i++) { gv.single_flow_propose(i,K); } //评价 for(int i=1;i<=K;i++) for(int j=1;j<=K;j++) gv.judge[i][j]=0; for(int i=1;i<=K;i++) gv.judge_sum[i]=0; for(int i=1;i<=K;i++) { //cout<<"evaluate "<<i<<endl; gv.single_flow_evaluate(i,K); gv.cost_evaluate(i); } /* cout<<endl; cout<<"************ single judge **************"<<endl; for(int i=1;i<=K;i++) { cout<<"flow "; cout.setf(ios::right); cout.width(3); cout<<i<<" judge: "; for(int j=1;j<=K;j++){ cout.setf(ios::left); cout.width(4); cout<<gv.judge[i][j]<<" "; } cout<<endl; } cout<<endl; cout<<"************ sum judge **************"<<endl; for(int i=1;i<=K;i++) { cout<<"proposal "<<i<<" : "<<gv.judge_sum[i]<<endl; } */ //voting method for(int i=1;i<=K;i++) for(int j=1;j<=K;j++) { if(gv.judge[i][j]==0) {table[i][j]=10000;}//如果是0,说明流没有摆在网络中 else table[i][j]=gv.judge[i][j]; } for(int i=1;i<=K;i++) ranking[i]=1; /* cout<<"************ voting table **************"<<endl; for(int i=1;i<=K;i++) { cout<<"flow "; cout.setf(ios::right); cout.width(3); cout<<i<<" judge: "; for(int j=1;j<=K;j++){ cout.setf(ios::left); cout.width(5); cout<<table[i][j]<<" "; } cout<<endl; } cout<<endl; */ cout<<" voting result "; int choice = 1; Voting vv(table,ranking,K,K); winner=vv.voting(choice); cout<<endl; if (choice == 1) cout << "schulze method : " << winner << endl; else if (choice == 2) cout << "comulative method: " << winner << endl; else if (choice == 3) cout << "copeland condorcet method: " << winner << endl; else cout << "ranked pairs method: " << winner << endl; //计算满意度 float happiness=0;//一轮所有流的满意度和,越高越好,0<=满意度<=1 for (int i = 1; i <= K; i++) happiness += table[i][i] / table[i][winner];//最好抉择评分/当前抉择评分 happiness_sum += happiness; K_sum += K; //如果流没有被安排进网络,就增加惩罚cost for(int i=1;i<=K;i++) if(table[i][winner]=10000) gv.judge_sum[winner]+=MAXPATH*gv.bw[i]; cout << "第" << req_constant - req_num << "轮整体满意度: " << happiness/K << endl; cout << "多轮整体满意度和:" << happiness_sum / K_sum << endl; cout << "多轮整体代价和: " << gv.judge_sum[winner] << endl; //@@@@@@@@@@@@@@@@@End of Voting@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@End of Voting@@@@@@@@@@@@@@@@@@@@@@@@@ //最优部署计算 g.cost_best.clear(); g.cost_LP.clear(); //cout<<"35 line"<<endl; for(int i=0;i<reqN;i++) { //cout<<reqL[i]->src<<" "<<reqL[i]->dst<<" "<<reqL[i]->flow<<endl; g.cost_best.push_back(reqL[i]->flow * g.dijkstra(reqL[i]->src,reqL[i]->dst,reqL[i]->flow)); } cout<<endl<<" LP result "<<endl; //线性规划部署 double result=0; result=LP(&g,reqL); //用线性规划解计算cost result_sum += result; cout<<"cost of this case is: "<<result<<endl; cout<<"cost of all cases is: "<<result_sum<<endl; //计算满意度 if(result==999999) judge=0; else { judge=0; //for(int i=0;i<reqN;i++) // cout<<g.cost_best[i]<<" "<<g.cost_LP[i]<<endl; for(int i=0;i<reqN;i++) judge += g.cost_best[i]/g.cost_LP[i]; } judge_sum += judge; req_sum += reqN; cout<<"单轮满意度: "<<judge/reqN<<endl; cout<<"多轮满意度: "<<judge_sum/req_sum<<endl; } //全局线性规划部署 cout<<endl<<" LP_ALL result "<<endl; Graph g3("d:\\github\\CRANA_Voting\\graph2.txt"); double result3=0; result3=LP(&g3,reqL_all); cout<<"cost of all cases is: "<<result3<<endl; cout<<"End of the Program"<<endl; test.close(); reqRecord.close(); getchar(); return 0; }
// Core 1321 // { dg-options -std=c++11 } // Two dependent names are equivalent even if the overload sets found by // phase 1 lookup are different. Merging them keeps the earlier set. int g1(int); template <class T> decltype(g1(T())) f1(); int g1(); template <class T> decltype(g1(T())) f1() { return g1(T()); } int i1 = f1<int>(); // OK, g1(int) was declared before the first f1 template <class T> decltype(g2(T())) f2(); // { dg-error "g2. was not declared" } int g2(int); template <class T> decltype(g2(T())) f2() { return g2(T()); } int i2 = f2<int>(); // { dg-error "no match" } int g3(); template <class T> decltype(g3(T())) f3(); // { dg-error "too many arguments" } int g3(int); template <class T> decltype(g3(T())) f3() { return g3(T()); } int i3 = f3<int>(); // { dg-error "no match" }