in reply to Re^6: Help Me in following code ::
in thread Help Me in following code ::

Your problem is a variation upon the Bin packing problem.

Unfortunately, your particular constraints--variable size bins & constrained number of items per bin--do not fit with either of the bin packing solutions on cpan: Algorithm::BinPack & Algorithm::Bucketize.

I think now we have clarified what the problem is that you are trying to solve, it might be better to post a new top-level node--perhaps I should do that on your behalf to ensure it is clear--so that the other monks with more CS chops than I might take a second look at your problem.

I have some thoughts on it and might post something here later.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
RIP an inspiration; A true Folk's Guy

Replies are listed 'Best First'.
Re^8: Help Me in following code ::
by gskoli (Novice) on Apr 14, 2010 at 12:13 UTC
    Thanks
    Please do it
    Post it on my behalf

    Thanks again
Re^8: Help Me in following code ::
by gskoli (Novice) on Apr 15, 2010 at 04:05 UTC
    Hi
    Yesterday i have tried something like this
    my @only_unique = (); my $index1 = scalar(@new_lot)+1; #my $total_first = 0; my @array_range = (); my @temp_first = (); my @Result_array =(); my @new_lot_dup = @new_lot; my $insert_flag = 0; do { my $total_first = 0; my @temp_first = (); my @array_range = (); m +y @Result_array =(); for(my $ab = 0;$ab <6 ;$ab++){ my $random_one = int(rand(@new_lot_dup)); if($random_one eq 0){$random_one = int(rand(@new_lot_dup)) +;} print $random_one."_::_".$A_services[$random_one-1]."\n"; $total_first = $total_first+ $A_services[$random_one-1]; push(@temp_first,$random_one); if(($ab >2) &&($ab<6) ){ if(($total_first gt 840) && ($total_first lt 900)){ push(@array_range,scalar(@temp_first)); print +"\n".$total_first."_:"."@array_range".":_ "."@temp_first"."\n\n"; foreach (@temp_first){push(@Result_array,$_);} + $insert_flag = 1; last; } } } } until($insert_flag eq 1); my$one = 0; do{ $one++; &Get_Other_Group(); } until($one eq $index1); sub Get_Other_Group() { my $insert_flag_inner = 0; do{ my $total_second = 0; my @temp_second = (); for(my $vb = 0;$vb<6;$vb++) { my $random_two = int(rand(@new_lot_dup)); if($random_two eq 0){$random_two = int(rand(@new_l +ot_dup));} #print $vb."IN FUNCTION ::".$random_two."_::_" +.$A_services[$random_two-1]."\n"; $total_second = $total_second+ $A_services[$random +_two-1]; push(@temp_second,$random_two); ##### __ This is to Delete Duplicate Entry___# #undef %saw; #@temp_second = grep(!$saw{$_}++, @temp_second); if(($vb >2) &&($vb<6) ) { print $vb."_::_ "; if(($total_second gt 840) && ($total_second + lt 900)) { my $count_repeat = 0; print $total_second +."****"."@temp_second"."\n"; for(my $mb = 0;$mb<scalar(@temp_second +);$mb++) { for(my $cb = 0 ; $cb < scalar(@Res +ult_array);$cb++) { if($temp_second[$mb] eq $R +esult_array[$cb]){ $count_rep +eat++; } } } if($count_repeat eq 0){ push(@array_range,scalar(@temp_sec +ond)); print "\n MAAAAA KAAAALI".$total_second."_:"."@array_range"."_ +_##_ "."@temp_second"."\n\n"; foreach (@temp_second){push(@Resul +t_array,$_);} $insert_flag_inner = 1; last; } } } } }until($insert_flag_inner eq 1); } print "\n"."@array_range"."_::_"."@Result_array"."\n"; print "+++++++++++++++++++++\n\n"; my $loop_limit = 0; for (my $gh = 0;$gh <scalar(@array_range);$gh++){ my $disp_total = 0; for(my $ch = 0;$ch <$array_range[$gh];$ch++){ my $t_val = $Result_array[$loop_limit]; $disp_total = $disp_total+$A_services[$t_val-1]; print "$loop_limit _:: _".$t_val."_::_".$A_service +s[$t_val-1]." "; $loop_limit++; } print $disp_total."\n"; }