Beispiel #1
0
        public override NetworkVisualizer CreateVisualizer()
        {
            var list = _amap.Keys.ToList();

            list.Sort((s1, s2) => _amap[s1] - _amap[s2]);
            return(NetworkVisualizer.CreateVisualizer(_net, list.ToArray()));
        }
Beispiel #2
0
        private void Init(QAgent agent, QOption option)
        {
            if (Benchmark)
            {
                BenchmarkSave.CurrentTestID = _instance.BenchmarkID;
                BenchmarkSave.Runs          = _instance.BenchmarkRuns;
            }
            else if (Mode == QAIMode.Testing && BenchmarkID != null && !BenchmarkID.Equals(""))
            {
                BenchmarkSave.ModelPath = _instance.BenchmarkID;
            }
            else
            {
                BenchmarkSave.CurrentTestID = agent.AI_ID().ID;
                BenchmarkSave.Runs          = 1;
            }
            Debug.Log("Running " + BenchmarkSave.ModelPath + " in mode " + Mode);

            _stopwatch = Stopwatch.StartNew();
            if (Tester != null)
            {
                Tester.Init();
            }

            DontDestroyOnLoad(gameObject);
            switch (Mode)
            {
            case QAIMode.Imitating: {
                _imitation = new QImitation();
                break;
            }

            default: {
                var qlCNN = new QLearningCNN(PrioritizedSweeping, option);
                _qlearning = qlCNN;
                _qlearning.Reset(agent);

                if (Remake)
                {
                    _qlearning.RemakeModel(agent.GetState());
                }
                else
                {
                    _qlearning.LoadModel();
                }

                if (VisualizeNetwork)
                {
                    _visualizer = _qlearning.CreateVisualizer();
                }

                qlCNN.CNN.ValuesComputed += (data, isTraining) => { if (NetworkValuesUpdated != null)
                                                                    {
                                                                        NetworkValuesUpdated(data, isTraining);
                                                                    }
                };
                break;
            }
            }
        }
Beispiel #3
0
 /// <summary>
 /// The user has clicked within the panel
 /// </summary>
 /// <param name='sender'>
 /// Sender.
 /// </param>
 /// <param name='e'>
 /// E.
 /// </param>
 private void drawPanel_MouseClick(object sender, MouseEventArgs e)
 {
     if (!_panned)
     {
         Vertex x = NetworkVisualizer.GetVertexAtPosition(e.Location);
         if (x != null)
         {
             toolTip1.Show(x.Label, this, e.Location);
         }
     }
 }
Beispiel #4
0
        void HandleFileChooserCEFFilehandleFileSet(object sender, EventArgs e)
        {
            // Load network evolution from cuttlefish cef file
            player = new NETGen.Dynamics.CEF.CEFPlayer(this.fileChooserCEFFile.Filename, n, colorizer);

            // On each evolution step, recompute layout and save current image
            player.OnStep += new DiscreteDynamics.StepHandler(delegate(long time) {
                NetworkVisualizer.Layout.DoLayout();
                NetworkVisualizer.SaveCurrentImage(string.Format("frame_{0000}.bmp", time));
                Logger.AddMessage(LogEntryType.AppMsg, string.Format("Time {0000}: {1} Nodes, {2} Edges", time, n.VertexCount, n.EdgeCount));
            });
        }
Beispiel #5
0
 private void RemakeManager()
 {
     _qlearning.Iteration = 1;
     _qlearning.RemakeModel(Agent.GetState());
     if (_visualizer != null)
     {
         Destroy(_visualizer.gameObject);
         _visualizer = _qlearning.CreateVisualizer();
     }
     _stopwatch.Reset();
     _stopwatch.Start();
     Tester.Init();
 }
Beispiel #6
0
        /// <summary>
        /// Private constructor, instances are created by the static function CreateDisplay()
        /// </summary>
        private NetworkDisplay(NetworkVisualizer visualizer, int fps, LayoutOptions options)
        {
            if (options != null)
            {
                LayoutOptions = options;
            }
            else
            {
                LayoutOptions = new LayoutOptions();
            }

            NetworkVisualizer = visualizer;

            NetworkDisplay.DisplayCounter++;

            // start event queue in new main thread
            _mainThread = new Thread(new ThreadStart(new Action(delegate() {
                InitializeComponent();
                visualizer.SetGraphics(drawPanel.CreateGraphics(), drawPanel.DisplayRectangle);

                this.Text = visualizer.Network.Name;

                drawPanel.Paint      += new PaintEventHandler(drawPanel_Paint);
                drawPanel.MouseDown  += new MouseEventHandler(drawPanel_MouseDown);
                drawPanel.MouseUp    += new MouseEventHandler(drawPanel_MouseUp);
                drawPanel.MouseMove  += new MouseEventHandler(drawPanel_MouseMove);
                drawPanel.MouseClick += new MouseEventHandler(drawPanel_MouseClick);

                this.MouseWheel += new MouseEventHandler(drawPanel_MouseWheel);

                // Add the layout options to the menu
                LayoutOptions.ItemAdded += new GUI.LayoutOptions.ItemAddedDelegate(LayoutOptions_ItemAdded);
                foreach (string name in LayoutOptions.LayoutNames)
                {
                    ToolStripItem i = layoutToolStripMenuItem.DropDownItems.Add(name);
                    i.Click        += new EventHandler(i_Click);
                }

                System.Threading.Timer t = new System.Threading.Timer(timerCallbackFunction, null, 50, 1000 / fps);

                Application.Run(this);
            })));

            // Set the main thread to Single Thread Apartment
            _mainThread.SetApartmentState(ApartmentState.STA);
            _mainThread.Name = "STA Thread for NETGen Display";

            // Startup the thread ...
            _mainThread.Start();
        }
Beispiel #7
0
 void HandleFileChooserNetworkFilehandleFileSet(object sender, EventArgs e)
 {
     if (this.fileChooserNetworkFile.Filename.EndsWith("cxf"))
     {
         n = Network.LoadFromCXF(this.fileChooserNetworkFile.Filename);
     }
     else if (this.fileChooserNetworkFile.Filename.EndsWith("graphml"))
     {
         n = Network.LoadFromGraphML(this.fileChooserNetworkFile.Filename);
     }
     else
     {
         n = Network.LoadFromEdgeFile(this.fileChooserNetworkFile.Filename);
     }
     NetworkVisualizer.Start(n, new NETGen.Layouts.RandomLayout.RandomLayout(), colorizer, 800, 600);
 }
Beispiel #8
0
        private void MyWindow_Loaded(object sender, RoutedEventArgs e)
        {
            network       = new Network();
            netVisualizer = new NetworkVisualizer(network);
            netVisualizer.registerScaling(MyWindow);

            SliderNodeRadius.Value        = netVisualizer.NODE_RADIUS;
            SliderElasticity.Value        = netVisualizer.ELASTICITY;
            SliderMinDistance.Value       = netVisualizer.MIN_DISTANCE;
            SliderVectorScale.Value       = netVisualizer.VECTOR_SCALE;
            SliderInteractionWeight.Value = netVisualizer.INTERACTION_WEIGHT;
            SliderMouseMinDistance.Value  = netVisualizer.MOUSE_MIN_DISTANCE;

            SliderNodeRadius.ValueChanged += (o, ev) =>
            {
                netVisualizer.NODE_RADIUS = ev.NewValue;
            };
            SliderElasticity.ValueChanged += (o, ev) =>
            {
                netVisualizer.ELASTICITY = ev.NewValue;
            };
            SliderMinDistance.ValueChanged += (o, ev) =>
            {
                netVisualizer.MIN_DISTANCE = ev.NewValue;
            };
            SliderVectorScale.ValueChanged += (o, ev) =>
            {
                netVisualizer.VECTOR_SCALE = ev.NewValue;
            };
            SliderInteractionWeight.ValueChanged += (o, ev) =>
            {
                netVisualizer.INTERACTION_WEIGHT = ev.NewValue;
            };
            SliderMouseMinDistance.ValueChanged += (o, ev) =>
            {
                netVisualizer.MOUSE_MIN_DISTANCE = ev.NewValue;
            };
            SliderMouseForce.ValueChanged += (o, ev) =>
            {
                netVisualizer.MOUSE_FORCE_COEFFICIENT = ev.NewValue;
            };

            MainGrid.Children.Add(netVisualizer);

            initScene();
        }
Beispiel #9
0
        public static void Main(string[] args)
        {
            // Basic arg checking
            if (args.Length != 2 || !System.IO.File.Exists(args[0]) || !System.IO.File.Exists(args[1]))
            {
                Console.WriteLine("Usage: CuttleFishPlayer [cxf-File] [cef-File]");
                return;
            }

            // Used to color the network
            NetworkColorizer colorizer = new NetworkColorizer();

            colorizer.DefaultBackgroundColor = Color.White;
            colorizer.DefaultVertexColor     = Color.Black;
            colorizer.DefaultEdgeColor       = Color.Black;

            // Load network from cuttlefish CXF-File
            Network n = Network.LoadFromCXF(args[0]);

            Logger.AddMessage(LogEntryType.AppMsg, string.Format("Initial network: {0} Nodes, {1} Edges", n.VertexCount, n.EdgeCount));

            // Start the visualizer with Fruchterman-Reingold layout
            NetworkVisualizer.Start(n, new RandomLayout(), colorizer);

            // Compute layout and save initial frame
            NetworkVisualizer.Layout.DoLayout();
            NetworkVisualizer.SaveCurrentImage("frame_0000.bmp");

            // Load network evolution from cuttlefish cef file
            NETGen.Dynamics.CEF.CEFPlayer player = new NETGen.Dynamics.CEF.CEFPlayer(args[1], n, colorizer);

            // On each evolution step, recompute layout and save current image
            player.OnStep += new DiscreteDynamics.StepHandler(delegate(long time) {
                NetworkVisualizer.Layout.DoLayout();
                NetworkVisualizer.SaveCurrentImage(string.Format("frame_{0000}.bmp", time));
                Logger.AddMessage(LogEntryType.AppMsg, string.Format("Time {0000}: {1} Nodes, {2} Edges", time, n.VertexCount, n.EdgeCount));
            });

            // Ready, set, go ...
            Logger.AddMessage(LogEntryType.AppMsg, "Press enter to step through network evolution ...");
            Console.ReadLine();
            player.Run();

            Network.SaveToGraphML("mono_network.graphml", n);
        }
Beispiel #10
0
    private void Init()
    {
        time              = 0f;
        state             = State.RandomPopulation;
        visualizer        = GameObject.Find("NetworkVisualizer").GetComponent <NetworkVisualizer>();
        population        = new List <Creature>();
        populationGenomes = new List <Genome>();
        species           = new List <Species>();

        for (int i = 0; i < populationSize; i++)
        {
            var creature = Instantiate(creaturePrefab, startPos, Quaternion.identity, transform).GetComponent <Creature>();
            creature.brain = new NeuralNetwork(nInputs, nOutputs);
            population.Add(creature);
            populationGenomes.Add(creature.brain.genome);
            visualizer.Draw(creature.brain.genome.neurons, creature.brain.genome.weights);
        }

        foreach (var creature in population)
        {
            creature.StartSimulation();
        }
    }
Beispiel #11
0
 void HandleFileChooserExportBitmaphandleFileSet(object sender, EventArgs e)
 {
     NetworkVisualizer.SaveCurrentImage(this.fileChooserExportBitmap.Filename);
 }
Beispiel #12
0
 /// <summary>
 /// Creates a new Network Display frontend and starts rendering using the specified network visualizer
 /// </summary>
 /// <returns>
 /// The network display instance
 /// </returns>
 /// <param name='visualizer'>
 /// The network visualizer that takes care of layouting and rendering the network
 /// </param>
 /// <param name='fps'>
 /// The number of frames per seconds that will be rendered, default is 25
 /// </param>
 /// <param name='options'>
 /// The layouting options that shall be available from the menu
 /// </param>
 public static NetworkDisplay CreateDisplay(NetworkVisualizer visualizer, int fps = 25, LayoutOptions options = null)
 {
     return(new NetworkDisplay(visualizer, fps, options));
 }
Beispiel #13
0
 /// <summary>
 /// The panel has been resized. The presentation settings need to be changed accordingly.
 /// </summary>
 /// <param name='sender'>
 /// Sender.
 /// </param>
 /// <param name='e'>
 /// E.
 /// </param>
 private void drawPanel_Resize(object sender, EventArgs e)
 {
     NetworkVisualizer.SetGraphics(drawPanel.CreateGraphics(), drawPanel.DisplayRectangle);
     NetworkVisualizer.PresentationSettings.ScreenWidth  = drawPanel.Width;
     NetworkVisualizer.PresentationSettings.ScreenHeight = drawPanel.Height;
 }
Beispiel #14
0
 /// <summary>
 /// This method is executed whenever the panel needs to repaint itself
 /// </summary>
 /// <param name='sender'>
 /// Sender.
 /// </param>
 /// <param name='e'>
 /// E.
 /// </param>
 void drawPanel_Paint(object sender, PaintEventArgs e)
 {
     NetworkVisualizer.Draw();
 }