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 )
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()
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()
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 )
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
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)
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"))
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 )
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)
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 ) )
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
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
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
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
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
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
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))
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 )
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
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 ) )
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
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
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 )
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
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))
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()
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()
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)
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 )
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 ) )
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
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()
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"]))
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')
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
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
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
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
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()
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
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')
def addMenuSeparator(self): '''Adds a separator menu item--really just an empty menu item.''' return breve.createInstances(breve.MenuItem, 1).createMenu('', self, '')
def init(self): breve.createInstances(breve.PushTest, 1).go()
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)
def init( self ): self.setShape( breve.createInstances( breve.Cube, 1 ).initWith( breve.vector( 1, 1, 1 ) ) ) self.enablePhysics()
def init(self): breve.createInstances(breve.CustomShapeAgent, 1) self.enableLighting()
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)
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()
def dropBall( self ): breve.createInstances( breve.Ball, 1 )
def init(self): self.setShape( breve.createInstances(breve.Cube, 1).initWith( breve.vector(0.500000, 0.500000, 0.500000)))
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)
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)
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
def init(self): breve.createInstances(breve.TransparentCube, 1) self.setBackgroundColor(breve.vector(0, 0, 0)) self.enableLighting() self.moveLight(breve.vector(0, 20, 0))
def init(self): self.myPythonObject = breve.createInstances(breve.PythonBridgeObject, 1) print self.myPythonObject.testVector(breve.vector(1, 1, 1))
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)
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)
def init(self): self.setShape(breve.createInstances(breve.myCustomShape, 1)) self.setColor(breve.randomExpression(breve.vector(1, 1, 1)))
def init(self): self.shape = breve.createInstances(breve.Sphere, 1).initWith(0.300000) self.setShape(self.shape) self.setColor(breve.vector(1, 1, 0))
def init(self): self.genome = breve.createInstances(breve.GADirectedGraph, 1) self.randomize() self.addDependency(self.genome)