Re: balancing/distribution problem solution

2014-03-21 Thread Janek Schleicher

Am 21.03.2014 16:42, schrieb jbiskofski:

I have 6 elevators, and 50 people. These people weigh between 120 and
350lbs.

How can I find the optimal way of distributing these people into the 6
elevators so that each elevator carries approximately the same weight ?

Hopefully the proposed solutions are "use XYZ::FOO::BAR module from
cpan" rather than 60 lines of crazy algorithm perl code :)


Indeed there is a CPAN module
https://metacpan.org/pod/Algorithm::Bucketizer
that does what you want,
the following snippet works decent for me.

#!/usr/bin/perl

use strict;
use warnings;

use Algorithm::Bucketizer;

my $bucketizer = Algorithm::Bucketizer->new(bucketsize => 1200);
# or whatever any of your cabine can transport

$bucketizer->add_bucket() for 1..6;

$bucketizer->add_item(120+3.5*$_ => 120+3.5*$_) for 1..60;
# here I just assume an easy uniform distribution of weights,
# of course here you'd have to fit your real weights in case

$bucketizer->optimize(algorith => 'random', maxtime => 10);

foreach my $bucket ($bucketizer->buckets()) {
   print join("+",$bucket->items()), "=",$bucket->level(),"\n";
}


I used the random method for optimizing as your problem will always fail 
when working with enough items/buckets as it as NP-hard as someone else 
already suggested.



Greetings,
Janek

--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/




Re: balancing/distribution problem solution

2014-03-21 Thread Shawn H Corey
On Fri, 21 Mar 2014 09:42:25 -0600
jbiskofski  wrote:

> I have 6 elevators, and 50 people. These people weigh between 120 and
> 350lbs.
> 
> How can I find the optimal way of distributing these people into the 6
> elevators so that each elevator carries approximately the same
> weight ?
> 
> Hopefully the proposed solutions are "use XYZ::FOO::BAR module from
> cpan" rather than 60 lines of crazy algorithm perl code :)
> 
> Have a nice day everyone!

This is known as the Knapsack Problem:
http://en.wikipedia.org/wiki/Knapsack_problem

And it's NP-hard. :(


-- 
Don't stop where the ink does.
Shawn

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/




balancing/distribution problem solution

2014-03-21 Thread jbiskofski
I have 6 elevators, and 50 people. These people weigh between 120 and
350lbs.

How can I find the optimal way of distributing these people into the 6
elevators so that each elevator carries approximately the same weight ?

Hopefully the proposed solutions are "use XYZ::FOO::BAR module from cpan"
rather than 60 lines of crazy algorithm perl code :)

Have a nice day everyone!