From f9e5bb42499acca3b96d5cf73b6e2489291cbd4e Mon Sep 17 00:00:00 2001 From: Ed J Date: Sun, 1 Dec 2024 03:28:39 +0000 Subject: [PATCH] 8 Dec posting: simplex - fix #30 --- .../blog/2024/12/08/simplex/banner.jpg | Bin 0 -> 66176 bytes .../blog/2024/12/08/simplex/index.markdown | 121 ++++++++++++++++++ statocles-site/page/index.markdown | 3 + 3 files changed, 124 insertions(+) create mode 100644 statocles-site/blog/2024/12/08/simplex/banner.jpg create mode 100644 statocles-site/blog/2024/12/08/simplex/index.markdown diff --git a/statocles-site/blog/2024/12/08/simplex/banner.jpg b/statocles-site/blog/2024/12/08/simplex/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dfd43971e7b3383602613116a4cac055d37aaaed GIT binary patch literal 66176 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

2vL@;W+b~ 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

0Vm&v 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 O29y6LFN*&?^?v~NjjHhg literal 0 HcmV?d00001 diff --git a/statocles-site/blog/2024/12/08/simplex/index.markdown b/statocles-site/blog/2024/12/08/simplex/index.markdown new file mode 100644 index 0000000..7e96699 --- /dev/null +++ b/statocles-site/blog/2024/12/08/simplex/index.markdown @@ -0,0 +1,121 @@ +--- +title: Day 8: Simplex optimisation with Perl Data Language +disable_content_template: 1 +tags: + - optimisation + - simplex +author: Ed J +images: + banner: + src: './banner.jpg' + alt: 'Simplex optimisation' + data: + attribution: |- + Graphical description of how the simplex method can solve linear programming problems under Creative Commons Attribution-Share Alike 3.0 Unported +data: + bio: mohawk + description: 'Simplex optimisation with PDL (Perl Data Language)' +--- + +If you want to solve linear programming problems, you need [PDL](https://pdl.perl.org/)! +--- + +This article discusses +[PDL::Opt::Simplex](https://metacpan.org/pod/PDL::Opt::Simplex), and uses +[PDL::Graphics::Simple](https://metacpan.org/pod/PDL::Graphics::Simple) +to display output. + +The simplex algorithm finds the optimum "point" (coordinates) in a space +you define, which can have any number (called `n` here) of dimensions. + +The algorithm takes either a fully-formed cloud of n+1 points, or a +single starting point, in which case it constructs the cloud for you +using the "initsize" parameter. It also takes a function that will take a +series of points in your space, and returns the "value" at each of those +points. From that, it works out which point of the simplex to move to be +closer to the optimum point, which has the lowest value of your function. + +It also takes other, less important parameters, which you'll see, +including a "logging" function which you can use to report progress, +or plot data. + +Load the necessary modules, set up a plotting window: + + use PDL::Graphics::Simple; + use PDL::Opt::Simplex; + $w = pgswin(); + +Try a simple ellipsoid; the multiplier makes the algorithm prioritise +the first (X) dimension, as you'll see on the plot. + + $w->plot(with=>'lines', [0], [1], {xrange=>[-15,5],yrange=>[-15,5]}); + my $mult = pdl 4,1; + sub func { (($mult * $_[0]) ** 2)->sumover } + sub logs { + $w->oplot(with=>'lines', $_[0]->glue(1,$_[0]->slice(",0"))->using(0,1)); + } + simplex(pdl(-10,-10), 0.5, 0.01, 30, + \&func, + \&logs + ); + + + +Now the first of two examples contributed by Alison Offer. +These values are for both: + + $minsize = 1.e-6; # convergence: if simplex points are this far apart, stop + $maxiter = 100; # max number of iterations: if done these many, stop + +Now we minimise polynomial: (x-3)^2 + 2\*(x-3)\*(y-2.5) + 3\*(y-2.5)^2 + + $w->plot(with=>'lines', [0], [1], {xrange=>[-1,5],yrange=>[-1,4]}); # reset + $init = pdl [ 0 , 1 ]; + $initsize = 2; + ($optimum,$ssize,$optval) = simplex($init,$initsize,$minsize,$maxiter, + sub { + my ($x, $y) = $_[0]->using(0,1); + ($x-3)**2 + 2*($x-3)*($y-2.5) + 3*($y-2.5)**2; + }, + \&logs + ); + + + +Now to minimise least squares Gaussian fit to data + noise: +32 *exp (-((x-10)/6)^2) + noise + + $factor = 3; # noise factor + +data : gaussian + noise + + $j = sequence(20); srandom(5); + $data = 32*exp(-(($j-10)/6)**2) + $factor * (random(20) - 0.5); + $init = pdl [ 33, 9, 12 ]; + $initsize = 2; + +The plotting will flatten, i.e. ignore, the third dimension in the vectors. + + $w->plot(with=>'lines', [0], [1], {xrange=>[30,36],yrange=>[7,12]}); # reset + ($optimum,$ssize,$optval) = simplex($init,$initsize,$minsize,$maxiter, + sub { + my ($x, $y, $z) = map $_[0]->slice($_), 0..2; + (($data - $x*exp(-(($j-$y)/$z)**2))**2)->sumover; + }, + \&logs + ); + + + +## Further resources + +There are other optimisation modules for PDL, including: + +- [PDL::Opt::GLPK](https://metacpan.org/pod/PDL::Opt::GLPK) +- [PDL::Opt::NonLinear](https://metacpan.org/pod/PDL::Opt::NonLinear) +- [PDL::Opt::QP](https://metacpan.org/pod/PDL::Opt::QP) +- [PDL::Opt::ParticleSwarm](https://metacpan.org/pod/PDL::Opt::ParticleSwarm) + +Take a look at +[the Wikipedia page for the simplex algorithm](https://en.wikipedia.org/wiki/Simplex_algorithm) +for more on the subject. diff --git a/statocles-site/page/index.markdown b/statocles-site/page/index.markdown index af1cf9e..ba3fec6 100644 --- a/statocles-site/page/index.markdown +++ b/statocles-site/page/index.markdown @@ -30,6 +30,9 @@ data: - date: 2018-12-06 - date: 2018-12-07 - date: 2018-12-08 + title: Simplex optimisation + href: '/blog/2024/12/08/simplex/' + image: '/blog/2024/12/08/simplex/banner.jpg' - date: 2018-12-09 - date: 2018-12-10 - date: 2018-12-11