TEST(selectParentTest, statisticallyOK) { // initializing agent characteristics for subpop[0] double b = 1000.0; double il = 0.0; double ol = 0.0; double lb = 0.0; double dumb = 0.0; double avg= 0.50; double smart=1.0; //initializing agent characteristics for subpop[1] double b1 = 10.0; double dumb1 = 0.0; double avg1= 0.25; double smart1=0.50; //initializing vectors to store Agents std::vector<std::vector<Agent> > Population; std::vector<Agent> parents; std::vector<Agent> parents2; // creating parents for subpop(0) Agent dumbParent = Agent(b, il, ol, lb, dumb); Agent avgParent = Agent(b, il, ol, lb, avg); Agent smartParent = Agent(b, il, ol, lb, smart); parents.push_back(dumbParent); parents.push_back(avgParent); parents.push_back(smartParent); Population.push_back(parents); // creating parents for subpop(1) Agent dumbParent1 = Agent(b1, il, ol, lb, dumb1); Agent avgParent1 = Agent(b1, il, ol, lb, avg1); Agent smartParent1 = Agent(b1, il, ol, lb, smart1); parents2.push_back(dumbParent1); parents2.push_back(avgParent1); parents2.push_back(smartParent1); Population.push_back(parents2); // sending variables for the parent selection int fecundityCurve = 1.0; double meanCommunityCulture = getMeanCommunityCulture(Population[0]); double sigmoidCurvature = 10.0; double totalCommunityCulture = getTotalCommunityCultureFromSigmoid( Population[0], meanCommunityCulture, fecundityCurve); int dumbParentCount =0; int avgParentCount =0; int smartParentCount =0; // Have 1000 newborns pick parent for (int i=0; i<15000; i++) { Agent parent = selectAgentBasedOnCulture(Population,0,meanCommunityCulture, fecundityCurve, totalCommunityCulture); //cout << parent.getCulture() << endl; if (parent.getCulture() == dumb) { dumbParentCount++; } if (parent.getCulture() == avg) { avgParentCount++; } if (parent.getCulture() == smart) { smartParentCount++; } } cout << "smarter subpopulation dumbparent count " << dumbParentCount << endl; cout << "smarter subpopulation averageParent count " << avgParentCount << endl; cout << "smarter subpopulation smartParent count " << smartParentCount << endl; // sending variables for the parent selection int fecundityCurve1 = 1.0; double meanCommunityCulture1 = getMeanCommunityCulture(Population[1]); double sigmoidCurvature1 = 10.0; double totalCommunityCulture1 = getTotalCommunityCultureFromSigmoid( Population[1], meanCommunityCulture1, fecundityCurve1); int dumbParentCount1 =0; int avgParentCount1 =0; int smartParentCount1 =0; for (int i=0; i<15000; i++) { Agent parent = selectAgentBasedOnCulture(Population,1,meanCommunityCulture1, fecundityCurve1, totalCommunityCulture1); //cout << parent.getCulture() << endl; if (parent.getCulture() == dumb1) { dumbParentCount1++; } if (parent.getCulture() == avg1) { avgParentCount1++; } if (parent.getCulture() == smart1) { smartParentCount1++; } } cout << "dumber subpopulation dumbparent count " << dumbParentCount1 << endl; cout << "dumber subpopulation averageParent count " << avgParentCount1 << endl; cout << "dumber subpopulation smartParent count " << smartParentCount1 << endl; // expect that the smartParents will be picked more often EXPECT_TRUE(avgParentCount < smartParentCount); EXPECT_TRUE(dumbParentCount < smartParentCount); EXPECT_TRUE(dumbParentCount < avgParentCount); EXPECT_TRUE(avgParentCount1 < smartParentCount1); EXPECT_TRUE(dumbParentCount1 < smartParentCount1); EXPECT_TRUE(dumbParentCount1 < avgParentCount1); }