def mutate_brain(brain): """ Add random mutations to a brain """ # For all synapses: shift in some direction with random chance for s in brain.synapses: if util.rand(0, 1) <= Agent._MUTATE_SYNAPSE_ODDS: s.weight += Agent._MUTATE_SYNAPSE_SHIFT * util.rand(-1, 1) s.weight = util.clamp(s.weight, -1, 1)
def setup_scene(): # Create camera target = util.ensure_target() util.ensure_camera((util.rand(), util.rand(), 8 + util.rand()), target) # Create light util.ensure_light(origin=(0, 0, 10)) # Create backdrop util.ensure_cube() # Create paper paperGen = paper.create_random_paper() minHeight = util.ensure_paper(paperGen) def adjust_height(world): return mathutils.Vector((world[0], world[1], world[2] - minHeight)) # Return lambda that maps paper coordinates to world return lambda coord: adjust_height(paperGen(*coord))
def breed_brain(parent_1_brain, parent_2_brain): """ Create a brain with mixed traits from two parents by starting with a copy of parent_1_brain then swapping or mixing with parent_2_brain """ brain = parent_1_brain.make_copy() # For all synapses: replace with parent 2, average, or leave the same for i, s in enumerate(brain.synapses): chance = util.rand(0, 1) parent_2_weight = parent_2_brain.synapses[i].weight if chance > 0.66: s.weight = parent_2_weight elif chance > 0.33: s.weight = (s.weight + parent_2_weight) / 2.0 return brain
#!/usr/bin/python from util import rand, ls, load, promptint, promptstr print("XKCD Password Generator.") dicts = ls("/usr/share/dict") print("{:d} files found in /usr/share/dict".format(len(dicts))) print("Choose which one to use 0-{:d}".format(len(dicts)-1)) for i in range(len(dicts)): print(str(i) + ": "+dicts[i].split("/")[-1]) d = load("/usr/share/dict/"+dicts[promptint("Choice (0-{:d}): ".format(len(dicts)-1))], promptint("Minimum word length: "), promptint("Maximum word length: ")) pw = "" for i in range(promptint("Number of words: ")): pw = pw + d[rand(len(d))][:-1] + " " print(pw)
from flask import redirect from flask import render_template from flask import request from flask.ext.socketio import SocketIO from models import App import traceback import client import config import helpers import util client.set_validate_ssl(config.validate_ssl) app = helpers.CustomFlask(__name__) app.debug = os.getenv('APP_DEBUG', 'false') == 'true' app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', util.rand(16)) socketio = SocketIO(app) routes_whitelist = [ '/signin', ] def form_as_dict(): form = {} for key, val in request.form.items(): if key not in form: form[key] = val elif not isinstance(form[key], list): form[key] = [form[key], val]
def create_random_brain(): """ Create a brain with randomized parameters """ brain = nnet.NeuralNetwork() # Logic neurons logic_0 = nnet.Neuron("lgc_0") logic_1 = nnet.Neuron("lgc_1") logic_2 = nnet.Neuron("lgc_2") logic_3 = nnet.Neuron("lgc_3") # Input (hunger) neuron turns on as health goes down hunger = nnet.Neuron("hunger", is_input=True) # Input (smell) neurons for nearby Food food_left = nnet.Neuron("fd_lft", is_input=True) food_right = nnet.Neuron("fd_rght", is_input=True) # Input (sight) neurons for nearby Agents agent_left = nnet.Neuron("agnt_lft", is_input=True) agent_right = nnet.Neuron("agnt_rght", is_input=True) # Output (movement) neurons move_left = nnet.Neuron("mv_lft") move_right = nnet.Neuron("mv_rght") # Output (attack) neuron attack = nnet.Neuron("atk") # Input layer brain.add_neuron(agent_left) brain.add_neuron(food_left) brain.add_neuron(hunger) brain.add_neuron(food_right) brain.add_neuron(agent_right) # Hidden layer brain.add_neuron(logic_0) brain.add_neuron(logic_1) brain.add_neuron(logic_2) brain.add_neuron(logic_3) # Output layer brain.add_neuron(move_left) brain.add_neuron(attack) brain.add_neuron(move_right) # Input to hidden layer: left side brain.add_synapse( nnet.Synapse(agent_left, logic_0, util.rand(-0.25, 1))) brain.add_synapse(nnet.Synapse(agent_left, logic_1, util.rand(-1, 1))) brain.add_synapse( nnet.Synapse(food_left, logic_0, util.rand(-0.25, 0.25))) brain.add_synapse(nnet.Synapse(food_left, logic_1, util.rand(-0.25, 1))) # Input to hidden layer: center brain.add_synapse(nnet.Synapse(hunger, logic_1, util.rand(-0.25, 0.75))) brain.add_synapse(nnet.Synapse(hunger, logic_2, util.rand(-0.25, 0.75))) # Input to hidden layer: right side brain.add_synapse( nnet.Synapse(food_right, logic_2, util.rand(-0.25, 1))) brain.add_synapse( nnet.Synapse(food_right, logic_3, util.rand(-0.25, 0.25))) brain.add_synapse( nnet.Synapse(agent_right, logic_2, util.rand(-0.25, 0.25))) brain.add_synapse( nnet.Synapse(agent_right, logic_3, util.rand(-0.25, 1))) # Hidden to output layer: left side brain.add_synapse( nnet.Synapse(logic_0, move_left, util.rand(-0.25, 0.25))) brain.add_synapse(nnet.Synapse(logic_0, attack, util.rand(-0.5, 0.5))) brain.add_synapse(nnet.Synapse(logic_1, move_left, util.rand(-0.25, 1))) brain.add_synapse(nnet.Synapse(logic_1, attack, util.rand(-0.25, 0.25))) # Hidden to output layer: right side brain.add_synapse(nnet.Synapse(logic_2, attack, util.rand(-0.25, 0.25))) brain.add_synapse( nnet.Synapse(logic_2, move_right, util.rand(-0.25, 1))) brain.add_synapse(nnet.Synapse(logic_3, attack, util.rand(-0.5, 0.5))) brain.add_synapse( nnet.Synapse(logic_3, move_right, util.rand(-0.25, 0.25))) return brain
def move_to_random(self): """ Move to a random location and heading within the world """ self.move_to(util.rand(0, Actor._WORLD_SIZE[0]), util.rand(0, Actor._WORLD_SIZE[1]), util.rand(0, 2 * math.pi))
def _will_attack(self): """ Determine if this Agent will attack another in an interaction """ prob = self.brain.find_neuron("atk").get_activation() prob = util.clamp(prob, 0, 1) return util.rand(0, 1) <= prob
def create_random_brain(): """ Create a brain with randomized parameters """ brain = nnet.NeuralNetwork() # Logic neurons logic_0 = nnet.Neuron("lgc_0") logic_1 = nnet.Neuron("lgc_1") logic_2 = nnet.Neuron("lgc_2") logic_3 = nnet.Neuron("lgc_3") # Input (hunger) neuron turns on as health goes down hunger = nnet.Neuron("hunger", is_input = True) # Input (smell) neurons for nearby Food food_left = nnet.Neuron("fd_lft", is_input = True) food_right = nnet.Neuron("fd_rght", is_input = True) # Input (sight) neurons for nearby Agents agent_left = nnet.Neuron("agnt_lft", is_input = True) agent_right = nnet.Neuron("agnt_rght", is_input = True) # Output (movement) neurons move_left = nnet.Neuron("mv_lft") move_right = nnet.Neuron("mv_rght") # Output (attack) neuron attack = nnet.Neuron("atk") # Input layer brain.add_neuron(agent_left) brain.add_neuron(food_left) brain.add_neuron(hunger) brain.add_neuron(food_right) brain.add_neuron(agent_right) # Hidden layer brain.add_neuron(logic_0) brain.add_neuron(logic_1) brain.add_neuron(logic_2) brain.add_neuron(logic_3) # Output layer brain.add_neuron(move_left) brain.add_neuron(attack) brain.add_neuron(move_right) # Input to hidden layer: left side brain.add_synapse(nnet.Synapse(agent_left, logic_0, util.rand(-0.25, 1))) brain.add_synapse(nnet.Synapse(agent_left, logic_1, util.rand(-1, 1))) brain.add_synapse(nnet.Synapse(food_left, logic_0, util.rand(-0.25, 0.25))) brain.add_synapse(nnet.Synapse(food_left, logic_1, util.rand(-0.25, 1))) # Input to hidden layer: center brain.add_synapse(nnet.Synapse(hunger, logic_1, util.rand(-0.25, 0.75))) brain.add_synapse(nnet.Synapse(hunger, logic_2, util.rand(-0.25, 0.75))) # Input to hidden layer: right side brain.add_synapse(nnet.Synapse(food_right, logic_2, util.rand(-0.25, 1))) brain.add_synapse(nnet.Synapse(food_right, logic_3, util.rand(-0.25, 0.25))) brain.add_synapse(nnet.Synapse(agent_right, logic_2, util.rand(-0.25, 0.25))) brain.add_synapse(nnet.Synapse(agent_right, logic_3, util.rand(-0.25, 1))) # Hidden to output layer: left side brain.add_synapse(nnet.Synapse(logic_0, move_left, util.rand(-0.25, 0.25))) brain.add_synapse(nnet.Synapse(logic_0, attack, util.rand(-0.5, 0.5))) brain.add_synapse(nnet.Synapse(logic_1, move_left, util.rand(-0.25, 1))) brain.add_synapse(nnet.Synapse(logic_1, attack, util.rand(-0.25, 0.25))) # Hidden to output layer: right side brain.add_synapse(nnet.Synapse(logic_2, attack, util.rand(-0.25, 0.25))) brain.add_synapse(nnet.Synapse(logic_2, move_right, util.rand(-0.25, 1))) brain.add_synapse(nnet.Synapse(logic_3, attack, util.rand(-0.5, 0.5))) brain.add_synapse(nnet.Synapse(logic_3, move_right, util.rand(-0.25, 0.25))) return brain