Пример #1
0
        /*************************************************************************
        QP solver results

        INPUT PARAMETERS:
            State   -   algorithm state

        OUTPUT PARAMETERS:
            X       -   array[0..N-1], solution.
                        This array is allocated and initialized only when
                        Rep.TerminationType parameter is positive (success).
            Rep     -   optimization report. You should check Rep.TerminationType,
                        which contains completion code, and you may check  another
                        fields which contain another information  about  algorithm
                        functioning.
                        
                        Failure codes returned by algorithm are:
                        * -5    inappropriate solver was used:
                                * Cholesky solver for (semi)indefinite problems
                                * Cholesky solver for problems with sparse matrix
                                * QuickQP solver for problem with  general  linear
                                  constraints
                        * -4    BLEIC-QP/QuickQP   solver    found   unconstrained
                                direction  of   negative  curvature  (function  is
                                unbounded from below even under constraints),   no
                                meaningful minimum can be found.
                        * -3    inconsistent constraints (or maybe  feasible point
                                is too  hard  to  find).  If  you  are  sure  that
                                constraints are feasible, try to restart optimizer
                                with better initial approximation.
                                
                        Completion codes specific for Cholesky algorithm:
                        *  4   successful completion
                        
                        Completion codes specific for BLEIC/QuickQP algorithms:
                        *  1   relative function improvement is no more than EpsF.
                        *  2   scaled step is no more than EpsX.
                        *  4   scaled gradient norm is no more than EpsG.
                        *  5   MaxIts steps was taken

          -- ALGLIB --
             Copyright 11.01.2011 by Bochkanov Sergey
        *************************************************************************/
        public static void minqpresults(minqpstate state,
            ref double[] x,
            minqpreport rep)
        {
            x = new double[0];

            minqpresultsbuf(state, ref x, rep);
        }
Пример #2
0
        /*************************************************************************
        QP results

        Buffered implementation of MinQPResults() which uses pre-allocated  buffer
        to store X[]. If buffer size is  too  small,  it  resizes  buffer.  It  is
        intended to be used in the inner cycles of performance critical algorithms
        where array reallocation penalty is too large to be ignored.

          -- ALGLIB --
             Copyright 11.01.2011 by Bochkanov Sergey
        *************************************************************************/
        public static void minqpresultsbuf(minqpstate state,
            ref double[] x,
            minqpreport rep)
        {
            int i_ = 0;

            if( alglib.ap.len(x)<state.n )
            {
                x = new double[state.n];
            }
            for(i_=0; i_<=state.n-1;i_++)
            {
                x[i_] = state.xs[i_];
            }
            rep.inneriterationscount = state.repinneriterationscount;
            rep.outeriterationscount = state.repouteriterationscount;
            rep.nmv = state.repnmv;
            rep.ncholesky = state.repncholesky;
            rep.terminationtype = state.repterminationtype;
        }
Пример #3
0
 public override alglib.apobject make_copy()
 {
     minqpreport _result = new minqpreport();
     _result.inneriterationscount = inneriterationscount;
     _result.outeriterationscount = outeriterationscount;
     _result.nmv = nmv;
     _result.ncholesky = ncholesky;
     _result.terminationtype = terminationtype;
     return _result;
 }