Exemple #1
0
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;
	
} 
Exemple #4
0
 int g4(int a1, int a2, int a3, int a4) const { g3(a1, a2, a3); g1(a4); return 0; }
Exemple #5
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();
	
}
Exemple #6
0
template <class T> decltype(g3(T())) f3()
{ return g3(T()); }
Exemple #7
0
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); }
}
Exemple #8
0
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;
}
Exemple #9
0
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");
	}

}
Exemple #10
0
 void g4(int a1, int a2, int a3, int a4) const { g3(a1, a2, a3); g1(a4); }
Exemple #11
0
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);
}
Exemple #14
0
 G<T>& operator+= (const G<T>& x)
 {
   for (E<T> i = x.g2 (); i != x.g1 (); ++i)
     g3 (*i);
   return *this;
 }
Exemple #15
0
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);
	}
Exemple #16
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);

    }

}
Exemple #17
0
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;
}
Exemple #18
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" }