package automenta.spacenet.var.graph.patterns; import automenta.spacenet.var.Maths; import automenta.spacenet.var.graph.MemGraph; public class RandomStringNet extends MemGraph<String,String> { int changesPerCycle; private double updatePeriod; public RandomStringNet(int initialNodes, int initialLinks, int changesPerCycle, double updatePeriod) { super(); for (int i = 0; i < initialNodes; i++) addNode(); for (int i = 0; i < initialLinks; i++) addLink(); this.changesPerCycle = changesPerCycle; this.updatePeriod = updatePeriod; } public void addNode() { addNode(newName()); } public boolean addLink() { String a = getRandomNode(); String b = getRandomNode(); if (a!=null) if (b!=null) if (a!=b) { addEdge(newName(), a, b); return true; } return false; } // @Override public void start(Scope c) { // c.add(new Repeat() { // // @Override public double repeat(double t, double dt) { // // for (int i = 0; i < changesPerCycle; i++) { // double r = Maths.random(0, 4); // if (r < 1) { // addNode(); // } // else if (r < 3) { // addLink(); // } // else if (r < 3.7) { // String x = getRandomNode(); // removeVertex(x); // } // else if (r < 4) { // String x = getRandomLink(); // removeEdge(x); // } // } // // return updatePeriod; // } // // // }); // } /** TODO */ public String getRandomNode() { // List<Node<String, String>> nodes = IteratorUtils.toList( iterateNodes() ); // if (nodes.size() > 0) { // return nodes.get((int) Maths.random(0, nodes.size())); // } return null; } /** TODO */ protected String getRandomLink() { // List<Link<String, String>> links = IteratorUtils.toList( iterateLinks() ); // if (links.size() > 0) { // return links.get((int) Maths.random(0, links.size())); // } return null; } public static String newName() { return Integer.toHexString((int) Maths.random(0, 4096)); } }