mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-24 00:45:52 +00:00
Genetic Algorithm File Fitter, GAFFitter for short, is a tool based
on a genetic algorithm (GA) that tries to fit a collection of items into as few as possible volumes of a specific size. For example, the items might be files/directories and the volumes might be CDs or DVDs. The task of arranging items in such manner that the number of required bins is minimized is called Bin Packing, a NP-hard combinatorial problem for which no deterministic polynomial-time algorithm is known. Using heuristics, such as GAs, it is usually possible to approximate -- and often reach -- the best solution for the problem within a reasonable time. WWW: http://gaffitter.sourceforge.net PR: ports/144725 Submitted by: Charlie Kester <corky1951@comcast.net>
This commit is contained in:
parent
f2f7d93f07
commit
98280b3968
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=251311
@ -274,6 +274,7 @@
|
||||
SUBDIR += fusefs-wikipediafs
|
||||
SUBDIR += fuser
|
||||
SUBDIR += fvcool
|
||||
SUBDIR += gaffitter
|
||||
SUBDIR += gag
|
||||
SUBDIR += gai-leds
|
||||
SUBDIR += ganglia-monitor-core
|
||||
|
31
sysutils/gaffitter/Makefile
Normal file
31
sysutils/gaffitter/Makefile
Normal file
@ -0,0 +1,31 @@
|
||||
# ex:ts=8
|
||||
# Ports collection makefile for: gaffitter
|
||||
# Date created: 13 Mar 2010
|
||||
# Whom: corky1951@comcast.net
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
PORTNAME= gaffitter
|
||||
PORTVERSION= 0.6.0
|
||||
CATEGORIES= sysutils
|
||||
MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${PORTVERSION}/
|
||||
|
||||
MAINTAINER= corky1951@comcast.net
|
||||
COMMENT= A bin packing utility that uses a genetic algorithm
|
||||
|
||||
USE_BZIP2= yes
|
||||
|
||||
.if !defined(NO_INSTALL_MANPAGES)
|
||||
MAN1= ${PORTNAME}.1
|
||||
.endif
|
||||
|
||||
PLIST_FILES= bin/${PORTNAME}
|
||||
|
||||
do-install:
|
||||
${INSTALL_PROGRAM} ${WRKSRC}/src/${PORTNAME} ${PREFIX}/bin
|
||||
.if !defined(NO_INSTALL_MANPAGES)
|
||||
${INSTALL_MAN} ${FILESDIR}/${PORTNAME}.1 ${MAN1PREFIX}/man/man1
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
3
sysutils/gaffitter/distinfo
Normal file
3
sysutils/gaffitter/distinfo
Normal file
@ -0,0 +1,3 @@
|
||||
MD5 (gaffitter-0.6.0.tar.bz2) = a4a0fa0b3eeeaf49624d2e1b78de3cff
|
||||
SHA256 (gaffitter-0.6.0.tar.bz2) = 61236240942d0319fb1c0a7e3da8424ddad7fe5abc82c2e1e3f2a89ccc9fe275
|
||||
SIZE (gaffitter-0.6.0.tar.bz2) = 44433
|
190
sysutils/gaffitter/files/gaffitter.1
Normal file
190
sysutils/gaffitter/files/gaffitter.1
Normal file
@ -0,0 +1,190 @@
|
||||
.TH GAFFITTER "1" "August 2008" "gaffitter 0.6.0" "User Commands"
|
||||
.SH NAME
|
||||
gaffitter \- Genetic Algorithm File Fitter
|
||||
.SH SYNOPSIS
|
||||
.B gaffitter
|
||||
\fI-t target\fR[\fIunit\fR] [\fIoptions\fR...] \fI<files>\fR
|
||||
.PP
|
||||
\fIcommand\fR | \fBgaffitter\fR - \fI-t target\fR[\fIunit\fR] [\fIoptions\fR...] \fI[files]\fR
|
||||
.PP
|
||||
the unit suffixes 'k', 'm', 'g' or 't' can be used, where:
|
||||
.PP
|
||||
k = KB/KiB, m = MB/MiB, g = GB/GiB and t = TB/TiB [default = bytes]
|
||||
.SH DESCRIPTION
|
||||
Genetic Algorithm File Fitter, GAFFitter for short, is a tool based on a genetic algorithm (GA) that tries to fit a collection of items into as few as possible volumes of a specific size.
|
||||
.PP
|
||||
For example, the items might be files/directories and the volumes might be CDs or DVDs.
|
||||
.PP
|
||||
The task of arranging items in such manner that the number of required bins is minimized is called Bin Packing, a NP-hard combinatorial problem for which no deterministic polynomial-time algorithm is known. Using heuristics, such as GAs, it is usually possible to approximate -- and often reach -- the best solution for the problem within a reasonable time.
|
||||
.SS "General options:"
|
||||
.HP
|
||||
\fB\-t\fR <f>[unit], \fB\-\-target\fR <f>[unit]
|
||||
.IP
|
||||
target size (mandatory), f>0.0
|
||||
.HP
|
||||
\fB\-\-si\fR
|
||||
.IP
|
||||
use powers of 1000 (not 1024) for target, min, max and output sizes
|
||||
.HP
|
||||
\fB\-\-bins\fR <n>, \fB\-\-vols\fR <n>
|
||||
.IP
|
||||
maximum number of bins (volumes) [default = "unlimited"]
|
||||
.HP
|
||||
\fB\-v\fR, \fB\-\-verbose\fR
|
||||
.IP
|
||||
verbose
|
||||
.HP
|
||||
\fB\-\-min\fR <f>[unit], \fB\-\-min\-size\fR <f>[unit]
|
||||
.IP
|
||||
minimum file size [default = none]
|
||||
.HP
|
||||
\fB\-\-max\fR <f>[unit], \fB\-\-max\-size\fR <f>[unit]
|
||||
.IP
|
||||
maximum file size [default = none]
|
||||
.HP
|
||||
\fB\-B\fR <n>, \fB\-\-block\-size\fR <n>
|
||||
.IP
|
||||
the smallest amount of bytes a file can occupy [default = 1]
|
||||
.HP
|
||||
\fB\-\-ss\fR, \fB\-\-show\-size\fR
|
||||
.IP
|
||||
print the size of each file
|
||||
.HP
|
||||
\fB\-\-sb\fR, \fB\-\-show\-bytes\fR
|
||||
.IP
|
||||
also print the sizes in bytes
|
||||
.HP
|
||||
\fB\-\-hi\fR, \fB\-\-hide\-items\fR
|
||||
.IP
|
||||
don't print the selected items
|
||||
.HP
|
||||
\fB\-\-hs\fR, \fB\-\-hide\-summary\fR
|
||||
.IP
|
||||
hide summary line containing sum, difference and number of
|
||||
selected items
|
||||
.HP
|
||||
\fB\-s\fR, \fB\-\-sort\-by\-size\fR
|
||||
.IP
|
||||
sort the output by size, not by name
|
||||
.HP
|
||||
\fB\-n\fR, \fB\-\-no\-case\fR
|
||||
.IP
|
||||
use case\-insensitive sorting
|
||||
.HP
|
||||
\fB\-r\fR, \fB\-\-sort\-reverse\fR
|
||||
.IP
|
||||
sort the output in reverse order
|
||||
.HP
|
||||
\fB\-z\fR, \fB\-\-null\-data\fR
|
||||
.IP
|
||||
assume NULL (\e0) as the delimiter of input files via stdin (pipe)
|
||||
.HP
|
||||
\fB\-Z\fR, \fB\-\-null\fR
|
||||
.IP
|
||||
same as \fB\-\-dw\fR '\e0'. See also the \fB\-0\fR and \fB\-\-hs\fR options
|
||||
.HP
|
||||
\fB\-0\fR, \fB\-\-null\-bins\fR
|
||||
.IP
|
||||
same as \fB\-\-bs\fR '\e0'. See also the \fB\-Z\fR and \fB\-\-hs\fR options
|
||||
.HP
|
||||
\fB\-\-bs\fR <char>, \fB\-\-bins\-separator\fR <char>
|
||||
.IP
|
||||
separate bins (vols) with "char" [default = newline]
|
||||
.HP
|
||||
\fB\-\-ew\fR <char>, \fB\-\-enclose\-with\fR <char>
|
||||
.IP
|
||||
enclose file names with "char" [default = none]
|
||||
.HP
|
||||
\fB\-\-dw\fR <char>, \fB\-\-delimit\-with\fR <char>
|
||||
.IP
|
||||
delimit file names (lines) with "char" [default = newline]
|
||||
.HP
|
||||
\fB\-\-version\fR
|
||||
.IP
|
||||
print GAFFitter version and exit
|
||||
.HP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
.IP
|
||||
print this help and exit
|
||||
.SS "Direct Input options:"
|
||||
.HP
|
||||
\fB\-\-di\fR, \fB\-\-direct\-input\fR
|
||||
.IP
|
||||
switch to direct input mode, i.e., read directly "size identifier"
|
||||
pairs instead of file names
|
||||
.HP
|
||||
\fB\-\-di\-b\fR, \fB\-\-di\-bytes\fR
|
||||
.IP
|
||||
assume input sizes as bytes
|
||||
.HP
|
||||
\fB\-\-di\-k\fR, \fB\-\-di\-kb\fR
|
||||
.IP
|
||||
assume input sizes as kibi bytes (KiB); KB if \fB\-\-di\-si\fR
|
||||
.HP
|
||||
\fB\-\-di\-m\fR, \fB\-\-di\-mb\fR
|
||||
.IP
|
||||
assume input sizes as mebi bytes (MiB); MB if \fB\-\-di\-si\fR
|
||||
.HP
|
||||
\fB\-\-di\-g\fR, \fB\-\-di\-gb\fR
|
||||
.IP
|
||||
assume input sizes as gibi bytes (GiB); GB if \fB\-\-di\-si\fR
|
||||
.HP
|
||||
\fB\-\-di\-t\fR, \fB\-\-di\-tb\fR
|
||||
.IP
|
||||
assume input sizes as tebi bytes (TiB); TB if \fB\-\-di\-si\fR
|
||||
.HP
|
||||
\fB\-\-di\-si\fR
|
||||
.IP
|
||||
use powers of 1000 (not 1024) for input sizes
|
||||
.SS "Genetic Algorithm options:"
|
||||
.HP
|
||||
\fB\-\-ga\-s\fR <n>, \fB\-\-ga\-seed\fR <n>
|
||||
.IP
|
||||
GA initialization seed, n>=0 [default = 1]; 0 = random
|
||||
.HP
|
||||
\fB\-\-ga\-rs\fR, \fB\-\-ga\-random\-seed\fR
|
||||
.IP
|
||||
use random GA seed (same as \fB\-\-ga\-seed\fR 0)
|
||||
.HP
|
||||
\fB\-\-ga\-ng\fR <n>, \fB\-\-ga\-num\-generations\fR <n>
|
||||
.IP
|
||||
maximum number of generations, n>0 [default = auto]
|
||||
.HP
|
||||
\fB\-\-ga\-ps\fR <n>, \fB\-\-ga\-pop\-size\fR <n>
|
||||
.IP
|
||||
number of individuals, n>tournament_size [default = auto]
|
||||
.HP
|
||||
\fB\-\-ga\-cp\fR <f>, \fB\-\-ga\-cross\-prob\fR <f>
|
||||
.IP
|
||||
crossover probability, 0.0<=f<=1.0 [default = 0.95]
|
||||
.HP
|
||||
\fB\-\-ga\-mp\fR <f>, \fB\-\-ga\-mutation\-prob\fR <f>
|
||||
.IP
|
||||
mutation probability, 0.0<=f<=1.0 [default = 0.10]
|
||||
.HP
|
||||
\fB\-\-ga\-sp\fR <n>, \fB\-\-ga\-sel\-pressure\fR <n>
|
||||
.IP
|
||||
selection pressure (tournament size), 2<=n<pop_size [default = 2]
|
||||
.HP
|
||||
\fB\-\-ga\-theo\fR [n], \fB\-\-ga\-theoretical\fR [n]
|
||||
.IP
|
||||
stop if the theoretical minimum number of bins is reached. If n is
|
||||
given, it is assumed to be the theoretical minimum number of bins.
|
||||
.PP
|
||||
Other search methods
|
||||
.HP
|
||||
\fB\-\-ap\fR, \fB\-\-approximate\fR
|
||||
.IP
|
||||
local approximation using Best Fit search (non\-optimal but
|
||||
very fast)
|
||||
.HP
|
||||
\fB\-\-sp\fR, \fB\-\-split\fR
|
||||
.IP
|
||||
just split the input when target size is reached (preserves
|
||||
original order while splitting)
|
||||
.SH LICENSE
|
||||
This is free software. You may redistribute copies of it under the terms
|
||||
of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
|
||||
There is NO WARRANTY, to the extent permitted by law.
|
||||
.SH AUTHOR
|
||||
Written by Douglas Adriano Augusto (daaugusto).
|
15
sysutils/gaffitter/pkg-descr
Normal file
15
sysutils/gaffitter/pkg-descr
Normal file
@ -0,0 +1,15 @@
|
||||
Genetic Algorithm File Fitter, GAFFitter for short, is a tool based
|
||||
on a genetic algorithm (GA) that tries to fit a collection of items
|
||||
into as few as possible volumes of a specific size.
|
||||
|
||||
For example, the items might be files/directories and the volumes
|
||||
might be CDs or DVDs.
|
||||
|
||||
The task of arranging items in such manner that the number of
|
||||
required bins is minimized is called Bin Packing, a NP-hard
|
||||
combinatorial problem for which no deterministic polynomial-time
|
||||
algorithm is known. Using heuristics, such as GAs, it is usually
|
||||
possible to approximate -- and often reach -- the best solution for
|
||||
the problem within a reasonable time.
|
||||
|
||||
WWW: http://gaffitter.sourceforge.net
|
Loading…
Reference in New Issue
Block a user