private Task PostOperationActionAsync(PollinatorsGroup group, Pollinator currentPollinator, Pollinator newPollinator) { var ruleArgument = new ResetPollinationRuleArgument(group, newPollinator); return(_resetPollinationRule.ApplyRuleAsync(currentPollinator, ruleArgument)); }
private ConfirmationEmailTemplate GetAdminEmailTemplate(string adminName, string adminEmail, UserDetail userInfo, Pollinator.DataAccess.PolinatorInformation pollinator) { String path = Request.PhysicalApplicationPath + "\\EmailTemplates\\RegisterEmailAdmin.html"; Uri uri = HttpContext.Current.Request.Url; string webAppUrl = uri.GetLeftPart(UriPartial.Authority); //Return both host and port using (StreamReader reader = File.OpenText(path)) { String content = reader.ReadToEnd(); // Load the content from your file... content = content.Replace("{AdminName}", adminName); content = content.Replace("{RegisterName}", userInfo.FirstName); content = content.Replace("{UserType}", "PREMIUM"); content = content.Replace("{ShareMapUrl}", webAppUrl + "/Pollinator/ShareMap.aspx"); content = content.Replace("{OrganizationName}", pollinator.OrganizationName); content = content.Replace("{PhoneNumber}", userInfo.PhoneNumber); content = content.Replace("{LandscapeStreet}", pollinator.LandscapeStreet); content = content.Replace("{LandscapeCity}", pollinator.LandscapeCity); content = content.Replace("{LandscapeState}", pollinator.LandscapeState); content = content.Replace("{LandscapeZipcode}", pollinator.LandscapeZipcode); content = content.Replace("{PollinatorSize}", pollinator.PollinatorSize.ToString()); content = content.Replace("{PollinatorType}", pollinator.PollinatorType.ToString()); content = content.Replace("{LogonLink}", webAppUrl + "/Pollinator/Account/Login"); var membership = System.Web.Security.Membership.GetUser(userInfo.UserId); var emailTemplate = new ConfirmationEmailTemplate(); emailTemplate.EmailTo = adminEmail; emailTemplate.EmailFrom = Utility.EmailConfiguration.WebMasterEmail; emailTemplate.Subject = "Thank you for registering with S.H.A.R.E!"; emailTemplate.EmailBodyTemplate = content; return emailTemplate; } }
public static void EnsureValuesCorrect(this Pollinator pollinator) { if (!pollinator.Accept(RootCheckerPollinatorVisitor)) { throw new ArgumentException($"Pollinator got NaN or +/- Infinity. Pollinator - {ToString(pollinator)}"); } }
public ResetPollinationRuleArgument(PollinatorsGroup group, Pollinator newPollinator) { ThrowIf.Null(group, nameof(group)); ThrowIf.Null(newPollinator, nameof(newPollinator)); Group = group; NewPollinator = newPollinator; }
private Task <Pollinator> GlobalPollinationAsync(PollinatorsGroup group, Pollinator pollinator) { var bestPollinator = group.GetBestSolution(_functionStrategy, _algorithmSettings.IsMin); var ruleArgument = new GlobalPollinationRuleArgument(bestPollinator); return(_globalPollinationRule.ApplyRuleAsync(pollinator, ruleArgument)); }
private Task <Pollinator> LocalPollinationAsync(PollinatorsGroup group, Pollinator pollinator) { var randomPollinator = group.ElementAt(RandomGenerator.Random.Next() % group.Count()); var ruleArgument = new LocalPollinationRuleArgument(randomPollinator); return(_localPollinationRule.ApplyRuleAsync(pollinator, ruleArgument)); }
public void EqualShouldReturnTrueIfEllementIsSame() { // Arrange var p1 = new Pollinator(new[] { 0.0, 1.0, 2.0, 3.0 }); // Act // Assert p1.Equals(p1).ShouldBeTrue(); }
public Pollinator Update(Pollinator pollinator) { var values = pollinator.ToArray(); var i = RandomGenerator.Random.Next() % pollinator.Size; values[i] = RandomGenerator.Random.NextDouble(); return(new Pollinator(values)); }
public void EqualsShouldReturnTrueIfPollinatorsAreEqual() { // Arrange var p1 = new Pollinator(new[] { 0.0, 1.0, 2.0, 3.0 }); var p2 = new Pollinator(new[] { 0.0, 1.0, 2.0, 3.0 }); // Act // Assert p1.Equals(p2).ShouldBeTrue(); p2.Equals(p1).ShouldBeTrue(); }
public PollinatorsGroup Create(int groupSize, int variablesCount) { var pollinators = new Pollinator[groupSize]; for (var i = 0; i < groupSize; i++) { pollinators[i] = _pollinatorCreator.Create(variablesCount); } return(new PollinatorsGroup(pollinators)); }
public void EqualsShouldReturnFalseIfPollinatorsAreHaveDifferentSizes() { // Arrange var p1 = new Pollinator(new[] { 0.0, 1.0, 2.0, 3.0 }); var p2 = new Pollinator(new[] { 0.0, 1.0, 2.0, 3.0, 4.0 }); // Act // Assert p1.Equals(p2).ShouldBeFalse(); p2.Equals(p1).ShouldBeFalse(); }
public void EqualsShouldReturnFalseIfAnotherTypeIsObject() { // Arrange var p1 = new Pollinator(new[] { 0.0, 1.0, 2.0, 3.0 }); var p2 = new object(); // Act // Assert p1.Equals(p2).ShouldBeFalse(); p2.Equals(p1).ShouldBeFalse(); }
public Task <Pollinator> PolinateOnceAsync(PollinatorsGroup group, Pollinator pollinator) { var random = RandomGenerator.Random; if (random.NextDouble() < _algorithmSettings.P) { return(GlobalPollinationAsync(group, pollinator)); } return(LocalPollinationAsync(group, pollinator)); }
public void EqualsShouldReturnFalseIfPollinatorsAreNotEqualAtLeastInOneElement() { // Arrange var p1 = new Pollinator(new[] { 0.0, 1.0, 2.0, 3.0 }); var p2 = new Pollinator(new[] { 0.0, 1.0, 2.0, 3.01 }); // Act // Assert p1.Equals(p2).ShouldBeFalse(); p2.Equals(p1).ShouldBeFalse(); }
public Task <Pollinator> ApplyRuleAsync(Pollinator pollinator, ResetPollinationRuleArgument ruleArgument) { var current = ruleArgument.NewPollinator; var group = ruleArgument.Group; return(Task.Run(() => { if (!current.CheckWhetherValuesCorrect()) { _logger.Error($"Pollinator got NaN or +/- Infinity. Pollinator - {PollinatorExtensions.ToString(current)}"); return pollinator; } Pollinator best; var currentSolution = pollinator.CountFunction(_functionStrategy); var newSolution = current.CountFunction(_functionStrategy); _logger.Trace($"Current solution {currentSolution}"); _logger.Trace($"New solution {newSolution}"); if (currentSolution > newSolution && _isMin || newSolution > currentSolution && !_isMin) { group.Replace(pollinator, current); best = current; } else { best = pollinator; } if (RandomGenerator.Random.NextDouble() < _pReset) { _logger.Trace($"Before pollinator reset is {PollinatorExtensions.ToString(best)}"); var generated = _pollinatorUpdater.Update(best); group.Replace(best, generated); best = generated; _logger.Trace($"After pollinator reset is {PollinatorExtensions.ToString(best)}"); } return best; })); }
public void AddShouldFailIfSizesAreNotEqual() { // Arrange var d1 = new[] { 0.0, 1.0, 2.0, 3.0 }; var d2 = new[] { -1.0, 2.0, 4.5, 7.8, 9.1 }; var p1 = new Pollinator(d1); var p2 = new Pollinator(d2); // Act Action action = () => { var p = p1 + p2; }; action.ShouldThrow <Exception>(); }
public bool Visit(Pollinator pollinator) { foreach (var element in pollinator) { if (double.IsNaN(element)) { return(false); } if (double.IsInfinity(element)) { return(false); } } return(true); }
public Task <Pollinator> ApplyRuleAsync(Pollinator pollinator, LocalPollinationRuleArgument ruleArgument) { var randomPollinator = ruleArgument.RandomPollinator; _logger.Trace($"Random pollinator is {PollinatorExtensions.ToString(randomPollinator)}"); _logger.Trace($"Current pollinator is {PollinatorExtensions.ToString(pollinator)}"); return(Task.Run(() => { var rand = RandomGenerator.Random.NextDouble(); var result = pollinator + rand * randomPollinator - pollinator; _logger.Trace($"Global result pollinator is {PollinatorExtensions.ToString(result)}"); return result; })); }
public void SendRegisterEmail(UserDetail userInfo, Pollinator.DataAccess.PolinatorInformation pollinator) { var emails = new List<ConfirmationEmailTemplate>(); var userEmailTemplate = GetUserEmailTemplate(userInfo, pollinator); emails.Add(userEmailTemplate); var Administrators = new List<string>(); Administrators.Add("Truong"); //Dummy data, must be replaced with real Admin name foreach(var admin in Administrators) { string adminEmail = "*****@*****.**";//DUMMY data, must replaced with real data of Admin user var adminEmailTemplate = GetAdminEmailTemplate(admin, adminEmail, userInfo, pollinator); emails.Add(adminEmailTemplate); } Session["Emails"] = emails; }
public void AddShouldDoIt() { // Arrange var d1 = new[] { 0.0, 1.0, 2.0, 3.0 }; var d2 = new[] { -1.0, 2.0, 4.5, 7.8 }; var p1 = new Pollinator(d1); var p2 = new Pollinator(d2); // Act var p = p1 + p2; var d = new double[d1.Length]; for (var i = 0; i < d1.Length; i++) { d[i] = d1[i] + d2[i]; } // Assert p.SequenceEqual(d).ShouldBeTrue(); }
//This function will send emails in background... public void SendRegisterEmail(UserDetail userInfo, Pollinator.DataAccess.PolinatorInformation pollinator) { phEmailTasks.Controls.Add(new LiteralControl("<iframe src='" + ResolveUrl("../AsyncSendEmail") + "' id='AsyncSendEmails' scrolling='no'></iframe>")); var emails = new List<ConfirmationEmailTemplate>(); var userEmailTemplate = GetUserEmailTemplate(userInfo, pollinator); emails.Add(userEmailTemplate); //Add emailing for new user //var Administrators = new List<string>(); //Administrators.Add("Truong"); //Dummy data, must be replaced with real Admin name foreach (var adminEmail in GetListAdmin()) { var adminName = adminEmail.Substring(0, adminEmail.IndexOf("@")); var adminEmailTemplate = GetAdminEmailTemplate(adminName, adminEmail, userInfo, pollinator); emails.Add(adminEmailTemplate); //Add emailing for Administrators } //Put them all in session object which will be retrieved in Async process running in background Session["Emails"] = emails; }
public Task <Pollinator> ApplyRuleAsync(Pollinator pollinator, GlobalPollinationRuleArgument ruleArgument) { var bestPollinator = ruleArgument.BestPollinator; _logger.Trace($"Best pollinator is {PollinatorExtensions.ToString(bestPollinator)}"); _logger.Trace($"Current pollinator is {PollinatorExtensions.ToString(pollinator)}"); return(Task.Run(() => { var distanceDifference = (pollinator - bestPollinator) .CountFunction(FunctionStrategies.FunctionStrategies.DistanceFunction); var lambda = FunctionStrategies.FunctionStrategies.LambdaFunction(distanceDifference); var rand = FunctionStrategies.FunctionStrategies.MantegnaFunction(lambda); var result = pollinator + rand * (pollinator - bestPollinator); _logger.Trace($"Global result pollinator is {PollinatorExtensions.ToString(result)}"); return result; })); }
public string Visit(Pollinator pollinator) { return(string.Join(";", pollinator)); }
public LocalPollinationRuleArgument(Pollinator randomPollinator) { ThrowIf.Null(randomPollinator, nameof(randomPollinator)); RandomPollinator = randomPollinator; }
public static bool CheckWhetherValuesCorrect(this Pollinator pollinator) { return(pollinator.Accept(RootCheckerPollinatorVisitor)); }
public double Visit(Pollinator pollinator) { return(_func(pollinator.ToArray())); }
public static string ToString(this Pollinator pollinator) { return(pollinator.Accept(ToStringPollinatorVisitor)); }
public StepFinishedArgs(Pollinator best, int step) { Best = best; Step = step; }
public GlobalPollinationRuleArgument(Pollinator bestPollinator) { ThrowIf.Null(bestPollinator, nameof(bestPollinator)); BestPollinator = bestPollinator; }
public static double CountFunction(this Pollinator pollinator, Func <double[], double> functionStrategy) { return(pollinator.Accept(new CountFunctionPollinatorVisitor(functionStrategy))); }
private ConfirmationEmailTemplate GetUserEmailTemplate(UserDetail userInfo, Pollinator.DataAccess.PolinatorInformation pollinator) { String path = Request.PhysicalApplicationPath + "\\EmailTemplates\\RegisterEmail.html"; Uri uri = HttpContext.Current.Request.Url; string webAppUrl = uri.GetLeftPart(UriPartial.Authority); //Return both host and port string userType = userInfo.MembershipLevel == 0 ? "NORMAL" : "PREMIUM"; using (StreamReader reader = File.OpenText(path)) { String content = reader.ReadToEnd(); // Load the content from your file... content = content.Replace("{RegisterName}", userInfo.FirstName); content = content.Replace("{UserName}", System.Web.Security.Membership.GetUser(userInfo.UserId).UserName); content = content.Replace("{UserType}", userType); content = content.Replace("{ShareMapUrl}", webAppUrl + "/ShareMap"); content = content.Replace("{OrganizationName}", pollinator.OrganizationName); content = content.Replace("{PhoneNumber}", userInfo.PhoneNumber); content = content.Replace("{LandscapeStreet}", pollinator.LandscapeStreet); content = content.Replace("{LandscapeCity}", pollinator.LandscapeCity); content = content.Replace("{LandscapeState}", pollinator.LandscapeState); content = content.Replace("{LandscapeZipcode}", pollinator.LandscapeZipcode); content = content.Replace("{PollinatorSize}", pollinator.PollinatorSize.ToString()); content = content.Replace("{PollinatorType}", pollinator.PollinatorType.ToString()); content = content.Replace("{LogonLink}", webAppUrl + "/ShareMap#login_form"); var webAppPath = WebHelper.FullyQualifiedApplicationPath; content = content.Replace("{SiteLogo}", webAppPath + WebHelper.SiteLogo); var membership = System.Web.Security.Membership.GetUser(userInfo.UserId); var emailTemplate = new ConfirmationEmailTemplate(); emailTemplate.EmailTo = membership.Email;// "[email protected];[email protected]"; //DUMMY data, must replaced with real data of register user emailTemplate.EmailFrom = Utility.EmailConfiguration.WebMasterEmail; emailTemplate.Subject = "Thank you for registering with S.H.A.R.E!"; emailTemplate.EmailBodyTemplate = content; return emailTemplate; } }