public GARun( int ai_recpergen, string as_path, int ai_poolsize, int ai_generations, double ad_modifyprob, double ad_recomprob, Selectors aen_selector, Recombinators aen_recomb, Randoms aen_random, int ai_elites = 1, int ai_ts_contestants = 2, bool ab_adaptivemut = true, bool ab_rog = false, bool ab_lrog = true ) { ii_recpergen = ai_recpergen; ii_path = as_path; ii_poolsize = ai_poolsize; ii_generations = ai_generations; id_modifyprob = ad_modifyprob; id_recomprob = ad_recomprob; ien_selector = aen_selector; ien_recomb = aen_recomb; ien_random = aen_random; ii_elites = ai_elites; ii_ts_contestants = ai_ts_contestants; ib_adaptivemut = ab_adaptivemut; ib_rog = ab_rog; ib_lrog = ab_lrog; id = id + 1; myid = id; }
static void OnSelectorChange(Selectors id, int newPosition) { }
static int GetSelectorPosition(Selectors selectorid, int voltage) { if (selectorid == Selectors.A) { Debug.Print("Selector " + selectorid + " Value: " + voltage); if (voltage < 115) return 1; if (voltage < 230) return 2; if (voltage < 350) return 3; if (voltage < 450) return 4; if (voltage < 840) return 5; if (voltage < 1470) return 6; if (voltage < 1880) return 7; if (voltage < 2340) return 8; if (voltage < 2800) return 9; if (voltage < 3000) return 10; return 11; } else if (selectorid == Selectors.B) { if (voltage < 150) return 1; if (voltage < 250) return 2; if (voltage < 350) return 3; if (voltage < 450) return 4; if (voltage < 800) return 5; if (voltage < 1450) return 6; if (voltage < 1850) return 7; if (voltage < 2250) return 8; if (voltage < 2650) return 9; if (voltage < 2850) return 10; return 11; } else if (selectorid == Selectors.C) { if (voltage < 200) return 7; if (voltage < 350) return 8; if (voltage < 450) return 9; if (voltage < 650) return 10; if (voltage < 1150) return 11; if (voltage < 1850) return 6; if (voltage < 2250) return 1; if (voltage < 2650) return 2; if (voltage < 3050) return 3; if (voltage < 3180) return 4; return 5; } return voltage; }
public Selector(Selectors id, AnalogIn.Pin analogPin) : base() { inputPin = analogPin; selectorId = id; selectorPort = new AnalogIn(inputPin); selectorPort.SetLinearScale(0, 3300); currentPosition = 0; }
public void init( GARun ao_run, ref Wrapper ao_wrapper ) { io_wrapper = ao_wrapper; io_run = ao_run; ii_recpergen = ao_run.ii_recpergen; ii_path = ao_run.ii_path; ii_poolsize = ao_run.ii_poolsize; ii_generations = ao_run.ii_generations; id_modifyprob = ao_run.id_modifyprob; id_recomprob = ao_run.id_recomprob; ien_selector = ao_run.ien_selector; ien_recomb = ao_run.ien_recomb; ien_random = ao_run.ien_random; ii_elites = ao_run.ii_elites; ii_ts_contestants = ao_run.ii_ts_contestants; ib_adaptivemut = ao_run.ib_adaptivemut; ib_rog = ao_run.ib_rog; ib_lrog = ao_run.ib_lrog; ida_starttime = new DateTime(); }
public object GetValue(int i) { if (_enumerator.Current == null) { return(null); } try { object value; try { value = _currentEntityTypeSelectors[i](_enumerator.Current); if (value is DbGeography) { return(Provider.GetSqlGeography(((DbGeography)value).WellKnownValue.WellKnownText, ((DbGeography)value).CoordinateSystemId)); } if (value is DbGeometry) { return(Provider.GetSqlGeometry(((DbGeometry)value).WellKnownValue.WellKnownText, ((DbGeometry)value).CoordinateSystemId)); } } catch (KeyNotFoundException) { // current index is not present in given object type. i.e this column is for some sibling return(null); } if (Cols[i].IsNavigationProperty) { var col = Cols[i]; var pk = col.EntityMap.Pks.FirstOrDefault(); var navigationType = col.Type; if (pk == null) { return(0); } Dictionary <int, Func <T, object> > navSelectors; if (!Selectors.TryGetValue(navigationType, out navSelectors)) { if (pk == null) { return(0); } navSelectors = new Dictionary <int, Func <T, object> >(); var x = Expression.Parameter(_enumerator.Current.GetType(), "x"); var propNames = $"{col.PropertyName}.{pk.PropertyName}".Split('.'); Expression propertyExpression = Expression.PropertyOrField(x, propNames[0]); propertyExpression = propNames.Skip(1).Aggregate(propertyExpression, Expression.PropertyOrField); var expression = Expression.Lambda <Func <T, object> >(Expression.Convert(propertyExpression, typeof(object)), x); var selector = expression.Compile(); navSelectors[i] = selector; Selectors[navigationType] = navSelectors; } return(navSelectors[i](_enumerator.Current)); } return(value); } catch (NullReferenceException) { return(null); } }
public void AddFromAttributes(bool publicOnly) { Selectors.Add(new AttributeSelector(Types.Where(t => t.IsNonAbstractClass(publicOnly)))); }
public void AddFromAttributes(bool publicOnly) { Selectors.Add(new AttributeSelector(GetNonAbstractClasses(publicOnly))); }
public override string ToString() { return(base.ToString() + ":" + string.Join(", ", Selectors.Select(s => s.Value))); }
/// <summary> /// 如果找不到则不返回URL, 不然返回的URL太多 /// </summary> /// <param name="page"></param> protected virtual void ExtractUrls(Page page) { if (_targetUrlExtractors == null || _targetUrlExtractors.Count == 0) { return; } foreach (var targetUrlExtractor in _targetUrlExtractors) { if (Equals(targetUrlExtractor.Key, Selectors.Default())) { continue; } List <string> links = null; if (page.ContentType == ContentType.Html) { links = page.Selectable.SelectList(targetUrlExtractor.Key).Links().GetValues(); } else if (page.ContentType == ContentType.Json) { links = page.Selectable.SelectList(Selectors.Regex(RegexUtil.UrlRegex)).Links().GetValues(); } else { } if (links == null) { continue; } // check: 仔细考虑是放在前面, 还是在后面做 formatter, 我倾向于在前面. 对targetUrl做formatter则表示Start Url也应该是要符合这个规则的。 List <string> tmp = new List <string>(); foreach (string link in links) { var url = FormateUrl(link); #if !NET_CORE tmp.Add(HttpUtility.HtmlDecode(HttpUtility.UrlDecode(url))); #else tmp.Add(WebUtility.HtmlDecode(WebUtility.UrlDecode(url))); #endif } links = tmp; if (targetUrlExtractor.Value == null || targetUrlExtractor.Value.Count == 0) { page.AddTargetRequests(links); continue; } foreach (var regex in targetUrlExtractor.Value) { foreach (string link in links) { if (regex.IsMatch(link)) { bool isRequired = true; if (_excludeTargetUrlPatterns != null) { foreach (var excludeRegex in _excludeTargetUrlPatterns) { if (excludeRegex.IsMatch(link)) { isRequired = false; break; } } } if (isRequired) { page.AddTargetRequest(new Request(link, page.Request.Extras)); } } } } } if (Site.DownloadFiles) { var links = (page.Selectable.SelectList(ImageSelector)).GetValues(); if (links == null || links.Count == 0) { return; } foreach (string link in links) { bool isRequired = true; if (_excludeTargetUrlPatterns != null) { foreach (var excludeRegex in _excludeTargetUrlPatterns) { if (excludeRegex.IsMatch(link)) { isRequired = false; break; } } } if (isRequired) { page.AddTargetRequest(new Request(link, page.Request.Extras)); } } } }
protected override void Handle(Page page) { var results = new List <TiebaFloorReply>(); if (Regex.IsMatch(page.Request.RequestUri.AbsoluteUri, "tieba.baidu.com/t/p/[0-9]*")) { var totalFloorReplyElements = page.Selectable().SelectList(Selectors.XPath(".//ul[@class='pb_lzl_content j_floor_panel']")).Nodes(); foreach (var floorReplyElement in totalFloorReplyElements) { TiebaFloorReply floorReply = new TiebaFloorReply(); JObject jObject = JObject.Parse(floorReplyElement.Select(Selectors.XPath("@data-info")).GetValue()); floorReply.Key = jObject["pid"].ToString(); floorReply.UserName = jObject["un"].ToString(); floorReply.UserNickName = floorReplyElement.Select(Selectors.XPath(".//a[@class='user_name ']")).GetValue(ValueOption.InnerText); floorReply.ThreadID = Regex.Match(page.Selectable().Select(Selectors.XPath(".//div[@class='pb_lzl_header_bar']//a//@href")).GetValue(), "[0-9]+").Value; floorReply.FloorID = Regex.Match(page.Request.Url, "[0-9]+").Value; floorReply.Body = floorReplyElement.Select(Selectors.XPath(".//a[@class='lzl_content j_lzl_content ']")).GetValue(ValueOption.InnerHtml); floorReply.ReplyTime = TiebaTime.Parse(floorReplyElement.Select(Selectors.XPath(".//div[@class='left ']//div//p")).GetValue().Trim()); floorReply.UpdateTime = DateTime.Now; results.Add(floorReply); } } //将数据添加进去,使得数据存储类可以拿到数据 if (results.Count > 0) { page.AddResultItem("TiebaFloorReply", results); } }
protected override void Handle(Page page) { var results = new List <TiebaPost>(); //如果是帖子列表页面,就获取所有帖子 if (page.Request.RequestUri.AbsoluteUri.Contains("tieba.baidu.com/f?")) { var totalPostsElements = page.Selectable().SelectList(Selectors.XPath(".//li[@class='tl_shadow tl_shadow_new ']")).Nodes(); foreach (var postElement in totalPostsElements) { TiebaPost tiebaPost = new TiebaPost(); //tiebaPost.Title = classElement.Select(Select.Regex("(?<=title=\")[^ (\" target=\"_blank\")]*(?=(\" target = \"_blank\" class=\"j_th_tit \"))")).GetValue(); //tiebaPost.ReplyNum = Convert.ToInt32(classElement.Select(Selectors.Regex("(?<=(title=\"回复\">))[0-9]*")).GetValue()); //tiebaPost.UserName = classElement.Select(Selectors.Regex("(?<=(title=\"主题作者: ))[^ (\"\\s)]*")).GetValue(); tiebaPost.Key = postElement.Select(Selectors.XPath(".//a[@class='j_common ti_item ']/@data-tid")).GetValue(); tiebaPost.Title = postElement.Select(Selectors.XPath(".//div[@class='ti_title']")).GetValue(ValueOption.InnerText).Trim(); tiebaPost.ReplyNum = Convert.ToInt32(postElement.Select(Selectors.XPath(".//div[@class='ti_func_btn btn_reply']")).GetValue(ValueOption.InnerText)); tiebaPost.UserName = postElement.Select(Selectors.XPath(".//div[@class='ti_author_icons clearfix']//span")).GetValue(ValueOption.InnerText).Trim(); string time = postElement.Select(Selectors.XPath(".//span[@class='ti_time']")).GetValue(); tiebaPost.StartTime = DateTime.Parse(time); tiebaPost.UpdateTime = DateTime.Now; //获取到数据添加到集合中 results.Add(tiebaPost); //在列表中获取到帖子,把帖子详情链接添加到队列中 page.AddTargetRequest(new Request($"https://tieba.baidu.com/p/{tiebaPost.Key}")); } } //否则如果是帖子详情页,则更新帖子数据(相比较列表页,可以更新一些信息) else if (Regex.IsMatch(page.Request.RequestUri.AbsoluteUri, "tieba.baidu.com/p/[0-9]*")) { TiebaPost tiebaPost = new TiebaPost(); try { tiebaPost.Title = page.Selectable().Select(Selectors.XPath(".//h1")).GetValue().Trim(); } catch (Exception) { tiebaPost.Title = page.Selectable().Select(Selectors.XPath(".//h3")).GetValue().Trim(); } tiebaPost.ReplyNum = Convert.ToInt32(page.Selectable().SelectList(Selectors.XPath(".//li[@class='l_reply_num']//span")).Nodes().First().GetValue()); var postElements = page.Selectable().SelectList(Selectors.XPath(".//div[@id='j_p_postlist']//div")).Nodes(); var postElement = page.Selectable().SelectList(Selectors.XPath(".//div[@id='j_p_postlist']//div")).Nodes().First(); var json = postElement.Select(Selectors.XPath("@data-field")).GetValue(); JObject jObject = JObject.Parse(HttpUtility.HtmlDecode(json)); tiebaPost.Key = jObject["content"]["post_id"].ToString(); if (jObject["content"].Contains("content")) { tiebaPost.Body = jObject["content"]["content"].ToString(); } tiebaPost.UserName = jObject["author"]["user_name"].ToString(); tiebaPost.UserNickName = jObject["author"]["user_nickname"].ToString(); tiebaPost.UserID = jObject["author"]["user_id"].ToString(); string time; if (jObject["content"]["date"] != null) { time = jObject["content"]["date"].ToString(); } else { var ls = postElement.Select(Selectors.XPath("//div[@class='post-tail-wrap']")).XPath(".//span").Nodes(); if (ls == null) { Console.WriteLine(); } time = ls.Last().GetValue(); } tiebaPost.StartTime = TiebaTime.Parse(time); tiebaPost.UpdateTime = DateTime.Now; //获取到数据添加到集合中 results.Add(tiebaPost); } //将数据添加进去,使得数据存储类可以拿到数据 if (results.Count > 0) { page.AddResultItem("TiebaPost", results); } }
public void BlobIngressEgressCounters() { CloudBlobContainer container = GetRandomContainerReference(); container.CreateIfNotExists(); CloudBlockBlob blob = container.GetBlockBlobReference("blob1"); string[] blockIds = new string[] { Convert.ToBase64String(Guid.NewGuid().ToByteArray()), Convert.ToBase64String(Guid.NewGuid().ToByteArray()), Convert.ToBase64String(Guid.NewGuid().ToByteArray()) }; try { // 1 byte TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () => { OperationContext opContext = new OperationContext(); blob.PutBlock(blockIds[0], new MemoryStream(GetRandomBuffer(1)), null, null, new BlobRequestOptions() { RetryPolicy = new RetryPolicies.NoRetry() }, opContext); return(opContext.LastResult); }); // 1024 TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () => { OperationContext opContext = new OperationContext(); blob.PutBlock(blockIds[1], new MemoryStream(GetRandomBuffer(1024)), null, null, new BlobRequestOptions() { RetryPolicy = new RetryPolicies.NoRetry() }, opContext); return(opContext.LastResult); }); // 98765 TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () => { OperationContext opContext = new OperationContext(); blob.PutBlock(blockIds[2], new MemoryStream(GetRandomBuffer(98765)), null, null, new BlobRequestOptions() { RetryPolicy = new RetryPolicies.NoRetry() }, opContext); return(opContext.LastResult); }); // PutBlockList TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () => { OperationContext opContext = new OperationContext(); blob.PutBlockList(blockIds, null, new BlobRequestOptions() { RetryPolicy = new RetryPolicies.NoRetry() }, opContext); return(opContext.LastResult); }); // GetBlockList TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () => { OperationContext opContext = new OperationContext(); blob.DownloadBlockList(BlockListingFilter.All, null, new BlobRequestOptions() { RetryPolicy = new RetryPolicies.NoRetry() }, opContext); return(opContext.LastResult); }); // Download TestHelper.ValidateIngressEgress(Selectors.IfUrlContains(blob.Uri.ToString()), () => { OperationContext opContext = new OperationContext(); blob.DownloadToStream(Stream.Null, null, new BlobRequestOptions() { RetryPolicy = new RetryPolicies.NoRetry() }, opContext); return(opContext.LastResult); }); Assert.AreEqual(blob.Properties.Length, 98765 + 1024 + 1); } finally { container.DeleteIfExists(); } }
public SelectorsChannel(string guid, Connection connection, Selectors owner) : base(guid, connection, owner) { }