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); })); }
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); }
public LandLayer() { _landRequest = new LandRequest(); _landRequest.LandReceived += _landRequest_DonationsReceived; _landRequest.GetLand(); }
public IActionResult Land(LandRequest landRequest) { return(Ok(GetBestLanding(landRequest))); }