示例#1
0
void AddWalkSat() {

  ALGORITHM *pCurAlg;

  pCurAlg = CreateAlgorithm("walksat","",FALSE,
    "WALKSAT: Original WalkSAT algorithm (SKC variant)",
    "Selman, Kautz, Cohen [AAAI 94]",
    "PickWalkSatSKC",
    "DefaultProcedures,Flip+FalseClauseList",
    "default","default");
  
  AddParmProbability(&pCurAlg->parmList,"-wp","walk probability [default %s]","with probability PR, select a random variable from a~randomly selected unsat clause","",&iWp,0.50);

  CreateTrigger("PickWalkSatSKC",ChooseCandidate,PickWalkSatSKC,"","");


  pCurAlg = CreateAlgorithm("walksat","",TRUE,
    "WALKSAT: Original WalkSAT algorithm (SKC variant) (weighted)",
    "Selman, Kautz, Cohen [AAAI 94]",
    "PickWalkSatSKCW",
    "DefaultProceduresW,Flip+FalseClauseListW",
    "default_w","default");
  
  CopyParameters(pCurAlg,"walksat","",FALSE);

  CreateTrigger("PickWalkSatSKCW",ChooseCandidate,PickWalkSatSKCW,"","");
 
}
示例#2
0
void AddRandom() {

  ALGORITHM *pCurAlg;

  pCurAlg = CreateAlgorithm("urwalk","",FALSE,
    "Uninformed Random Walk: flip any var at random",
    "",
    "PickURWalk",
    "DefaultProcedures",
    "default","default");

  CreateTrigger("PickURWalk",ChooseCandidate,PickURWalk,"","");  

  pCurAlg = CreateAlgorithm("urwalk","",TRUE,
    "Uninformed Random Walk: flip any var at random (weighted)",
    "",
    "PickURWalk",
    "DefaultProceduresW",
    "default_w","default");

  pCurAlg = CreateAlgorithm("crwalk","",FALSE,
    "Conflict-Directed Random Walk: choose unsat clause, then literal at random",
    "Papadimitriou [FOCS 91]",
    "PickCRWalk",
    "DefaultProcedures,Flip+FalseClauseList",
    "default","default");

  CreateTrigger("PickCRWalk",ChooseCandidate,PickCRWalk,"","");

  pCurAlg = CreateAlgorithm("crwalk","",TRUE,
    "Conflict-Directed Random Walk (weighted)",
    "Papadimitriou [FOCS 91]",
    "PickCRWalk",
    "DefaultProceduresW,Flip+FalseClauseListW",
    "default_w","default");

  CreateTrigger("SchoeningRestart",CreateData,SchoeningRestart,"","");

  pCurAlg = CreateAlgorithm("crwalk","schoening",FALSE,
    "Conflict-Directed Random Walk, restart every 3n steps",
    "Schoening [FOCS 99]",
    "PickCRWalk,SchoeningRestart",
    "DefaultProcedures,Flip+FalseClauseList",
    "default","default");

  pCurAlg = CreateAlgorithm("crwalk","schoening",TRUE,
    "Conflict-Directed Random Walk, restart every 3n steps (weighted)",
    "Schoening [FOCS 99]",
    "PickCRWalk,SchoeningRestart",
    "DefaultProceduresW,Flip+FalseClauseListW",
    "default_w","default");

}
示例#3
0
bool InitNx()
{
	// Initialize PhysicsSDK
	NxPhysicsSDKDesc desc;
	gMyPhysX.initPhysX(desc);

	if(isPhysXHardwarePresent())
		printf("PhysX Hardware is available in your system!\n");
	// Create a scene
	NxSceneDesc sceneDesc;
	sceneDesc.gravity				= gDefaultGravity;

	gMyPhysX.createDefaultScene(sceneDesc);

	// Create ground plane
	NxPlaneShapeDesc PlaneDesc;
	PlaneDesc.group = 2;
	NxActorDesc ActorDesc;
	ActorDesc.shapes.pushBack(&PlaneDesc);
	gMyPhysX.getScene()->createActor(ActorDesc);

	NxMaterial * defaultMaterial = gMyPhysX.getScene()->getMaterialFromIndex(0); 
	defaultMaterial->setRestitution(0.0f);
	defaultMaterial->setStaticFriction(0.5f);
	defaultMaterial->setDynamicFriction(0.5f);

	// Create trigger

	NxVec3 zeroV(0,0,0);

	CreateTrigger(NxVec3(0,10,0), 10);
	CreateTrigger(NxVec3(-40,10,0), 10, &zeroV, false);
	CreateCube(NxVec3(-40,10,40), 10, NULL, false, true);
	CreateCube(NxVec3(-40,10,80), 10, NULL, true, false);

	//This creates a kinematic actor with a trigger, note that kinematic
	//triggers get interactions with static objects, thus this trigger
	//(which is placed directly above the ground) will directly get an
	//enter event for the ground plane (and change it's color). 
	CreateTrigger(NxVec3(40,10,0), 10, NULL, true);
	//You can try to move it up just a little bit, and you will see 
	//that it will no longer intersect the ground plane.
	//CreateTrigger(NxVec3(40,11,0), 10, NULL, true);

	return true;
}
boost::shared_ptr<Trigger> MojoTriggerManager::CreateWhereTrigger(
	boost::shared_ptr<Activity> activity, const MojoURL& url,
	const MojObject& params, const MojObject& where)
{
	boost::shared_ptr<MojoMatcher> matcher =
		boost::make_shared<MojoWhereMatcher>(where);

	return CreateTrigger(activity, url, params, matcher);
}
boost::shared_ptr<Trigger> MojoTriggerManager::CreateCompareTrigger(
	boost::shared_ptr<Activity> activity, const MojoURL& url,
	const MojObject& params, const MojString& key, const MojObject& value)
{
	boost::shared_ptr<MojoMatcher> matcher =
		boost::make_shared<MojoCompareMatcher>(key, value);

	return CreateTrigger(activity, url, params, matcher);
}
boost::shared_ptr<Trigger> MojoTriggerManager::CreateBasicTrigger(
	boost::shared_ptr<Activity> activity, const MojoURL& url,
	const MojObject& params)
{
	boost::shared_ptr<MojoMatcher> matcher =
		boost::make_shared<MojoSimpleMatcher>();

	return CreateTrigger(activity, url, params, matcher);
}
示例#7
0
void AddRNoveltyPlus() {

  ALGORITHM *pCurAlg;

  pCurAlg = CreateAlgorithm("rnovelty+","",FALSE,
    "RNovelty+: RNovelty with random walk",
    "Hoos [AAAI 99]",
    "PickRNoveltyPlus",
    "DefaultProcedures,Flip+FalseClauseList,VarLastChange",
    "default","default");
    
  CopyParameters(pCurAlg,"novelty+","",FALSE);

  CreateTrigger("PickRNoveltyPlus",ChooseCandidate,PickRNoveltyPlus,"","");

}
示例#8
0
void AddRNovelty() {

  ALGORITHM *pCurAlg;

  pCurAlg = CreateAlgorithm("rnovelty","",FALSE,
    "RNovelty",
    "McAllester, Selman, Kautz [AAAI 97]",
    "PickRNovelty",
    "DefaultProcedures,Flip+FalseClauseList,VarLastChange",
    "default","default");
  
  CopyParameters(pCurAlg,"novelty","",FALSE);

  CreateTrigger("PickRNovelty",ChooseCandidate,PickRNovelty,"","");

}
示例#9
0
	void MainEventPool::ParseAllTriggers(XmlNode* rootNode)
	{
		// trigsNode is root node in map's triggers file
		// First save all variables - find node Variables
		XmlNode* varsNode = rootNode->first_node("Variables", 9);
		// Save all variables 
		// Create triggers - find Triggers node
		XmlNode* trigsNode = rootNode->first_node("Triggers", 8);
		XmlNode* trigNode = trigsNode->first_node("Trigger");
		while(trigNode != 0)
		{
			Trigger* trigger = CreateTrigger(trigNode);
			_triggers.insert(std::make_pair(trigger->GetName(), trigger));

			bool enabled = XmlUtility::XmlGetBoolIfExists(trigNode, "is_enabled", true);
			if(enabled)
				trigger->Enable();

			trigNode = trigNode->next_sibling();
		}
	}
示例#10
0
void getkey(unsigned char key,int x,int y)
{
	static int drawMode = 0;
	switch(key)
	{
	case 27:		
		exit(0);
		break;
	case '0':
		ResetNx();
		break;
	case '1':
		CreateCube(NxVec3(0.0f, 30.0f, 0.0f), 1+(rand()&3));
		break;
	case '2':
		{
			NxVec3 t = g_CameraPos;
			NxVec3 Vel = g_CameraForward;
			Vel.normalize();
			Vel*=200.0f;
			CreateTrigger(t, 8 ,&Vel, true);
		}		
		break;
	case '3':
		CreateStack(10);
		break;
	case 'p':
	case 'P':
		gMyPhysX.pauseSimulation(!gMyPhysX.isPaused());
		break;
	case 'h':
	case 'H':
		g_DisplayHelp = !g_DisplayHelp;
		break;
	case 'f':
	case 'F':
		FullScreen();
		break;
	case 't':
	case 'T':
		drawMode = ++drawMode % 3;
		if(drawMode == 0)        // fill mode
		{
			glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
			glEnable(GL_DEPTH_TEST);
			glEnable(GL_CULL_FACE);
		}
		else if(drawMode == 1)  // wireframe mode
		{
			glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
			glDisable(GL_DEPTH_TEST);
			glDisable(GL_CULL_FACE);
		}
		else                    // point mode
		{
			glPolygonMode(GL_FRONT_AND_BACK, GL_POINT);
			glDisable(GL_DEPTH_TEST);
			glDisable(GL_CULL_FACE);
		}
		break;
	case ' ':
		g_CameraPos = NxVec3(0.0f, 20.0f, 80.0f);
		g_CameraForward = NxVec3(0.0f,0.0f,-1.0f);
		g_fovy =90.0f;
		break;
	default:
		break;
	}
	glutPostRedisplay();
	glCheckError("getkey");
}
	void CreateBuoyancyTrigger (const dMatrix& matrix, NewtonCollision* const convexShape)
	{
		CustomTriggerController* const controller = CreateTrigger (matrix, convexShape, NULL);
		BuoyancyForce* const buoyancyForce = new BuoyancyForce (controller);
		controller->SetUserData (buoyancyForce);
	}