AI-Pathfinding-OptimizeMultiple
view release on metacpan or search on metacpan
lib/AI/Pathfinding/OptimizeMultiple/App/CmdLine.pm view on Meta::CPAN
has _chosen_scans => ( isa => 'ArrayRef', is => 'rw' );
has _should_exit_immediately =>
( isa => 'Bool', is => 'rw', default => sub { 0; }, );
has input_obj_class => ( isa => 'Str', is => 'rw' );
has _input_obj => ( is => 'rw' );
has _is_flares => ( is => 'rw', isa => 'Bool', default => sub { 0; }, );
has _num_boards => ( isa => 'Int', is => 'rw' );
has _offset_quotas => ( isa => 'Int', is => 'rw' );
has _optimize_for => ( isa => 'Str', is => 'rw' );
has _output_filename => ( isa => 'Str', is => 'rw' );
has _post_processor => (
isa => 'Maybe[AI::Pathfinding::OptimizeMultiple::PostProcessor]',
is => 'rw'
);
has _quotas_are_cb => ( isa => 'Bool', is => 'rw' );
has _quotas_expr => ( isa => 'Maybe[Str]', is => 'rw' );
has _should_rle_be_done => ( isa => 'Bool', is => 'rw' );
has _should_trace_be_done => ( isa => 'Bool', is => 'rw' );
has _simulate_to => ( isa => 'Maybe[Str]', is => 'rw' );
has _start_board => ( isa => 'Int', is => 'rw' );
has _stats_factors =>
lib/AI/Pathfinding/OptimizeMultiple/App/CmdLine.pm view on Meta::CPAN
$self->_input_obj(
$class->new(
{
start_board => $self->_start_board(),
num_boards => $self->_num_boards(),
}
)
);
}
$self->_post_processor(
AI::Pathfinding::OptimizeMultiple::PostProcessor->new(
{
do_rle => $self->_should_rle_be_done(),
offset_quotas => $self->_offset_quotas(),
}
)
);
return;
}
lib/AI/Pathfinding/OptimizeMultiple/App/CmdLine.pm view on Meta::CPAN
sub _report_total_iters
{
my $self = shift;
if ( $self->_arbitrator()->get_final_status() eq "solved_all" )
{
print "Solved all!\n";
}
printf( "total_iters = %s\n", $self->_arbitrator()->get_total_iters() );
}
sub _arbitrator_process
{
my $self = shift;
$self->_arbitrator()->calc_meta_scan();
my $scans =
$self->_post_processor->process( $self->_arbitrator->chosen_scans() );
$self->_chosen_scans($scans);
}
sub _do_trace_for_board
{
my $self = shift;
my $board = shift;
my $results = $self->_arbitrator()->calc_board_iters($board);
lib/AI/Pathfinding/OptimizeMultiple/App/CmdLine.pm view on Meta::CPAN
sub _get_run_string
{
my $self = shift;
my $results = shift;
return join(
"",
map {
sprintf( '%i@%i,',
$_->iters(), $self->_map_scan_idx_to_id( $_->scan_idx() ) )
} @{ $self->_post_processor->process( $results->scan_runs() ) },
);
}
sub _do_simulation_for_board
{
my ( $self, $board ) = @_;
my $results = $self->_arbitrator()->simulate_board($board);
my $scan_mapper = sub {
lib/AI/Pathfinding/OptimizeMultiple/App/CmdLine.pm view on Meta::CPAN
sub run
{
my $self = shift;
if ( $self->_should_exit_immediately() )
{
return 0;
}
$self->_init_arbitrator();
$self->_arbitrator_process();
$self->_report_total_iters();
$self->_write_script();
$self->_do_trace();
$self->_do_simulation();
return 0;
}
sub run_flares
{
my $self = shift;
$self->_optimize_for("len");
$self->_is_flares(1);
$self->_init_arbitrator();
$self->_arbitrator()->calc_flares_meta_scan();
my $scans =
$self->_post_processor->process( $self->_arbitrator->chosen_scans() );
$self->_chosen_scans($scans);
$self->_report_total_iters();
$self->_write_script();
$self->_do_trace();
$self->_do_simulation();
return 0;
}
lib/AI/Pathfinding/OptimizeMultiple/PostProcessor.pm view on Meta::CPAN
else
{
push @a, $scan;
$scan = $next_scan;
}
}
push @a, $scan;
return \@a;
}
sub process
{
my $self = shift;
my $scans_orig = shift;
# clone the scans.
my $scans = [ map { $_->clone(); } @{$scans_orig} ];
if ( $self->_offset_quotas )
{
lib/AI/Pathfinding/OptimizeMultiple/PostProcessor.pm view on Meta::CPAN
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
AI::Pathfinding::OptimizeMultiple::PostProcessor - post-processor.
=head1 VERSION
version 0.0.17
=head1 SUBROUTINES/METHODS
=head2 $self->scans_rle()
For internal use.
=head2 $self->process($scans_orig)
For internal use.
=for :stopwords cpan testmatrix url bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
=head1 SUPPORT
=head2 Websites
The following websites have more information about this module, and may be of help to you. As always,
( run in 0.237 second using v1.01-cache-2.11-cpan-8d75d55dd25 )