Exemplo n.º 1
0
        public QpProgressReport  Run(SpreadSheetExample example)
        {
            Matrix <double> basisVectors = Matrix <double> .Build.DenseOfArray(example.BasisVectors);

            Vector <double> targetVector = Vector <double> .Build.DenseOfEnumerable(example.TargetVector);

            var assembler = new QpLeastSquaresFormulator();

            QpProblem problem = assembler
                                .WithBasisVectors(basisVectors)
                                .WithTargetVector(targetVector)
                                .WithLowerConstraints(example.LowerConstraint)
                                .WithUpperConstraints(example.UpperConstraint)
                                .SetupProblem();

            IQpProgressReportBroadcaster publisher   = new QpProgressReportPublisher();
            IQpInitialPointStrategy      warmStarter = new QpWarmStarter();

            var listener = new ConsoleOutputService();

            listener.Subscribe(publisher);

            var solver = new PredictorCorrectorSolver(
                new QpPreSolver(problem.A, problem.b),
                warmStarter,
                new QpProgressAnalyser(problem, true),
                publisher);

            return(solver.Solve(problem));
        }
Exemplo n.º 2
0
        public void Setup()
        {
            // Arrange
            Matrix <double> Q = Matrix <double> .Build.DenseIdentity(n);

            Vector <double> c = Vector <double> .Build.Random(n);

            Matrix <double> topA = Matrix <double> .Build.DenseIdentity(n);

            var A = topA.Append(-topA);

            Vector <double> b = -10 * Vector <double> .Build.Dense(2 *n, 1);

            Vector <double> x = Vector <double> .Build.Dense(n, 1);

            this.problem = new QpProblem.Builder()
                           .WithQ(Q)
                           .WithA(A)
                           .WithC(c)
                           .WithB(b)
                           .Build();
        }