static IEnumerable <ValueTerm> GetValues(int segmentCount, FunctionTermCurveTemplate segmentTemplate, IEnumerable <double> values) { return (( from segmentIndex in Enumerable.Range(0, segmentCount) select Terms.Constant(values.Skip(segmentIndex * segmentTemplate.ParameterDimension).Take(segmentTemplate.ParameterDimension)) ) .ToArray()); }
static IEnumerable <ValueTerm> GetParameters(int segmentCount, FunctionTermCurveTemplate segmentTemplate) { return (( from segmentIndex in Enumerable.Range(0, segmentCount) select Terms.Variable(string.Format("sp_{0}", segmentIndex), segmentTemplate.ParameterDimension) ) .ToArray()); }
public BasicSpecification(XElement source) { if (source == null) { throw new ArgumentNullException("source"); } this.curveLength = (double)source.Element("curve_length"); this.segmentCount = (int)source.Element("segment_count"); this.segmentTemplate = FunctionTermCurveTemplate.Parse(source.Element("segment_template").Elements().Single()); this.curveSpecifications = source.Element("curve_specifications").Elements().Select(CurveSpecification.Parse).ToArray(); }
static IEnumerable <Segment> GetSegments(int segmentCount, FunctionTermCurveTemplate segmentTemplate, IEnumerable <ValueTerm> parameters) { return (( from segmentIndex in Enumerable.Range(0, segmentCount) let parameter = parameters.ElementAt(segmentIndex) let curve = segmentTemplate.InstantiateParameter(parameter) let position = Terms.Variable("t") let positionTransformation = Terms.Difference(Terms.Product(Terms.Constant(segmentCount), position), Terms.Constant(segmentIndex)).Abstract(position) select new Segment(curve, positionTransformation) ) .ToArray()); }
OptimizationSegments(int segmentCount, FunctionTermCurveTemplate segmentTemplate) { if (segmentCount < 0) { throw new ArgumentOutOfRangeException("segmentCount"); } if (segmentTemplate == null) { throw new ArgumentNullException("segmentTemplate"); } this.segmentCount = segmentCount; this.segmentTemplate = segmentTemplate; this.parameters = GetParameters(segmentCount, segmentTemplate); this.segments = GetSegments(segmentCount, segmentTemplate, parameters); }
public BasicSpecification(double curveLength, int segmentCount, FunctionTermCurveTemplate segmentTemplate, IEnumerable <CurveSpecification> curveSpecifications) { if (curveLength < 0) { throw new ArgumentOutOfRangeException("curveLength"); } if (segmentCount < 0) { throw new ArgumentOutOfRangeException("segmentCount"); } if (segmentTemplate == null) { throw new ArgumentNullException("segmentTemplate"); } if (curveSpecifications == null) { throw new ArgumentNullException("curveSpecifications"); } this.curveLength = curveLength; this.segmentCount = segmentCount; this.segmentTemplate = segmentTemplate; this.curveSpecifications = curveSpecifications; }