/// <summary>Creates a new <see cref="MultiDimOptimizer.IConstraint"/> object. /// </summary> /// <param name="linearEqualityConstraint">The specific constraints in its <see cref="MultiDimRegion.LinearEquality"/> representation.</param> /// <returns>A specific <see cref="MultiDimOptimizer.IConstraint"/> object with respect to the specified optimization algorithm.</returns> /// <exception cref="InvalidOperationException">Thrown, if the optimization algorithm does not support this kind of constraints.</exception> public MultiDimOptimizer.IConstraint Create(MultiDimRegion.LinearEquality linearEqualityConstraint) { if (SupportedConstraints.HasFlag(ConstraintType.LinearEquation) == true) { return(new MultiDimOptimizerConstraint(this, linearEqualityConstraint)); } throw new InvalidOperationException(); }
/// <summary>Creates a new <see cref="NLoptConstraint"/> object. /// </summary> /// <param name="linearEqualityConstraint">The specific constraints in its <see cref="MultiDimRegion.LinearEquality"/> representation.</param> /// <returns>A specific <see cref="NLoptConstraint"/> object with respect to the specified optimization algorithm.</returns> /// <exception cref="InvalidOperationException">Thrown, if the optimization algorithm does not support this kind of constraints.</exception> public NLoptConstraint Create(MultiDimRegion.LinearEquality linearEqualityConstraint) { if (linearEqualityConstraint == null) { throw new ArgumentNullException(nameof(linearEqualityConstraint)); } if (nloptMultiDimOptimizer.Configuration.NonlinearConstraintRequirement.HasFlag(NLoptNonlinearConstraintRequirement.SupportsEqualityConstraints) == false) { throw new InvalidOperationException("The NLopt algorithm does not support linear equality constraints"); } throw new NotImplementedException(); }
/// <summary>Creates a new <see cref="MultiDimOptimizer.IConstraint"/> object. /// </summary> /// <param name="linearEqualityConstraint">The specific constraints in its <see cref="MultiDimRegion.LinearEquality"/> representation.</param> /// <returns>A specific <see cref="MultiDimOptimizer.IConstraint"/> object with respect to the specified optimization algorithm.</returns> /// <exception cref="InvalidOperationException">Thrown, if the optimization algorithm does not support this kind of constraints.</exception> MultiDimOptimizer.IConstraint MultiDimOptimizer.IConstraintFactory.Create(MultiDimRegion.LinearEquality linearEqualityConstraint) { return(this.Create(linearEqualityConstraint)); }