Example #1
0
        public IObservable <Unit> Land()
        {
            return(Observable.Create <Unit>(observer =>
            {
                var request = new LandRequest();
                var landResponse = _actionServiceClient.Land(request);
                var actionResult = landResponse.ActionResult;
                if (actionResult.Result == ActionResult.Types.Result.Success)
                {
                    observer.OnCompleted();
                }
                else
                {
                    observer.OnError(new ActionException(actionResult.Result, actionResult.ResultStr));
                }

                return Task.FromResult(Disposable.Empty);
            }));
        }
Example #2
0
        private List <Generation> GetBestLanding(LandRequest landRequest)
        {
            var environment = new MarsLanderEnvironment(landRequest.Map.SurfaceZones.ToList());
            var lander      = new Lander
            {
                Situation = new Situation
                {
                    Fuel            = landRequest.Map.InitialFuel,
                    Power           = landRequest.Map.InitialPower,
                    Rotation        = landRequest.Map.InitialRotation,
                    X               = landRequest.Map.InitialX,
                    Y               = landRequest.Map.InitialY,
                    HorizontalSpeed = landRequest.Map.InitialHorizontalSpeed,
                    VerticalSpeed   = landRequest.Map.InitialVerticalSpeed
                }
            };
            var evolution = new MarsLanderEvolution(environment, landRequest.AiWeight);

            if (landRequest.Parameters.Actions != null)
            {
                evolution.MaxActions = landRequest.Parameters.Actions <= 0 ? null : landRequest.Parameters.Actions;
            }

            var sw = Stopwatch.StartNew();

            evolution.Run(landRequest.Parameters.Generations, landRequest.Parameters.Population, lander);
            sw.Stop();
            var highestScore = evolution.Generations
                               .SelectMany(generation => generation.Actors)
                               .Select(actor => actor.Score)
                               .OrderBy(score => score)
                               .First();

            _logger.LogInformation("{elapsed}", sw.Elapsed);
            _logger.LogInformation("Highest Score: {@score}", highestScore);

            return(evolution.Generations);
        }
Example #3
0
 public LandLayer()
 {
     _landRequest = new LandRequest();
     _landRequest.LandReceived += _landRequest_DonationsReceived;
     _landRequest.GetLand();
 }
Example #4
0
 public IActionResult Land(LandRequest landRequest)
 {
     return(Ok(GetBestLanding(landRequest)));
 }
Example #5
0
 public LandLayer()
 {
     _landRequest = new LandRequest();
     _landRequest.LandReceived += _landRequest_DonationsReceived;
     _landRequest.GetLand();
 }