=head1 NAME
PDL::Opt::QP - Quadratic programming solver for PDL
=head1 SYNOPSIS
use PDL;
use PDL::NiceSlice;
use PDL::Opt::QP;
my $mu = pdl(q[ 0.0427 0.0015 0.0285 ])->transpose; # [ n x 1 ]
my $mu_0 = 0.0427;
my $dmat = pdl q[ 0.0100 0.0018 0.0011 ;
0.0018 0.0109 0.0026 ;
0.0011 0.0026 0.0199 ];
my $dvec = zeros(3);
my $amat = $mu->glue( 0, ones( 1, 3 ) )->copy;
my $bvec = pdl($mu_0)->glue( 1, ones(1) )->flat;
my $meq = pdl(2);
my $sol = qp( $dmat, $dvec, $amat, $bvec, $meq );
say "Solution: ", $sol->{x};
=head1 DESCRIPTION
This routine uses Goldfarb/Idnani algorithm to solve the
following minimization problem:
minimize f(x) = 0.5 * x' D x - d' x
x
optionally constrained by:
Aeq' x = a_eq
Aneq x >= b_neq
=cut
=head1 FUNCTIONS
=cut
=head2 qpgen2
=for sig
Signature: (dmat(m,m); dvec(m);
[o]sol(m); [o]lagr(q); [o]crval();
amat(m,q); bvec(q); int meq();
int [o]iact(q); int [o]nact();
int [o]iter(s=2); [t]work(z); int [o]ierr();
)
=for ref
This routine solves the quadratic programming optimization problem
minimize f(x) = 0.5 x' D x - d' x
x
optionally constrained by:
Aeq' x = a_eq
Aneq x >= b_neq
.... more docs to come ....
=for bad
qpgen2 ignores the bad-value flag of the input piddles.
It will set the bad-value flag of all output piddles if the flag is set for any of the input piddles.
=cut
=head1 SEE ALSO
L<PDL>, L<PDL::Opt::NonLinear>
=head1 BUGS
Please report any bugs or suggestions at L<http://rt.cpan.org/>
=head1 AUTHOR
Mark Grimes, E<lt>mgrimes@cpan.orgE<gt>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2014 by Mark Grimes, E<lt>mgrimes@cpan.orgE<gt>.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut