Example #1
0
 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());
 }
Example #2
0
 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();
        }
Example #4
0
 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());
 }
Example #5
0
        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;
        }