private ProblemModel CreateProblemModel(FunctionInputModel funcModel, ConstraintItemModel[] constraintModels, double[] initials, SolutionModel solutionModel, bool greaterThanZeroUsed)
 {
     return(new ProblemModel
     {
         functionInputModel = new SerializableFunctionInputModel()
         {
             expression = funcModel.expression.getExpressionString(),
             numberOfVariables = funcModel.arguments.Length,
             extremumType = funcModel.extremumType,
         },
         constraintModels = constraintModels.Select(item => new SerializableConstraintItemModel()
         {
             expression = item.expression.getExpressionString(),
             leftCoef = item.leftCoef,
             numberOfVariables = item.arguments.Length
         }).ToArray(),
         initials = initials,
         solutionModel = solutionModel,
         timestamp = DateTime.Now,
         greaterThanZeroUsed = greaterThanZeroUsed
     });
 }
 public PenaltyMethodSolver(FunctionInputModel functionInputModel, ConstraintItemModel[] constraintModels, double[] initialX)
 {
     this.functionInputModel = functionInputModel;
     this.constraintModels   = constraintModels;
     this.initialX           = initialX;
 }