コード例 #1
0
ファイル: SuperWalker.py プロジェクト: B-Rich/breve
	def init( self ):
		number = 0
		item = None

		self.locked = 0
		self.enableLighting()
		self.enableSmoothDrawing()
		self.enableFastPhysics()
		self.setFastPhysicsIterations( 5 )
		self.floor = breve.createInstances( breve.Floor, 1 )
		self.floor.catchShadows()
		self.floor.setET( 0.900000 )
		self.floor.setMu( 1.000000 )
		self.setBackgroundTextureImage( breve.createInstances( breve.Image, 1 ).load( 'images/clouds.png' ) )
		self.enableReflections()
		self.setBackgroundColor( breve.vector( 0.400000, 0.600000, 0.900000 ) )
		self.monkeys = breve.createInstances( breve.Monkeys, 15 )
		for item in self.monkeys:
			item.setNumber( number )
			number = ( number + 1 )


		self.pickDrivers()
		self.lockMenu = self.addMenu( '''Lock Driver''', 'toggleDriverLock' )
		self.addMenuSeparator()
		self.addMenu( '''Save Current Genome''', 'saveCurrentGenome' )
		self.addMenu( '''Load Into Current Genome''', 'loadIntoCurrentGenome' )
		self.schedule( 'changeDrivers', ( self.getTime() + 20.000000 ) )
		self.displayCurrentDriver()
		self.wigglyThing = breve.createInstances( breve.Creature, 1 )
		self.wigglyThing.initWith( self.seats[ 0 ].getGenome() )
		self.wigglyThing.move( breve.vector( 0, 3, 0 ) )
		self.offsetCamera( breve.vector( -3, 3, 13 ) )
		self.watch( self.wigglyThing )
コード例 #2
0
ファイル: TerrainWalker.py プロジェクト: B-Rich/breve
	def init( self ):
		number = 0
		item = None

		self.locked = 0
		self.setRandomSeedFromDevRandom()
		self.enableFastPhysics()
		self.setIntegrationStep( 0.004000 )
		self.enableLighting()
		self.moveLight( breve.vector( 0, 10, 0 ) )
		self.setBackgroundColor( breve.vector( 0.400000, 0.600000, 0.900000 ) )
		self.setMountainSkybox()
		self.terrain = breve.createInstances( breve.Terrain, 1 )
		self.terrain.generate( 0.340000, 40 )
		self.terrain.setScale( 6 )
		self.terrain.setValleyColor( breve.vector( 0.350000, 0.800000, 0.450000 ) )
		self.terrain.setPeakColor( breve.vector( 1.000000, 1.000000, 1.000000 ) )
		self.enableShadowVolumes()
		self.walker = breve.createInstances( breve.Creature, 1 )
		self.walker.move( breve.vector( 0, 6, 0 ) )
		self.offsetCamera( breve.vector( 3, 13, -13 ) )
		self.watch( self.walker )
		self.monkeys = breve.createInstances( breve.Monkeys, 15 )
		for item in self.monkeys:
			item.setNumber( number )
			number = ( number + 1 )


		self.pickDrivers()
		self.lockMenu = self.addMenu( '''Lock Driver''', 'toggleDriverLock' )
		self.addMenuSeparator()
		self.addMenu( '''Save Current Genome''', 'saveCurrentGenome' )
		self.addMenu( '''Load Into Current Genome''', 'loadIntoCurrentGenome' )
		self.schedule( 'changeDrivers', ( self.getTime() + 20.000000 ) )
		self.displayCurrentDriver()
コード例 #3
0
ファイル: SwarmEvolve-1.0.py プロジェクト: B-Rich/breve
	def init( self ):
		floor = None

		self.enableLighting()
		self.moveLight( breve.vector( 0, 20, 20 ) )
		self.autoCameraMenu = self.addMenu( '''Automatic Camera Control''', 'setAutoCameraMode' )
		self.manualCameraMenu = self.addMenu( '''Manual Camera Control''', 'setManualCameraMode' )
		self.autoCameraMode = 1
		self.autoCameraMenu.check()
		self.manualCameraMenu.uncheck()
		self.addMenuSeparator()
		self.addMenu( '''Flock Nicely''', 'flockNicely' )
		self.addMenu( '''Randomize and Evolve''', 'randomizeAndEvolve' )
		self.addMenu( '''Evolve without Randomizing''', 'evolveWithoutRandomizing' )
		self.addMenuSeparator()
		self.drawEveryFrameMenu = self.addMenu( '''Draw Every Frame''', 'setDrawEveryFrame' )
		self.skipFramesIfNecessaryMenu = self.addMenu( '''Skip Frames if Necessary''', 'setSkipFramesIfNecessaryMenu' )
		self.drawEveryFrameMenu.check()
		self.skipFramesIfNecessaryMenu.uncheck()
		self.cloudTexture = breve.createInstances( breve.Image, 1 ).load( 'images/clouds.png' )
		self.setBackgroundTextureImage( self.cloudTexture )
		floor = breve.createInstances( breve.Stationary, 1 )
		floor.register( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 100, 2, 100 ) ), breve.vector( 0, -5, 0 ) )
		floor.catchShadows()
		self.birds = breve.createInstances( breve.Birds, 60 )
		self.feeders = breve.createInstances( breve.Feeders, 2 )
		self.randomizeAndEvolve()
		self.offsetCamera( breve.vector( 5, 1.500000, 6 ) )
		self.enableShadows()
		self.disableText()
コード例 #4
0
	def crossover_push(self, newBird, parent1, parent2):
		newBird.pushInterpreter.clearStacks()
		error = True

		c1 = breve.createInstances( breve.PushProgram, 1 )
		c2 = breve.createInstances( breve.PushProgram, 1 )
		c3 = breve.createInstances( breve.PushProgram, 1 )
		parent1.pushInterpreter.copyCodeStackTop( c1 )
		if ( c1.getSize() > 0 ):
			parent2.pushInterpreter.copyCodeStackTop( c2 )
			if ( c2.getSize() > 0 ):
				c3.crossover( c1, c2, newBird.pushInterpreter )

				if len(c3.getList()) > 0:
					print "diversity", parent1.pushCode.getTopLevelDifference(parent2.pushCode)
					print "diversity", parent1.pushCode.getTopLevelDifference(c3)
					print "diversity", parent2.pushCode.getTopLevelDifference(c3)

					newBird.pushInterpreter.pushCode( c3 )
					a = self.object3.pushCode
					self.object3.pushCode = c3
					c3 = a
					error = False

		if error:
			newBird.pushInterpreter.pushCode( c1 )
			a = self.object3.pushCode
			self.object3.pushCode = c1
			c1 = a

		breve.deleteInstances( c1 )
		breve.deleteInstances( c2 )
		breve.deleteInstances( c3 )
コード例 #5
0
	def addBlockSensor( self, location , axis, ang, function, lowerBound = -1000, upperBound = 1000):
		'''Adds a sensor at location on the vehicle.  This method returns the sensor which is created, a OBJECT(BraitenbergSensor).  You'll use the returned object to connect it to the vehicle's wheels.'''

		''' This sensor only interacts  with blocks. '''
		joint = None
		sensor = None

		sensor = breve.createInstances( breve.BraitenbergBlockSensor, 1 )
		sensor.setShape( self.sensorShape )
		
		activationFunction = breve.createInstances(breve.BraitenbergActivationObject, 1)
		activationFunction.setType(function)
		activationFunction.setLowerBound(lowerBound)
		activationFunction.setUpperBound(upperBound)
		sensor.setActivationObject( activationFunction )
		
		joint = breve.createInstances( breve.RevoluteJoint, 1 )
		joint.setRelativeRotation( axis, ang )
			
		joint.link( breve.vector( 1, 0, 0 ), location, breve.vector( 0, 0, 0 ), sensor, self.bodyLink )
		joint.setDoubleSpring( 300, 0.010000, -0.010000 )
		self.addDependency( joint )
		self.addDependency( sensor )
		sensor.setColor( breve.vector( 0, 0, 0 ) )
		self.sensors.append( sensor )
		return sensor
コード例 #6
0
	def init( self ):
		filename = "3c.txt"
		f = open(filename, "r")
	
		#Reads the limits of the maze.
	
		#Reads the maze itself.
		text = f.readlines()

		#Iterates over the lines.
		for i in xrange(len(text)):
			for t in xrange(len(text[i])):
				if (text[i][t] == "o"):
					self.obj = breve.createInstances ( breve.BraitenbergOlfaction, 1)
					self.obj.move( breve.vector(i*3, 0, t*2))  
					self.obj.setIntensity(1.5)
				elif (text[i][t] == "s"):
					self.obj = breve.createInstances ( breve.BraitenbergSound, 1)
					self.obj.move( breve.vector(i*3, 0, t*2))  
					self.obj.setIntensity(1.5)
				elif (text[i][t] == "l"):
					self.obj = breve.createInstances ( breve.BraitenbergLight, 1)
					self.obj.move( breve.vector(i*3, 0, t*2))  
					self.obj.setIntensity(1.5)
				elif (text[i][t] == "b"):
					self.obj = breve.createInstances ( breve.BraitenbergBlock, 1)
					self.obj.move( breve.vector(i*3, 0, t*2))
					
		
		'''Creates the first vehicle.'''
		self.vehicle = breve.createInstances( breve.Braitenberg3c, 1 )
		self.watch( self.vehicle )
			
		self.vehicle.move(breve.vector(10,1,60))
		self.vehicle.rotate(breve.vector(0,1,0),0)
コード例 #7
0
ファイル: Stationary.py プロジェクト: thecodemaiden/breve
 def init(self):
     self.shape = breve.createInstances(breve.Cube, 1).initWith(breve.vector(1000, 5, 1000))
     self.move(breve.vector(0, -2.500000, 0))
     self.setShape(self.shape)
     self.setColor(breve.vector(0.350000, 0.800000, 0.450000))
     self.catchShadows()
     self.setTextureImage(breve.createInstances(breve.Image, 1).load("images/noise.png"))
コード例 #8
0
ファイル: SwarmEvolve-2.0.py プロジェクト: kephale/breve
	def crossover( self ):
		c3 = None
		c2 = None
		c1 = None

		c1 = breve.createInstances( breve.PushProgram, 1 )
		c2 = breve.createInstances( breve.PushProgram, 1 )
		c3 = breve.createInstances( breve.PushProgram, 1 )
		self.pushInterpreter.copyCodeStackTop( c1 )
		if ( c1.getSize() > 0 ):
			self.pushInterpreter.popCodeStack()
			self.pushInterpreter.copyCodeStackTop( c2 )
			if ( c2.getSize() > 0 ):
				self.pushInterpreter.popCodeStack()
				c3.crossover( c1, c2, self.pushInterpreter )
				self.pushInterpreter.pushCode( c3 )

			else:
				self.pushInterpreter.pushCode( c1 )




		breve.deleteInstances( c1 )
		breve.deleteInstances( c2 )
		breve.deleteInstances( c3 )
コード例 #9
0
ファイル: braitenberg_test.py プロジェクト: firebitsbr/ctf-28
    def init(self):
        # create the light for the vehicle to follow
        self.light = breve.createInstances(breve.BraitenbergLight, 1)
        self.light.move(breve.vector(10, 1, 0))

        # create the vehicle
        self.vehicle = breve.createInstances(breve.BraitenbergVehicle, 1)
        self.vehicle.move(breve.vector( 0, 2, 5))

        # create and add the wheels to the vehicle
        self.leftWheel = self.vehicle.addWheel(breve.vector(-0.500000, 0, -1.500000))
        self.rightWheel = self.vehicle.addWheel(breve.vector( -0.500000, 0, 1.500000))

        # make sure the wheels don't spin if there are no lights around
        self.leftWheel.setNaturalVelocity(1) 
        self.rightWheel.setNaturalVelocity(1)

        # create and attach sensors to the vehicle
        self.rightSensor = self.vehicle.addSensor(breve.vector(2.000000, 0.400000, 1.500000))
        self.leftSensor = self.vehicle.addSensor(breve.vector(2.000000, 0.400000, -1.500000))

        # link the sensors to the wheels
        self.leftSensor.link(self.leftWheel)
        self.rightSensor.link(self.rightWheel)
        
        # set the sensor bias
        self.leftSensor.setBias(-.125)
        self.rightSensor.setBias(-.125)

        # make sure we watch our vehicle
        self.watch(self.vehicle)
コード例 #10
0
	def init( self ):
		'''Initializes the Control object by setting up default values for  variables such as the size of the integration timestep.  Subclasses of Control may override these defaults in their own init functions.'''

		self.cameraPointer = breve.breveInternalFunctionFinder.getMainCameraPointer( self)
		self.stationaryTexture = breve.createInstances( breve.Image, 1 )
		self.stationaryTexture.load( 'images/checkerpink.png' )
		self.camera = breve.createInstances( breve.Camera, 1 )
		self.addDependency( self.camera )
		self.camera.setCameraPointer( self.cameraPointer )
		self.shadowCatcherDefined = 0
		self.setIntegrationStep( 0.005000 )
		self.setIterationStep( 0.050000 )
		self.enableDrawEveryFrame()
		self.setBackgroundColor( breve.vector( 0.500000, 0.700000, 1.000000 ) )
		self.setFogColor( breve.vector( 0.800000, 0.800000, 0.800000 ) )
		self.xRot = 0.000000
		self.yRot = 0.000000
		self.moveLight( breve.vector( 0, 0, 0 ) )
		self.pointCamera( breve.vector( 0, 0, 0 ), breve.vector( 0, 0, 30 ) )
		self.setBackgroundScrollRate( 0.001000, 0.000100 )
		self.lightMenu = self.addMenu( '''Use Lighting''', 'toggleLighting' )
		self.drawMenu = self.addMenu( '''Use Smooth Shading''', 'toggleSmooth' )
		self.shadowMenu = self.addMenu( '''Draw Shadows''', 'toggleShadows' )
		self.fogMenu = self.addMenu( '''Draw Fog''', 'toggleFog' )
		self.reflectMenu = self.addMenu( '''Draw Reflections''', 'toggleReflections' )
		self.blurMenu = self.addMenu( '''Use Motion Blur''', 'toggleBlur' )
		self.addMenuSeparator()
		self.movieMenu = self.addMenu( '''Record Movie to "simulation.mpeg"''', 'toggleRecordingToMovie' )
		self.addMenu( '''Save Snapshot to "simulation.png"''', 'saveSnapshotToFile' )
		self.enableSmoothDrawing()
		self.disableLighting()
		self.addMenuSeparator()
		self.genericShape = breve.createInstances( breve.Sphere, 1 ).initWith( 1.000000 )
		self.genericLinkShape = breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 0.100000, 1, 0.100000 ) )
コード例 #11
0
	def init( self ):
		self.vehicle = breve.createInstances( breve.BraitenbergVehicle, 1 )
		self.vehicle.move(breve.vector(2,1,10))
		self.vehicle.rotate(breve.vector(0,1,0),3.14)
		self.watch( self.vehicle )

		self.block = breve.createInstances( breve.BraitenbergSound,1)
		self.block.move( breve.vector(2,1,15))
		self.block = breve.createInstances( breve.BraitenbergSound,1)
		self.block.move( breve.vector(-18,1,15))


		'''Adds wheels and sensors.'''
		lWheel = self.vehicle.addWheel (breve.vector( 0, 0, -1.5 ))
		rWheel = self.vehicle.addWheel (breve.vector( 0, 0, 1.5 ))

		#Correct values
		lFrontSensor = self.vehicle.addSensor (breve.vector( 2.2, 0.1, -1.4 ), breve.vector( 0.75, 0, 1 ),1, "Sounds")
		rFrontSensor = self.vehicle.addSensor (breve.vector( 2.2, 0.1, 1.4 ),breve.vector( -0.75, 0, 1 ),1, "Sounds")
		lFrontSensor.setActivationType("gauss")
		rFrontSensor.setActivationType("gauss")
		
		'''Links the sensors to the wheels.'''
		lFrontSensor.link(rWheel)
		rFrontSensor.link(lWheel)

		#Correct values
		lWheel.setNaturalVelocity(1.16)
		rWheel.setNaturalVelocity(1.16)

		#Correct values
		lFrontSensor.setBias(0.005)
		rFrontSensor.setBias(0.005)
	
		breve.myBraitenbergControl = myBraitenbergControl
コード例 #12
0
 def init( self ):
     self.vehicle = breve.createInstances( breve.BraitenbergVehicle, 1 )
     self.watch( self.vehicle )
     
     #Wheels and Sensors
     front_left = self.vehicle.addWheel(breve.vector(0,0,-1.5))
     front_right = self.vehicle.addWheel(breve.vector(0,0,1.5))
     
     leftLightSensor = self.vehicle.addSensor(breve.vector(1.82, 0.1, -1.8),breve.vector( 1, 0, 0 ),1,"Lights")
     rightLightSensor = self.vehicle.addSensor(breve.vector(1.82, 0.1, 1.8),breve.vector( -1, 0, 0 ),1,"Lights")
     
     leftLightSensor.link(front_right)
     rightLightSensor.link(front_left)
     leftLightSensor.setUpperBound(0.028)
     rightLightSensor.setUpperBound(0.028)
     leftLightSensor.setUpperX(0.07811)
     rightLightSensor.setUpperX(0.07811)
     
     light = breve.createInstances( breve.BraitenbergLight, 1 )
     light.move( breve.vector (0, 1, 7.5))
     light.setIntensity(1.5)
     light = breve.createInstances( breve.BraitenbergLight, 1 )
     light.move( breve.vector (0, 1, -9))
     light.setIntensity(1.5)
     
     front_left.setNaturalVelocity(0.950)
     front_right.setNaturalVelocity(0.950)
     
         
     breve.myBraitenbergControl = myBraitenbergControl
コード例 #13
0
ファイル: BipedBody.py プロジェクト: johan1a/GeneticWalkers
	def initShape( self, chromosomes ):
		self.bodyWidth = 4
		self.bodyDepth = 1 
		self.bodyHeight = 4

		footWidth = 2.5
		self.footHeight = 0.3

		self.legLength = 2
		self.legWidth = 0.5

		self.startingHeight = 2 * self.legLength + self.bodyHeight

		lowerLegShape = breve.Cube().initWith( breve.vector( self.legWidth , self.legWidth , self.legLength )) 
		upperLegShape = breve.Cube().initWith( breve.vector( self.legWidth , self.legWidth , self.legLength ))
		footShape = breve.Cube().initWith( breve.vector( footWidth, footWidth, self.footHeight ))
		bodyShape = breve.Cube().initWith( breve.vector( self.bodyWidth, self.bodyDepth, self.bodyHeight ) )
	
		self.bodyLink = breve.Link()
		self.lowerLegs = breve.createInstances( breve.Links, NBR_LEGS )
		self.upperLegs = breve.createInstances( breve.Links, NBR_LEGS )
		self.feet = breve.createInstances( breve.Links, NBR_LEGS )

		[ link.setShape(upperLegShape) for link in self.upperLegs ]
		[ link.setShape(lowerLegShape) for link in self.lowerLegs ]
		[ link.setShape(footShape) for link in self.feet ]

		self.bodyLink.setShape( bodyShape )

		#Used for resetting the walker position
		self.allLinks = [self.bodyLink] + self.upperLegs + self.lowerLegs + self.feet
コード例 #14
0
	def addBlockSensor( self, location , axis, ang, viewAngle, function, name = "BlockSensor"):
		'''Adds a sensor at location on the vehicle.  This method returns the sensor which is created, a OBJECT(BraitenbergSensor).  You'll use the returned object to connect it to the vehicle's wheels.'''

		''' This sensor only interacts  with blocks. '''
		joint = None
		sensor = None

		sensor = breve.createInstances( breve.BraitenbergBlockSensor, 1 )
		sensor.setShape( self.sensorShape )
		
		activationFunction = breve.createInstances(breve.BraitenbergActivationObject, 1)
		activationFunction.setType(function)
		sensor.setActivationObject( activationFunction )
		sensor.activationObject.setName( name)
		
		'''Sets the angle of the sensor'''
		sensor.setSensorAngle(viewAngle)
		
		joint = breve.createInstances( breve.FixedJoint, 1 )
		joint.setRelativeRotation( axis, ang )
			
		joint.link( location, breve.vector( 0, 0, 0 ), sensor, self.bodyLink )
		joint.setDoubleSpring( 300, 0.010000, -0.010000 )
		self.addDependency( joint )
		self.addDependency( sensor )
		sensor.setColor( breve.vector( 0, 0, 0 ) )
		self.sensors.append( sensor )
		return sensor
コード例 #15
0
	def dropDead(self, corpse=True):
		if corpse:
			c = breve.createInstances( breve.Corpse, 1 )
			c.move( self.getLocation() )
			c.setColor (self.getColor() )
			c.energy = self.energy
			#c.lastScale = self.lastScale
			c.shape = self.shape
			c.setShape( c.shape )
			c.myPoint( breve.vector( 0, 1, 0 ), self.getVelocity())
			
			self.lastScale = 1
			self.shape = breve.createInstances( breve.myCustomShape, 1 )
			self.setShape( self.shape )
			self.adjustSize()


		self.setColor(breve.vector(0,0,0))
		#just to don't overlap the animation 
		self.changePos(-9999,9999)
		self.changeVel(0,0)
		self.changeAccel(0,0)
		self.age = 0
		self.energy = 1
		self.isAlive = False
		self.controller.pollPredators.append(self)
		self.controller.numDeadPredators += 1
コード例 #16
0
	def addSensor( self, location , axis, angle, viewAngle, type, function, name = "Sensor"):
		'''Adds a sensor at location on the vehicle.  This method returns the sensor which is created, a OBJECT(BraitenbergLightSensor).  You'll use the returned object to connect it to the vehicle's wheels.'''

		'''This sensor can interact with light, smell and sound. The final type of the sensor is defined by a method of the sensor itself.'''
		joint = None
		sensor = None

		sensor = breve.createInstances( breve.BraitenbergSensor, 1 )
		sensor.setShape( self.sensorShape )
		
		activationFunction = breve.createInstances(breve.BraitenbergActivationObject, 1)
		activationFunction.setType(function)
		sensor.setActivationObject( activationFunction )
		sensor.activationObject.setName( name)
		
		'''Sets the angle of the sensor'''
		sensor.setSensorAngle(viewAngle)
		
		joint = breve.createInstances( breve.FixedJoint, 1 )
		joint.setRelativeRotation( axis, angle )
			
		joint.link( location, breve.vector( 0, 0, 0 ), sensor, self.bodyLink )
		joint.setDoubleSpring( 300, 0.010000, -0.010000 )
		self.addDependency( joint )
		self.addDependency( sensor )
		
		sensor.setType(type)
			
		self.sensors.append( sensor )
		self.sensorsList.append( sensor )
		return sensor
コード例 #17
0
ファイル: Egg.py プロジェクト: Rafael-Ribeiro/ai-intro
	def iterate(self):
		self.age = self.getAge()

		if self.age >= BIRTH_TIME:
			sex = random()

			if sex < 0.5: #TODO restore 0.5
				from Male import MaleVehicle
				child = breve.createInstances(MaleVehicle, 1)

			else:
				from Female import FemaleVehicle
				child = breve.createInstances(FemaleVehicle, 1)

			child.move(self.getLocation())
			child.rotate(d.UP, math.pi*2*random())

			if self.getController().unwatch(self):
				self.getController().watch(child) # Continue to watch the child (if the egg was the camera target)

			breve.deleteInstances(self)
			return
		
		shape = breve.createInstances(breve.Sphere, 1).initWithSphere(self.age/BIRTH_TIME*(MAX_SIZE-MIN_SIZE)+MIN_SIZE)
		self.setShape(shape)
		self.offset(breve.vector(0,0.01,0))
コード例 #18
0
ファイル: BipedBody.py プロジェクト: johan1a/GeneticWalkers
	def initJoints( self ):
		self.upperLegJoints = breve.createInstances( breve.RevoluteJoints, NBR_LEGS)
		self.lowerLegJoints = breve.createInstances( breve.RevoluteJoints, NBR_LEGS)
		self.footJoints = breve.createInstances( breve.RevoluteJoints, NBR_LEGS)

		self.allJoints = self.upperLegJoints + self.lowerLegJoints + self.footJoints
		map(self.addDependency, self.allJoints)

		left = breve.vector( self.bodyWidth / 2.0, 0, self.bodyHeight/2 )
		right = breve.vector( -self.bodyWidth / 2.0, 0, self.bodyHeight/2 )
		bodyOffsets = [left, right]

		legOffset = breve.vector( 0, 0, self.legLength/2.0)
		footOffset = breve.vector( 0, 0, self.footHeight/2.0)
		
		#bodyOffset specifies the point the joints links to on the body, 
		#and upperLegOffset specifies the point on the leg to link to.
		for i in range(0, NBR_LEGS):
			self.upperLegJoints[i].link( ROTATION_NORMAL, bodyOffsets[i], -legOffset, self.upperLegs[ i ], self.bodyLink )
			self.lowerLegJoints[i].link( ROTATION_NORMAL, legOffset, -legOffset, self.lowerLegs[ i ], self.upperLegs[ i ] )
			self.footJoints[i].link( ROTATION_NORMAL, legOffset + footOffset, breve.vector( 0, 0, 0 ), self.feet[ i ], self.lowerLegs[ i ] )
		
		self.upperLegJoints.setDoubleSpring( 700, 0.800000, -0.800000 )
		self.lowerLegJoints.setDoubleSpring( 700, 0.800000, -0.800000 )
		self.footJoints.setDoubleSpring( 999, 0.400000, -0.400000 ) #kolla

		[ joint.setStrengthLimit( 500 ) for joint in self.allJoints ] #400 innan
		self.setRoot( self.bodyLink )
コード例 #19
0
    def init( self ):
        self.vehicle = breve.createInstances( breve.BraitenbergVehicle, 1 )
        self.watch( self.vehicle )
        self.vehicle.move(breve.vector(2,1,10))
        self.vehicle.rotate(breve.vector(0,1,0),3.14)
        self.block = breve.createInstances( breve.BraitenbergSound,1)
        self.block.move( breve.vector(2,1,15))
        self.block = breve.createInstances( breve.BraitenbergSound,1)
        self.block.move( breve.vector(-20,1,15))
        


        #Wheels and Sensors
        front_left = self.vehicle.addWheel(breve.vector(0,0,-1.5))
        front_right = self.vehicle.addWheel(breve.vector(0,0,1.5))
        
        leftSoundSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, -1.4),breve.vector( 0.75, 0, 1 ), 1, "Sounds")
        rightSoundSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, 1.4),breve.vector( -0.75, 0, 1 ), 1, "Sounds")
        leftSoundSensor.setActivationType("gauss")
        rightSoundSensor.setActivationType("gauss")
        leftSoundSensor.setGauss(0.20, 0.101)
        rightSoundSensor.setGauss(0.20, 0.101)
        leftSoundSensor.link(front_right)
        rightSoundSensor.link(front_left)
        
        front_left.setNaturalVelocity(1.2)
        front_right.setNaturalVelocity(1.2)
        
        leftSoundSensor.setBias(0.12)
        rightSoundSensor.setBias(0.12)
        
            
        breve.myBraitenbergControl = myBraitenbergControl
コード例 #20
0
ファイル: Painter.py プロジェクト: B-Rich/breve
	def init( self ):
		brush = None

		self.disableText()
		self.vel = ( 1.000000 + breve.randomExpression( 9 ) )
		self.acc = breve.randomExpression( 1000 )
		self.radius = ( 1.000000 + breve.randomExpression( 5 ) )
		if ( self.getArgumentCount() == 2 ):
			self.file = self.getArgument( 1 )

		else:
			self.file = 'images/jon.png'

		self.image = breve.createInstances( breve.Image, 1 ).load( self.file )
		self.blur = 0.992000
		if ( self.blur > 0.992000 ):
			self.blur = 0.992000

		self.blur = 1.000000
		self.setBackgroundColor( breve.vector( 0, 0, 0 ) )
		self.enableBlur()
		self.setBlurFactor( self.blur )
		self.radius = ( self.radius * ( self.image.getWidth() / 300.000000 ) )
		self.vel = ( self.vel * ( self.image.getWidth() / 300.000000 ) )
		self.acc = ( self.acc * ( self.image.getWidth() / 300.000000 ) )
		self.shape = breve.createInstances( breve.Sphere, 1 ).initWith( self.radius )
		brush = breve.createInstances( breve.Image, 1 ).load( 'images/brush.png' )
		breve.createInstances( breve.Painters, 200 ).setBitmapImage( brush )
		self.zoom = ( self.image.getWidth() + 10 )
		self.offsetCamera( breve.vector( 0, 0, self.zoom ) )
		self.setZClip( ( self.zoom + 100 ) )
コード例 #21
0
	def initShape( self, chromosomes ):
		self.bodyWidth = chromosomes[BODY_WIDTH]
		self.bodyLength = self.bodyWidth # might remove

		footWidth = chromosomes[FOOT_WIDTH]
		self.footHeight = FOOT_HEIGHT

		self.upperLegLength = chromosomes[UPPER_LEG_WIDTH]
		self.lowerLegLength = chromosomes[LOWER_LEG_WIDTH]

		self.startingHeight = self.upperLegLength + self.lowerLegLength + self.footHeight + 5

		lowerLegShape = breve.Cube().initWith( breve.vector( LEG_WIDTH , LEG_WIDTH , self.lowerLegLength )) 
		upperLegShape = breve.Cube().initWith( breve.vector( LEG_WIDTH , LEG_WIDTH , self.upperLegLength ))
		footShape = breve.Cube().initWith( breve.vector( footWidth, footWidth, self.footHeight ))
		bodyShape = breve.Cube().initWith( breve.vector( self.bodyWidth, self.bodyWidth, 0.400000 ) )
	
		self.bodyLink = breve.Link()
		self.lowerLegs = breve.createInstances( breve.Links, NBR_LEGS )
		self.upperLegs = breve.createInstances( breve.Links, NBR_LEGS )
		self.feet = breve.createInstances( breve.Links, NBR_LEGS )

		[ link.setShape(upperLegShape) for link in self.upperLegs ]
		[ link.setShape(lowerLegShape) for link in self.lowerLegs ]
		[ link.setShape(footShape) for link in self.feet ]

		self.bodyLink.setShape( bodyShape )

		#Used for resetting the walker position
		self.allLinks = [self.bodyLink] + self.upperLegs + self.lowerLegs + self.feet
コード例 #22
0
ファイル: PushGP.py プロジェクト: B-Rich/breve
	def createPopulation( self ):
		n = 0

		if self.pop1:
			breve.deleteInstances( self.pop1 )

		if self.pop2:
			breve.deleteInstances( self.pop2 )

		self.pop1 = breve.createInstances( breve.PushGPIndividuals, self.populationSize )
		self.pop2 = breve.createInstances( breve.PushGPIndividuals, self.populationSize )
		self.pop1.setInterpreter( self.interpreter )
		self.pop2.setInterpreter( self.interpreter )
		self.current = self.pop1
		self.next = self.pop2
		if self.seed:
			self.pop1[ 0 ].parse( self.seed )

		n = 0
		while ( n < self.countFitnessCases() ):
			self._solutionCountsGeneration.append( 0.000000 )
			self._solutionCountsTotal.append( 0.000000 )
			self._solutionRatesGeneration.append( 0.000000 )
			self._solutionRatesTotal.append( 0.000000 )

			n = ( n + 1 )

		self.inited = 1
コード例 #23
0
	def initJoints( self ):
		self.upperLegJoints = breve.createInstances( breve.RevoluteJoints, NBR_LEGS)
		self.lowerLegJoints = breve.createInstances( breve.RevoluteJoints, NBR_LEGS)

		self.allJoints = self.upperLegJoints + self.lowerLegJoints
		map(self.addDependency, self.allJoints)

		frontRight = breve.vector( self.bodyWidth / 2.0, -self.bodyWidth / 2.0, 0.2 )
		frontLeft = breve.vector( self.bodyWidth / 2.0, self.bodyWidth / 2.0, 0.2 )
		rearRight = breve.vector( -self.bodyWidth / 2.0, -self.bodyWidth / 2.0, 0.2 )
		rearLeft = breve.vector( -self.bodyWidth / 2.0, self.bodyWidth / 2.0, 0.2 )
		bodyOffsets = [frontLeft, frontRight, rearLeft, rearRight]

		upperLegOffset = breve.vector( 0, 0, self.upperLegLength/2.0)
		lowerLegOffset = breve.vector( 0, 0, self.lowerLegLength/2.0)
		
		#bodyOffset specifies the point the joints links to on the body, 
		#and upperLegOffset specifies the point on the leg to link to.
		for i in range(0, NBR_LEGS):
			self.upperLegJoints[i].link( ROTATION_NORMAL, bodyOffsets[i], -upperLegOffset, self.upperLegs[ i ], self.bodyLink )
			self.lowerLegJoints[i].link( ROTATION_NORMAL, upperLegOffset, -lowerLegOffset, self.lowerLegs[ i ], self.upperLegs[ i ] )

		self.upperLegJoints.setDoubleSpring( 700, 0.800000, -0.800000 )
		self.lowerLegJoints.setDoubleSpring( 700, 0.800000, -0.800000 )

		[ joint.setStrengthLimit( 500 ) for joint in self.allJoints ] #400 innan
		self.setRoot( self.bodyLink )
コード例 #24
0
ファイル: PushGP.py プロジェクト: B-Rich/breve
	def init( self ):
		self.server = breve.createInstances( breve.NetworkServer, 1 )
		self.server.listen( 59175 )
		self.server.setUploadRecipient( self )
		self.emigrationPercent = 3
		self.transfer = breve.createInstances( breve.PushProgramTransporter, 1 )
		self.port = 59175
コード例 #25
0
    def init(self):
        """"""

        print """ola"""
        breve.createInstances(breve.myAgents, 40)
        breve.createInstances(breve.Floor, 1).setSize(breve.vector(50, 0.100000, 50))
        self.pointCamera(breve.vector(0, 0, 0), breve.vector(0, 40, 80))
コード例 #26
0
	def init( self ):
		self.setBackgroundColor( breve.vector( 0, 0, 0 ) )
		self.setDisplayTextColor( breve.vector( 1, 1, 1 ) )
		self.setIterationStep(1.0)

		self.object1 = breve.createInstances( breve.CustomObject, 1)
		self.object2 = breve.createInstances( breve.CustomObject, 1)
		self.object3 = breve.createInstances( breve.CustomObject, 1)

		self.object1.pushInterpreter.pushVector( breve.vector(1, 2, 3) )
		self.object2.pushInterpreter.pushVector( breve.vector(100, 200, 300) )

		# first run
		self.object1.pushInterpreter.clearStacks()
		self.object1.pushInterpreter.run( self.object1.pushCode )
		print self.object1.pushInterpreter.getVectorStackTop()

		self.object2.pushInterpreter.clearStacks()
		self.object2.pushInterpreter.run( self.object1.pushCode )
		print self.object2.pushInterpreter.getVectorStackTop()

		print self.object3.pushCode.getList()
		# crossover
		self.crossover_push(self.object3, self.object1, self.object2)

		print self.object1.pushCode.getList(), self.object1.pushCode.getSize()
		print self.object2.pushCode.getList(), self.object2.pushCode.getSize()
		print self.object3.pushCode.getList(), self.object3.pushCode.getSize()

		# second run
		'''self.object1.pushInterpreter.clearStacks()
コード例 #27
0
ファイル: SwarmEvolve-2.0.py プロジェクト: kephale/breve
	def addRandomBirdsIfNecessary( self ):
		numBirds = 0

		numBirds = breve.length( breve.allInstances( "Birds" ) )
		if ( numBirds < 10 ):
			breve.createInstances( breve.Bird, 1 ).initializeRandomly()
			self.randomBirdsAdded = ( self.randomBirdsAdded + 1 )
			self.addRandomBirdsIfNecessary()
コード例 #28
0
ファイル: confibula.py プロジェクト: Anselmatus/confibula
    def __init__(self):
	breve.Stationary.__init__( self )
	self.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( self.controller.config.getValue("mapWidth"), self.controller.config.getValue("mapHeight"), 0.0001 )) )
	self.setTextureImage( breve.createInstances( breve.SongFieldTexture, 1 ) )
        self.setColor(breve.vector(0,0,0))
        self.setTransparency(1.)
	self.move( breve.vector( 0, 0, 0.006 ) )
        self.setRotation( breve.vector(0,0,1),1.5708)
コード例 #29
0
	def iterate( self ):
		self.updateNeighbors()

		self.numBirds = 0
		for bird in breve.allInstances( "Bird" ):
			if bird.isAlive:
				bird.fly()
				self.numBirds += 1

		self.numPred = 0
		for predator in breve.allInstances( "Predator" ):
			if predator.isAlive:
				predator.fly()
				self.numPred += 1

		self.totalFoodSupply = 0
		for feeder in breve.allInstances( "Feeder" ):
			if feeder.rapid:
				feeder.rapidGrow()
				self.totalFoodSupply += feeder.VirtualEnergy
			self.totalFoodSupply += feeder.energy
			if feeder.energy <= 0 and not feeder.rapid:
				breve.deleteInstances( feeder )
		self.addRandomFeederIfNecessary(rapid=True)

		for corpse in breve.allInstances( "Corpse" ):
			corpse.changeColor()
			if sum(corpse.getColor()) <= 0:	
				breve.deleteInstances( corpse.shape )
				breve.deleteInstances( corpse )

		self.current_generation += 1
		if self.current_generation % self.breeding_season == 0:
			if breve.length(self.pollBirds) < self.breeding_inc*self.numBirds:
				new_birds = int(math.ceil(self.breeding_inc*self.numBirds)) - breve.length(self.pollBirds)
				breve.createInstances( breve.Bird, new_birds).dropDead(False)

			if breve.length(self.pollPredators) < self.breeding_inc*self.numPred:
				new_preds = int(math.ceil(self.breeding_inc*self.numPred)) - breve.length(self.pollPredators)
				breve.createInstances( breve.Predator, new_preds).dropDead(False)

			for i in range(int(math.ceil(self.breeding_inc*self.numBirds))):
				self.evolutionayAlgorithm(self.pollBirds)
			if self.numPred < self.numBirds*self.max_pop_predadors:
				for i in range(int(min(math.ceil(self.breeding_inc*self.numPred), self.numBirds*self.max_pop_predadors))):
					self.evolutionayAlgorithm(self.pollPredators)


		self.setDisplayText("Birds Alive: "+str(self.numBirds), xLoc = -0.950000, yLoc = -0.650000, messageNumber = 2, theColor = breve.vector( 1, 1, 1 ))
		self.setDisplayText("Predators Alive: "+str(self.numPred), xLoc = -0.950000, yLoc = -0.750000, messageNumber = 3, theColor = breve.vector( 1, 1, 1 ))
		self.setDisplayText("Dead Birds: "+str(self.num_dead_birds), xLoc = -0.950000, yLoc = -0.850000, messageNumber = 0, theColor = breve.vector( 1, 1, 1 ))
		self.setDisplayText("Dead Predators: "+str(self.num_dead_predators), xLoc = -0.950000, yLoc = -0.950000, messageNumber = 1, theColor = breve.vector( 1, 1, 1 ))

		# needed to move the agents with velocity and acceleration
		# also needed to detect collisions
		# print str(self.numBirdsBirth)

		breve.Control.iterate( self )
コード例 #30
0
ファイル: StarTunnel.py プロジェクト: B-Rich/breve
	def init( self ):
		self.setIntegrationStep( 0.100000 )
		self.setIterationStep( 0.200000 )
		self.setBackgroundColor( breve.vector( 0, 0, 0 ) )
		self.setZClip( 1000 )
		self.disableText()
		self.lightmap = breve.createInstances( breve.Image, 1 ).load( 'images/lightmap.png' )
		self.particles = breve.createInstances( breve.Particles, 700 )
		self.pointCamera( breve.vector( 0, 0, 0 ), breve.vector( 0.000000, 0.000000, 100.000000 ) )
コード例 #31
0
	def dropDead(self, corpse=True):
		if corpse:
			c = breve.createInstances( breve.Corpse, 1 )
			c.move( self.getLocation() )
			c.setColor (self.getColor() )
			c.energy = self.energy
			#c.lastScale = self.lastScale
			c.adjustSize()
			c.myPoint( breve.vector( 0, 1, 0 ), self.getVelocity())

		self.setColor(breve.vector(0,0,0))
		#just to don't overlap the animation 
		self.changePos(-9999,9999)
		self.changeVel(0,0)
		self.changeAccel(0,0)
		self.age = 0
		self.energy = 1
		self.isAlive = False
		self.controller.pollPredators.append(self)
		self.controller.numDeadPredators += 1
コード例 #32
0
    def mutate(self, temp_object):
        print temp_object.pushCode.getList()

        c = breve.createInstances(breve.PushProgram, 1)
        temp_object.pushInterpreter.copyCodeStackTop(c)
        c.mutate(temp_object.pushInterpreter)
        self.object1.pushInterpreter.clearStacks()

        if len(c.getList()) > 0:
            print "diversity", temp_object.pushCode.getTopLevelDifference(c)
            print temp_object.pushCode.getTopLevelSize(), c.getTopLevelSize()

            temp_object.pushInterpreter.pushCode(c)
            b = temp_object.pushCode
            temp_object.pushCode = c
            breve.deleteInstances(b)
        else:
            temp_object.pushInterpreter.pushCode(temp_object.pushCode)

        print temp_object.pushCode.getList()
コード例 #33
0
	def createPredators(self, num):
		# latin hypercubes
		if num < 1:
			return

		size = (int) (math.floor(num**0.5))
		num_segments_x = (self.maxX-self.minX)/size
		num_segments_y = (self.maxY-self.minY)/size

		for i in range(size):
			for j in range(size):
				x = random.uniform((float) (i*num_segments_x+self.minX), (float) ((i+1)*num_segments_x+self.minX))
				y = random.uniform((float)(j*num_segments_y+self.minY), (float)((j+1)*num_segments_y+self.minY))
				if breve.length(self.pollPredators) < 1:
					temp_predator = breve.createInstances( breve.Predator, 1)
					temp_predator.initializeRandomly(x, y, random.choice(["m", "f"]))
				else:
					temp_predator = self.pollPredators[0]
					self.pollPredators.remove(temp_predator)
					temp_predator.initializeRandomly(x, y, random.choice(["m", "f"]))
コード例 #34
0
	def createPreys(self, num):
		# latin hypercubes
		if num < 1:
			return

		size = (int) (math.floor(num**0.5))
		num_segments_x = (self.maxX-self.minX)/size
		num_segments_y = (self.maxY-self.minY)/size

		for i in range(size):
			for j in range(size):
				x = random.uniform((float) (i*num_segments_x+self.minX), (float) ((i+1)*num_segments_x+self.minX))
				y = random.uniform((float)(j*num_segments_y+self.minY), (float)((j+1)*num_segments_y+self.minY))
				if breve.length(self.pollPreys) < 1:
					temp_prey = breve.createInstances( breve.Prey, 1)
					temp_prey.initializeRandomly(x,y,'m')
				else:
					temp_prey = self.pollPreys[0]
					temp_prey.isAlive = True
					self.pollPreys.remove(temp_prey)
					temp_prey.initializeRandomly(x,y,'m')
コード例 #35
0
    def autoSimplify(self, p):
        '''Programs generated through genetic programming are often complicated and  difficult to understand.  This method attempts to simplify an evolved   push program while maintaining the same fitness. <P> Each time this method is invoked, a random simplification is preformed  on the program p.  If the simplification does not harm the fitness, p is modified to contain the simplification, otherwise, nothing happens. This method should be called repeatedly -- perhaps 100 times or more  to aggressively simplify an unweildy program.'''

        newFitness = 0
        fitness = 0
        newProgram = None

        fitness = self.computeZeroDurationFitness(p)
        newProgram = breve.createInstances(breve.PushGPIndividual, 1)
        newProgram.copyFrom(p)
        if breve.randomExpression(1):
            newProgram.deleteRandomSubtree()
        else:
            newProgram.flattenRandomSubtree()

        newFitness = self.computeZeroDurationFitness(newProgram)
        if (newFitness == fitness):
            p.copyFrom(newProgram)

        breve.deleteInstances(newProgram)
        return p
コード例 #36
0
	def initWith( self, xpos, zpos ):
		self.height = ( 2 * 0.250000 )
		self.front = breve.createInstances( breve.Mobile, 1 )
		self.front.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 1, self.height, 11 ) ) )
		self.front.move( breve.vector( ( xpos - 1 ), ( ( 0.500000 * self.height ) + 0.100000 ), ( ( zpos + ( 11.000000 / 2.000000 ) ) - 0.500000 ) ) )
		self.front.setColor( breve.vector( 0.000000, 0.600000, 0.100000 ) )
		self.front.enablePhysics()
		self.back = breve.createInstances( breve.Mobile, 1 )
		self.back.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 1, self.height, 11 ) ) )
		self.back.move( breve.vector( ( xpos + 11 ), ( ( 0.500000 * self.height ) + 0.100000 ), ( ( zpos + ( 11.000000 / 2.000000 ) ) - 0.500000 ) ) )
		self.back.setColor( breve.vector( 0.000000, 0.600000, 0.100000 ) )
		self.back.enablePhysics()
		self.left = breve.createInstances( breve.Mobile, 1 )
		self.left.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 11, self.height, 1 ) ) )
		self.left.move( breve.vector( ( xpos + ( ( 11.000000 / 2.000000 ) - 0.500000 ) ), ( ( 0.500000 * self.height ) + 0.100000 ), ( zpos - 1 ) ) )
		self.left.setColor( breve.vector( 0.000000, 0.600000, 0.100000 ) )
		self.left.enablePhysics()
		self.right = breve.createInstances( breve.Mobile, 1 )
		self.right.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 11, self.height, 1 ) ) )
		self.right.move( breve.vector( ( xpos + ( ( 11.000000 / 2.000000 ) - 0.500000 ) ), ( ( 0.500000 * self.height ) + 0.100000 ), ( zpos + 11 ) ) )
		self.right.setColor( breve.vector( 0.000000, 0.600000, 0.100000 ) )
		self.right.enablePhysics()
		return self
コード例 #37
0
    def setupTest(self, i):
        l = None
        low = breve.vector()
        lowest = 0

        for l in breve.allInstances("Links"):
            breve.deleteInstances(l.getShape())

        breve.deleteInstances(breve.allInstances("Links"))
        breve.deleteInstances(breve.allInstances("Joints"))
        if self.body:
            breve.deleteInstances(self.body)

        self.body = breve.createInstances(breve.MultiBody, 1)
        self.body.setRoot(self.parser.parseTopLevel(i.getGenome().getRoot()))
        self.body.disableSelfCollisions()
        self.addDependency(self.body)
        self.schedule('checkPenetration', (self.getTime() + 8.000000))
        self.setDisplayText('''Preparing to test %s...''' % (i), -0.950000,
                            -0.950000)
        self.updateText()
        self.running = 0
コード例 #38
0
    def iterate(self):
        if self.current_generation < 5000:
            if not self.movie:
                self.movie = breve.createInstances(breve.Movie, 1)
                self.movie.record('BOID_simple.mpeg')

            self.updateNeighbors()

            birds = breve.allInstances("Bird")

            for bird in birds:
                bird.fly()

            self.current_generation += 1

            # needed to move the agents with velocity and acceleration
            # also needed to detect collisions
            breve.Control.iterate(self)

        elif self.movie:
            self.movie.close()
            breve.deleteInstances(self.movie)
            self.movie = None
コード例 #39
0
    def init(self):
        self.startTexture = breve.createInstances(breve.Image,
                                                  1).load('images/star.png')
        self.flag = breve.createInstances(breve.Mobile, 1)
        self.flag.disablePhysics()
        self.flag.setBitmapImage(self.startTexture)
        self.flag.setColor(breve.vector(1, 1, 0))
        self.flag.setLabel('Start')
        self.flag.disableShadows()
        self.setMountainSkybox()
        self.blockTexture = breve.createInstances(breve.Image,
                                                  1).load('images/noise.png')
        self.floor = breve.createInstances(breve.Floor, 1)
        self.floor.setTextureImage(
            breve.createInstances(breve.Image, 1).load('images/ground.png'))
        self.floor.setColor(breve.vector(0.800000, 0.800000, 0.800000))
        self.setSkyboxImages([
            'images/MountainBoxFront.png', 'images/MountainBoxBack.png',
            'images/MountainBoxLeft.png', 'images/MountainBoxRight.png',
            'images/MountainBoxTop.png', 'images/MountainBoxBottom.png'
        ])
        self.enableFastPhysics()
        self.setFastPhysicsIterations(20)
        self.enableShadowVolumes()
        self.parser = breve.createInstances(breve.MorphologyParser, 1)
        self.ga = self.controller.dearchiveXml('breveCreatures.xml')

        if (not self.ga):
            self.ga = breve.createInstances(breve.SimsGA, 1)
            self.ga.setFitnessTestDuration(30)
            self.ga.setIndividualClass('SimsGAIndividual')
            self.ga.setPopulationSize(25)
            self.ga.setCrossoverPercent(30)
            self.ga.setMutationPercent(30)
            self.ga.setSpatialRadius(4)

        self.addDependency(self.ga)
        self.updateText()
コード例 #40
0
ファイル: Braitenberg.py プロジェクト: Penetra/Braitenberg
	def addSensor( self, location, rotation, direction, type ):
		'''Adds a sensor at location on the vehicle.  This method returns the sensor which is created, a OBJECT(BraitenbergSensor).  You'll use the returned object to connect it to the vehicle's wheels.'''

		joint = None
		sensor = None
		
		if type=="Lights":
			sensor = breve.createInstances( breve.BraitenbergLightSensor, 1 )
			sensor.setColor( breve.vector( 1, 0, 0 ) )
			
		elif type=="Smells":
			sensor = breve.createInstances( breve.BraitenbergSmellSensor, 1 )
			sensor.setColor( breve.vector( 0, 1, 0 ) )
		
		elif type=="Sounds":
			sensor = breve.createInstances( breve.BraitenbergSoundSensor, 1 )
			sensor.setColor( breve.vector( 0, 0, 1 ) )
		
		elif type=="Blocks":
			sensor = breve.createInstances( breve.BraitenbergBlockSensor, 1 )
			sensor.setColor( breve.vector( 0, 0, 0 ) )
		elif type=="Balls":
			sensor = breve.createInstances( breve.BraitenbergBallSensor, 1 )
			sensor.setColor( breve.vector( 0.5, 0.3, 0.1 ) )
		
		sensor.setType(type)
		sensor.setShape( self.sensorShape )
		joint = breve.createInstances(breve.FixedJoint,1)
		if direction>0:
			joint.setRelativeRotation(rotation, 1.570000)
		else:
			joint.setRelativeRotation(rotation, -1.570000)
		joint.link( location, breve.vector( 0, 0, 0 ), sensor, self.bodyLink )
		joint.setDoubleSpring( 300, 0.010000, -0.010000 )
		self.addDependency( joint )
		self.addDependency( sensor )
		self.sensors.append( sensor )
		return sensor
コード例 #41
0
 def init(self):
     self.interpreter = breve.createInstances(breve.PushInterpreter, 1)
     self.interpreter.clearStacks()
     self.interpreter.readConfig('PushTest.config')
     self.interpreter.addInstruction(self, 'callback2', 'CALLBACKTEST2')
     self.interpreter.addInstruction(self, 'callback', 'CALLBACKTEST')
コード例 #42
0
ファイル: Control.py プロジェクト: pemby/breve
    def addMenuSeparator(self):
        '''Adds a separator menu item--really just an empty menu item.'''

        return breve.createInstances(breve.MenuItem,
                                     1).createMenu('', self, '')
コード例 #43
0
 def init(self):
     breve.createInstances(breve.PushTest, 1).go()
コード例 #44
0
 def init(self):
     self.shape = breve.createInstances(breve.PolygonCone,
                                        1).initWith(5, 0.200000, 0.100000)
     self.setShape(self.shape)
     self.adjustSize()
     self.setNeighborhoodSize(10.0)
コード例 #45
0
	def init( self ):
		self.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 1, 1, 1 ) ) )
		self.enablePhysics()
コード例 #46
0
 def init(self):
     breve.createInstances(breve.CustomShapeAgent, 1)
     self.enableLighting()
コード例 #47
0
    def iterate(self):
        self.updateNeighbors()

        self.numBirds = 0
        for bird in breve.allInstances("Bird"):
            if bird.isAlive:
                bird.fly()
                self.numBirds += 1

        self.numPred = 0
        for predator in breve.allInstances("Predator"):
            if predator.isAlive:
                predator.fly()
                self.numPred += 1

        self.totalFoodSupply = 0
        for feeder in breve.allInstances("Feeder"):
            if feeder.rapid:
                feeder.rapidGrow()
                self.totalFoodSupply += feeder.VirtualEnergy
            self.totalFoodSupply += feeder.energy
            if feeder.energy <= 0 and not feeder.rapid:
                breve.deleteInstances(feeder)
        self.addRandomFeederIfNecessary(rapid=True)

        for corpse in breve.allInstances("Corpse"):
            corpse.changeColor()
            if sum(corpse.getColor()) <= 0:
                breve.deleteInstances(corpse.shape)
                breve.deleteInstances(corpse)

        self.current_generation += 1
        if self.current_generation % self.breeding_season == 0:
            if breve.length(
                    self.pollBirds) < self.breeding_inc * self.numBirds:
                new_birds = int(math.floor(
                    self.breeding_inc * self.numBirds)) - breve.length(
                        self.pollBirds)
                breve.createInstances(breve.Bird, new_birds).dropDead(False)

            if breve.length(
                    self.pollPredators) < self.breeding_inc * self.numPred:
                new_preds = int(math.floor(
                    self.breeding_inc * self.numPred)) - breve.length(
                        self.pollPredators)
                breve.createInstances(breve.Predator,
                                      new_preds).dropDead(False)

            for i in range(
                    int(math.floor(self.breeding_inc * self.numBirds)) / 2):
                self.evolutionayAlgorithm(self.pollBirds)
            if self.numPred < self.numBirds * self.max_pop_predadors:
                for i in range(
                        int(
                            min(math.floor(self.breeding_inc * self.numPred),
                                self.numBirds * self.max_pop_predadors)) / 2):
                    self.evolutionayAlgorithm(self.pollPredators)

        self.setDisplayText("Birds Alive: " + str(self.numBirds),
                            xLoc=-0.950000,
                            yLoc=-0.650000,
                            messageNumber=2,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Predators Alive: " + str(self.numPred),
                            xLoc=-0.950000,
                            yLoc=-0.750000,
                            messageNumber=3,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Dead Birds: " + str(self.num_dead_birds),
                            xLoc=-0.950000,
                            yLoc=-0.850000,
                            messageNumber=0,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Dead Predators: " + str(self.num_dead_predators),
                            xLoc=-0.950000,
                            yLoc=-0.950000,
                            messageNumber=1,
                            theColor=breve.vector(1, 1, 1))

        # needed to move the agents with velocity and acceleration
        # also needed to detect collisions
        # print str(self.numBirdsBirth)

        breve.Control.iterate(self)
コード例 #48
0
	def init( self ):
		self.setShape( breve.createInstances( breve.Sphere, 1 ).initWith( breve.randomExpression( 1.000000 ) ) )
		self.setColor( breve.randomExpression( breve.vector( 1, 1, 1 ) ) )
		self.move( ( breve.randomExpression( breve.vector( 10, 0, 10 ) ) + breve.vector( -5, 15, -5 ) ) )
		self.enablePhysics()
コード例 #49
0
	def dropBall( self ):
		breve.createInstances( breve.Ball, 1 )
コード例 #50
0
 def init(self):
     self.setShape(
         breve.createInstances(breve.Cube, 1).initWith(
             breve.vector(0.500000, 0.500000, 0.500000)))
コード例 #51
0
    def init(self):
        x = 0
        y = 0
        z = 0
        startblock = 0
        endblock = 0
        numsprings = 0
        NUMEDGESONSIDE = 0
        p1 = 0
        p2 = 0
        xoff1 = 0
        yoff1 = 0
        zoff1 = 0
        xoff2 = 0
        yoff2 = 0
        zoff2 = 0
        complength = 0

        NUMEDGESONSIDE = (3 - 1)
        self.NODES = ((3 * 3) * 3)
        self.setBackgroundColor(breve.vector(0.700000, 0.700000, 0.700000))
        self.pointCamera(breve.vector(0, 10, 0), breve.vector(70, 20, 70))
        self.nodes = breve.createInstances(breve.Nodes, self.NODES)
        self.nodes.enablePhysics()
        x = 0
        while (x < 3):
            y = 0
            while (y < 3):
                z = 0
                while (z < 3):
                    startblock = ((x + (y * 3)) + ((z * 3) * 3))
                    self.nodes[startblock].move(
                        breve.vector(((x * 9) - ((3 / 2) * 9)), ((y * 9) + 20),
                                     ((z * 9) - ((3 / 2) * 9))))

                    z = (z + 1)

                y = (y + 1)

            x = (x + 1)

        self.setGravity(breve.vector(0, -9.800000, 0))
        breve.createInstances(breve.Floor, 1)
        x = 0
        while (x < NUMEDGESONSIDE):
            y = 0
            while (y < NUMEDGESONSIDE):
                z = 0
                while (z < NUMEDGESONSIDE):
                    p1 = 0
                    while (p1 < 7):
                        p2 = (p1 + 1)
                        while (p2 < 8):
                            xoff1 = (p1 % 2)
                            yoff1 = ((p1 / 2) % 2)
                            if (p1 < 4):
                                zoff1 = 0

                            else:
                                zoff1 = 1

                            xoff2 = (p2 % 2)
                            yoff2 = ((p2 / 2) % 2)
                            if (p2 < 4):
                                zoff2 = 0

                            else:
                                zoff2 = 1

                            complength = (
                                breve.breveInternalFunctionFinder.sqrt(
                                    self, ((((xoff1 - xoff2)**2) +
                                            ((yoff1 - yoff2)**2)) +
                                           ((zoff1 - zoff2)**2))) * 9)
                            if (complength > 0):
                                startblock = (((x + xoff1) +
                                               ((y + yoff1) * 3)) +
                                              (((z + zoff1) * 3) * 3))
                                endblock = (((x + xoff2) + ((y + yoff2) * 3)) +
                                            (((z + zoff2) * 3) * 3))
                                breve.createInstances(
                                    breve.Spring,
                                    1).connect(self.nodes[startblock],
                                               self.nodes[endblock],
                                               breve.vector(0, 0, 0),
                                               breve.vector(0, 0,
                                                            0), complength, 5)
                                numsprings = (numsprings + 1)

                            p2 = (p2 + 1)

                        p1 = (p1 + 1)

                    z = (z + 1)

                y = (y + 1)

            x = (x + 1)

        self.nodes[0].setVelocity(breve.vector(100, 0, 0))
        print '''NumSprings = %s''' % (numsprings)
コード例 #52
0
 def init(self):
     self.light = breve.createInstances(breve.BraitenbergLight, 1)
     self.light.move(breve.vector(10, 1, 0))
     self.vehicle = breve.createInstances(breve.BraitenbergVehicle, 1)
     self.watch(self.vehicle)
コード例 #53
0
    def init(self):
        self.vehicle = breve.createInstances(breve.BraitenbergVehicle, 1)
        self.vehicle.move(breve.vector(10, 0, 10))
        self.watch(self.vehicle)

        #Wheels and Sensors
        front_left = self.vehicle.addWheel(breve.vector(0, 0, -1.5))
        front_right = self.vehicle.addWheel(breve.vector(0, 0, 1.5))

        leftSoundSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, -1.4),
                                                 breve.vector(0, 0, 1), 1,
                                                 "Sounds")
        rightSoundSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, 1.4),
                                                  breve.vector(0, 0, 1), 1,
                                                  "Sounds")
        leftSoundSensor.link(front_right)
        rightSoundSensor.link(front_left)
        leftSoundSensor.setLeftSensor(1)
        leftSoundSensor.setBias(-0.5)
        rightSoundSensor.setBias(-0.5)

        leftLightSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, -1.4),
                                                 breve.vector(0, 0, 1), 1,
                                                 "Lights")
        rightLightSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, 1.4),
                                                  breve.vector(0, 0, 1), 1,
                                                  "Lights")
        leftLightSensor.link(front_left)
        rightLightSensor.link(front_right)

        leftSmellSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, -1.4),
                                                 breve.vector(0, 0, 1), 1,
                                                 "Smells")
        rightSmellSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, 1.4),
                                                  breve.vector(0, 0, 1), 1,
                                                  "Smells")
        leftSmellSensor.link(front_left)
        rightSmellSensor.link(front_right)

        leftSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, -1.4),
                                            breve.vector(0, 0, 1), 1, "Blocks")
        rightSensor = self.vehicle.addSensor(breve.vector(2.2, 0.1, 1.4),
                                             breve.vector(0, 0, 1), 1,
                                             "Blocks")
        leftSensor.link(front_left)
        rightSensor.link(front_right)

        front_left.setNaturalVelocity(1.2)
        front_right.setNaturalVelocity(1.2)

        # Surrounding blocks

        for i in range(20):
            #WEST
            breve.createInstances(breve.BraitenbergSound,
                                  1).move(breve.vector(i * 3, 0, 0))
            #NORTH
            breve.createInstances(breve.BraitenbergSound,
                                  1).move(breve.vector(60, 0, i * 3))
            #EAST
            breve.createInstances(breve.BraitenbergSound,
                                  1).move(breve.vector(i * 3, 0, 58))
            #SOUTH
            breve.createInstances(breve.BraitenbergSound,
                                  1).move(breve.vector(0, 0, i * 3))

        # objects
        for i in range(5):
            x = random() * 58
            y = random() * 58
            breve.createInstances(breve.BraitenbergLight,
                                  1).move(breve.vector(x, 0, y))
        for i in range(5):
            x = random() * 58
            y = random() * 58
            breve.createInstances(breve.BraitenbergSmell,
                                  1).move(breve.vector(x, 0, y))
        for i in range(5):
            x = random() * 58
            y = random() * 58
            breve.createInstances(breve.BraitenbergBlock,
                                  1).move(breve.vector(x, 0, y))

        breve.myBraitenbergControl = myBraitenbergControl
コード例 #54
0
 def init(self):
     breve.createInstances(breve.TransparentCube, 1)
     self.setBackgroundColor(breve.vector(0, 0, 0))
     self.enableLighting()
     self.moveLight(breve.vector(0, 20, 0))
コード例 #55
0
 def init(self):
     self.myPythonObject = breve.createInstances(breve.PythonBridgeObject,
                                                 1)
     print self.myPythonObject.testVector(breve.vector(1, 1, 1))
コード例 #56
0
    def iterate(self):
        self.updateNeighbors()

        # moviment of Prey
        self.numPreys = 0
        for prey in breve.allInstances("Prey"):
            if prey.isAlive:
                prey.fly()
                self.numPreys += 1

        # moviment of Predator
        self.numPredators = 0
        for predator in breve.allInstances("Predator"):
            if predator.isAlive:
                predator.fly()
                self.numPredators += 1

        # management of the energy from feeders
        self.totalFoodSupply = 0
        for feeder in breve.allInstances("Feeder"):
            if feeder.rapid:
                feeder.rapidGrow()
                self.totalFoodSupply += feeder.VirtualEnergy
            self.totalFoodSupply += feeder.energy
            if feeder.energy <= 0 and not feeder.rapid:
                breve.deleteInstances(feeder)
        self.addRandomFeederIfNecessary(rapid=True)

        # vanish corpse
        for corpse in breve.allInstances("Corpse"):
            corpse.changeColor()
            if sum(corpse.getColor()) <= 0:
                breve.deleteInstances(corpse.shape)
                breve.deleteInstances(corpse)
            print corpse.getColor()

        self.current_generation += 1
        # breeding
        if self.current_generation % self.breeding_season == 0:
            # preys
            tam_prey = int(math.ceil((self.breeding_inc * self.numPreys) / 2))
            if breve.length(self.pollPreys) < tam_prey * 2:
                new_prey = tam_prey - breve.length(self.pollPreys)
                breve.createInstances(breve.Prey, new_prey).dropDead(False)
            for i in range(tam_prey):
                self.evolutionayAlgorithm(self.pollPreys)

            # predators
            predator_max = self.numPreys * self.max_pop_predadors
            predator_breed = self.breeding_inc * self.numPredators
            tam_predator = int(math.ceil(
                min(predator_max, predator_breed) / 2))
            if breve.length(self.pollPredators) < tam_predator * 2:
                new_preds = tam_predator - breve.length(self.pollPredators)
                breve.createInstances(breve.Predator,
                                      new_preds).dropDead(False)
            for i in range(tam_predator):
                self.evolutionayAlgorithm(self.pollPredators)
        # immigrants
        else:
            if self.numPreys < 0.2 * self.initialNumPreys:
                self.revive(self.pollPreys,
                            math.floor(0.15 * self.initialNumPreys))
                self.createPreys(math.floor(0.05 * self.initialNumPreys))
            if self.numPredators < 0.2 * self.initialNumPredators:
                self.revive(self.pollPredators,
                            math.floor(0.15 * self.initialNumPredators))
                self.createPredators(
                    math.floor(0.05 * self.initialNumPredators))

        # checkpoint
        if self.isToSave and self.current_generation % (self.breeding_season *
                                                        25) == 0:
            self.save_data()

        self.setDisplayText("Generation: " + str(
            (int)(math.ceil(self.current_generation / self.breeding_season))),
                            xLoc=-0.950000,
                            yLoc=-0.550000,
                            messageNumber=5,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Preys Alive: " + str(self.numPreys),
                            xLoc=-0.950000,
                            yLoc=-0.650000,
                            messageNumber=4,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Predators Alive: " + str(self.numPredators),
                            xLoc=-0.950000,
                            yLoc=-0.750000,
                            messageNumber=3,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Dead Preys: " + str(self.numDeadPreys),
                            xLoc=-0.950000,
                            yLoc=-0.850000,
                            messageNumber=2,
                            theColor=breve.vector(1, 1, 1))
        self.setDisplayText("Dead Predators: " + str(self.numDeadPredators),
                            xLoc=-0.950000,
                            yLoc=-0.950000,
                            messageNumber=1,
                            theColor=breve.vector(1, 1, 1))

        # needed to move the agents with velocity and acceleration
        # also needed to detect collisions
        # print str(self.numBirdsBirth)
        breve.Control.iterate(self)
コード例 #57
0
 def init(self):
     # self.shape = breve.createInstances( breve.PolygonCone, 1 ).initWith( 5, 0.200000, 0.100000 )
     self.shape = breve.createInstances(breve.myCustomShape, 1)
     self.setShape(self.shape)
     self.adjustSize()
     self.setNeighborhoodSize(self.controller.neighborRadius)
コード例 #58
0
 def init(self):
     self.setShape(breve.createInstances(breve.myCustomShape, 1))
     self.setColor(breve.randomExpression(breve.vector(1, 1, 1)))
コード例 #59
0
 def init(self):
     self.shape = breve.createInstances(breve.Sphere, 1).initWith(0.300000)
     self.setShape(self.shape)
     self.setColor(breve.vector(1, 1, 0))
コード例 #60
0
ファイル: Creatures.py プロジェクト: pemby/breve
 def init(self):
     self.genome = breve.createInstances(breve.GADirectedGraph, 1)
     self.randomize()
     self.addDependency(self.genome)