$Id: README 192 2008-07-14 20:24:37Z daaugusto $

------------------------------------------
Genetic Algorithm File Fitter -- gaffitter
------------------------------------------

  http://gaffitter.sourceforge.net/          (home page)
  http://sourceforge.net/projects/gaffitter/ (project page)

  2005-2008 - Douglas A. Augusto (daaugusto@gmail.com)


== About ==

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 and the volumes might be CDs or DVDs.  This is called the Bin
Packing Problem, 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.

GAFFitter was created with the intent to minimize the number of CDs or
DVDs used to store a set of files whose total size is greater than the
medium capacity. It was further extended to work directly with any set
of items, whether it is composed of files/directories or not.

GAFFitter is written in C++ and is currently available as a command-line
program for POSIX-compliant systems (GNU/Linux, BSD derivatives and so
on).


== Features ==

GAFFitter is characterized by five main features, namely:

   - The global search based on a genetic algorithm.

   - The filter-oriented design, that is, a versatile interface suitable
     for integration with other tools and front-ends. 

   - The possibility to bypass filenames as the input and to directly
     read a list of items and their sizes. 

   - The great flexibility provided by the input arguments, which
     controls the behaviour of GAFFitter, including many genetic
     algorithm parameters.

   - The fact that it is a Free Software, which ensures the freedom for
     the users to study, change and redistribute GAFFitter.


=== Usage ===

The simplest way to run GAFFitter is as follows:

   gaffitter -t 700m *

This command will arrange the files and subdirectories of the current
directory into sets of at most 700 megabytes (a typical CD), in such a
way that the number of sets is minimized. In other words, GAFFitter will
try to fit the given files and directories into as few as possible
volumes of 700MB.


=== More information ===

A comprehensive description of GAFFitter's options and parameters,
several usage examples, and instructions on how to get its source code
can be found on GAFFitter's website at http://gaffitter.sf.net


== License ==

GNU General Public License (GPL) version 3 (or later)

   http://www.gnu.org/licenses/gpl.txt
