public static ISorterCompParaPoolWorkflowTracker Trim(this ISorterCompParaPoolWorkflowTracker tracker, int count) { return(new SorterCompParaPoolWorkflowTrackerImpl( sorterPoolStats: GenomePoolStats.Make(tracker.SorterPoolStats.GenomeStatses.OrderBy(t => ((ISorterEval)t.ReferenceResult).SwitchUseCount).Take(count)), switchablePoolStats: GenomePoolStats.Make(tracker.SwitchablePoolStats.GenomeStatses.OrderBy(t => t.ReferenceResult).Take(count)) )); }
public static ISorterCompParaPoolWorkflowBuilder UpdateAndTrack ( ISorterCompParaPoolWorkflowBuilder builder, IReadOnlyList <int> seeds, bool mergeWithPrev, ISorterCompParaPoolWorkflowTracker tracker ) { IEntity <ISorterCompParaPoolWorkflow> curWorkflowEntity = builder.Entity; foreach (var seed in seeds) { tracker.TrackItem(curWorkflowEntity.Value); curWorkflowEntity = Entity.Make ( guid: curWorkflowEntity.Guid.Add(seed), val: curWorkflowEntity.Value.Step(seed) ); } return(new SorterCompParaPoolWorkflowBuilderImpl( guid: builder.Guid.Add(seeds), inputEntities: InputEntityOptions(builder, mergeWithPrev), entity: curWorkflowEntity, seeds: mergeWithPrev ? builder.Seeds.Concat(seeds).ToList() : seeds.ToList() )); }
public void TestUpdateWithMergeAndTrack2() { ISorterCompParaPoolWorkflowTracker tracker = SorterCompParaPoolWorkflowTracker.Make(); var builder = SorterCompParaPoolWorkflowBuilder.Make ( workFlowGuid: Guid.NewGuid(), repository: TestRepository.EntityRepository, switchableGroupGuid: TestRepository.SwitchableGroupLayerGuid, sorterGroupGuid: TestRepository.SorterLayerGuid, scpParamsGuid: TestRepository.SorterCompParaPoolParamsGuid ); ISorterCompParaPoolWorkflowBuilder updatedBuilder = builder; for (var i = 0; i < 1000; i++) { var seeds = Rando.Fast(i * 17).ToIntEnumerator().Take(5).ToList(); updatedBuilder = SorterCompParaPoolWorkflowBuilder.UpdateAndTrack( builder: updatedBuilder, seeds: seeds, mergeWithPrev: true, tracker: tracker ); var bsetResult = tracker.SorterPoolStats .GenomeStatses .OrderBy(t => t.ReferenceResult.Cast <ISorterEval>().SwitchUseCount) .First().ReferenceResult .Cast <ISorterEval>(); var averageScore = tracker.SorterPoolStats .GenomeStatses.Average(t => t.ReferenceResult.Cast <ISorterEval>().SwitchUseCount); System.Diagnostics.Debug.WriteLine("{0}\t{1}\t{2}\t{3}", bsetResult.SwitchUseCount, bsetResult.Success, averageScore, i); System.Diagnostics.Debug.WriteLine(tracker.PoolReport); tracker = tracker.Trim(1000); } Assert.AreEqual(updatedBuilder.InputEntities.Count, 3); Assert.IsNotNull(updatedBuilder.Entity); Assert.AreEqual(updatedBuilder.Seeds.Count(), 25); }