Example #1
0
        //private static void Log (string message)
        //{
        //	var dt = DateTime.Now.ToString ("yyyy-MM-dd hh:mm:ss");
        //	Console.WriteLine ("    {0} [INFO] {1}", dt, message);
        //}

        //private static void Log (Network.LoggingEventArgs logArgs)
        //{
        //	string level = string.Empty;
        //	var dt = DateTime.Now.ToString ("yyyy-MM-dd hh:mm:ss");
        //	var message = string.Format ("    {0} [{1}] {2}", dt, level, logArgs.Message);

        //	switch (logArgs.LoggingType) {
        //	case LoggingType.Info:
        //		level = "INFO";
        //		break;
        //	case LoggingType.Warning:
        //		level = "WARN";
        //		break;
        //	case LoggingType.Error:
        //		level = "ERR";
        //		break;
        //	default:
        //		level = "INFO";
        //		break;
        //	}

        //	Trace.TraceInformation ("Hello TraceInformation");
        //	Trace.TraceWarning ("Hello TraceWarning");
        //	Trace.TraceError ("Hello TraceError");
        //}

        //private static void Log (Exception ex)
        //{
        //	while (ex.InnerException != null) {
        //		ex = ex.InnerException;
        //	}
        //	var level = "WARN";
        //	var dt = DateTime.Now.ToString ("yyyy-MM-dd hh:mm:ss");
        //	Console.WriteLine ("    {0} {1} {2}", dt, level, ex.Message);
        //}

        public static void OnEvaluationComplete(object sender, GAF.Network.RemoteEvaluationEventArgs e)
        {
            //this event fires each time an evaluation is undertaken by the server
            var ellapsedMilliseconds = _stopwatch.ElapsedMilliseconds;

            Log.Debug(string.Format("Evaluated solution {0}, Fitness={1}, Elapsed Time:{2}ms", e.Solution.Id, e.Solution.Fitness, ellapsedMilliseconds));
            _stopwatch.Restart();
        }
Example #2
0
        private void listener_OnPacketReceived(object sender, PacketEventArgs e)
        {
            try {
                Log.Debug(string.Format("Packet Received, PacketId:{0} ObjectId:{1} Data Bytes:{2}",
                                        e.Packet.Header.PacketId,
                                        e.Packet.Header.ObjectId,
                                        e.Packet.Data.Length));

                switch ((PacketId)e.Packet.Header.PacketId)
                {
                case PacketId.Data: {
                    if (e.Packet.Header.DataLength > 0)
                    {
                        //deserialise to get the genes, create a new chromosome from these
                        //this saves having to send the whole chromosome
                        var genes      = Binary.DeSerialize <List <Gene> > (e.Packet.Data, _fitnessAssembly.KnownTypes);
                        var chromosome = new Chromosome(genes);

                        e.Result = chromosome.Evaluate(_fitnessAssembly.FitnessFunction);

                        if (OnEvaluationComplete != null)
                        {
                            var eventArgs = new RemoteEvaluationEventArgs(chromosome);
                            this.OnEvaluationComplete(this, eventArgs);
                        }
                    }

                    break;
                }

                case PacketId.Init: {
                    Log.Info("Initialisation initiated.");

                    if (e.Packet.Header.DataLength > 0)
                    {
                        Log.Info("Writing Fitness Assembly to filesystem.");

                        File.WriteAllBytes(_fitnessAssemblyName, e.Packet.Data);

                        //check for fitness file
                        if (File.Exists(_fitnessAssemblyName))
                        {
                            Log.Info("Loading the Fitness Assembly.");
                            _fitnessAssembly = new FitnessAssembly(_fitnessAssemblyName);
                        }
                        else
                        {
                            Log.Error("Fitness Assembly not accesible or missing.");
                        }
                    }

                    break;
                }

                case PacketId.Status: {
                    var result = 0x0;

                    //check for fitness file
                    if (File.Exists(_fitnessAssemblyName))
                    {
                        result = result | (int)ServerStatusFlags.Initialised;
                    }

                    if (_serverDefinedFitness)
                    {
                        result = result | (int)ServerStatusFlags.ServerDefinedFitness;
                    }

                    e.Result = (double)result;

                    break;
                }
                }
            } catch (Exception ex) {
                while (ex.InnerException != null)
                {
                    ex = ex.InnerException;
                }
                Log.Error(ex);
            }
        }