Os escribo porque no tengo mucha experiencia en Perl y necesito optimizar una función, por ejemplo, f(x1,x2)=x1**2+x2**2 a partir de (4,5). He encontrado la librería SIMPLEX, pero no consigo que me funcione y creo que la culpa es del vector $init.
¿Alguien puede ayudarme?
Información sobre PDL::Opt::Simplex
http://search.cpan.org/~chm/PDL-2.4.9_0 ... Simplex.pm
Esto es lo que he escrito:
Using perl Syntax Highlighting
- #!/usr/bin/perl
- use PDL;
- use PDL::Opt::Simplex;
- $init = ( 4, 5 );
- $initsize = 2;
- $minsize = 1e-6;
- $maxiter = 500;
- sub evaluate_func_at {
- my ($xv) = @_;
- my $x1 = $xv->slice("(0)");
- my $x2 = $xv->slice("(1)");
- return $x1**2 + $x2**2;
- }
- ( $optimum, $ssize, $optval ) = simplex(
- $init, $initsize, $minsize, $maxiter,
- sub { evaluate_func_at( $_[0] ) },
- sub { display_simplex( $_[0] ) }
- );
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Error: Can't call method "getdim" on an undefined value at /usr/lib64/perl5/PDL/Opt/Simplex.pm line 116.
Muchas gracias de antemano
Verónica