F3K-contest-drawing
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:Try to minimize the occurrence of duels in a F3K contest
F3K contest drawing
===================

License:
--------

## This software is copyrighted by Jos Decoster .  The  following terms apply to all files associated with the 
## software unless explicitly disclaimed in individual files.
##
## The authors hereby grant permission to use, copy, modify, distribute, and
## license this software and its documentation for any purpose, provided that
## existing copyright notices are retained in all copies and that this notice
## is included verbatim in any distributions.  No written agreement, license,
## or royalty fee is required for any of the authorized uses.
##
## IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
## DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
## OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF,
## EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
##
## THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
## FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE IS
## PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO
## OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
## MODIFICATIONS.
##
## RESTRICTED RIGHTS: Use, duplication or disclosure by the U.S. government
## is subject to the restrictions as set forth in subparagraph (c) (1) (ii)
## of the Rights in Technical Data and Computer Software Clause as DFARS
## 252.227-7013 and FAR 52.227-19.

Introduction:
-------------

This is an experiment to generate groups for an F3K contests using the following
constraints:

- Two pilots should be in the same group as few times as possible
- Two pilots should be in the same group at least once

or by minimising the mean absolute deviation (MAD) of the draw. The MAD is
calculated as used by Gerry Carter in his GliderScore program and is a measure
for the distribution of the duels in the draw.

Different methods are used:

- Choosing best of a number of random draw
- Starting from a random draw, try to remove most occurring duels or introduce
  non-occurring duels using Simulated annealing.

Requirements:
-------------

- Tcl/Tk to generate HTML and XML output

Building the tool:
------------------

- Clone the Git repository

    git clone git://github.com/jdc8/F3K-contest-drawing.git

- On Linux, use the following command:

    make

- On Windows, use the following command:

    nmake /f Makefile.vc

Running the tool:
-----------------

Run the tool as follows:

  f3ksa #pilots #rounds #method #pilots_in_group1 ?#pilots_in_group2? ...

    #pilots                    Number of pilots in the contest
    #rounds                    Number of rounds/tasks in the contest
    #method                    Method used to draw the contest, see below
    #pilots_in_group1          Number of pilots in first group
    ?#pilots_in_group2?        Number of pilots in second group
    ...                        ...
    ?c,?     Conflicting pilots (e.g. frequency conflict)
    ...
    ?T,,...? Team pilots
    ...
    ?t?                Minimum temperature when using simulated annealing (< 0.008)
    ?o?                  Output file, default is 'f3k.txt', use 'data' to add
                               to 'data' directory with formatted name.

Know drawing methods, specified as integer:

    f    Use built-in cost fucntion
    < 0             Best of abs(specified number) of drawings
    0               Worst case
    1               Minimize number of duels with highest frequency
    > 1             Minimize number of duels with highest frequency until
                    specified number is reached, then try to maximize that
                    number of duels while trying to avoid pilots not duelling
    m??  Use mean absolute deviation
    no integer      Minimize the mean absolute deviation
    < 0             Best of abs(specified number) of drawings
    > 0             Minimize the mean absolute deviation with extra cost for
                    duels with frequency 0 and with frequency >= specified
                    integer

Methods > 0 use simulated annealing.

When results are written in the data subdirectory the file name is created as follows:

   f3k_<#pilots>p_<#rounds>r_<#pilots in group 1>?_<#pilots in group 2>...?_.txt

   The method is used in the file name as:

   < 0     random
   0       worstcase
   > 0     <#method>siman

When using the mean absolute deviation, _mad is appended to the  part.

Example:

- 20 pilots, 2 groups, 10 tasks, best of 1000 drawings

  f3ksa 20 10 -1000 10 10
    
- 20 pilots, 2 groups, 10 tasks, minimize number of duels with highest frequency

  f3ksa 20 10 1 10 10

  The result for this drawing is printed to file 

      f3k_20p_10r_10_10_1siman.txt

  as follows:

pilots 20
rounds 10
groups 10 10
method simulated_annealing
max_duels 1
round 1 {{2 14 18 6 0 1 7 13 5 10} {8 19 17 12 9 16 3 4 11 15}}
round 2 {{13 3 1 19 11 0 5 14 17 8} {7 2 4 6 12 16 18 9 10 15}}
round 3 {{7 14 8 5 1 4 17 9 2 0} {6 10 12 16 19 13 18 15 3 11}}
round 4 {{7 16 15 19 2 13 8 14 18 17} {1 3 5 6 12 0 9 10 11 4}}
round 5 {{8 19 5 4 2 10 16 6 13 3} {14 11 17 1 7 18 15 0 12 9}}
round 6 {{7 6 5 15 0 17 8 10 11 4} {14 16 19 3 1 2 18 9 13 12}}
round 7 {{17 12 0 6 13 9 4 7 11 19} {1 10 18 15 2 8 16 14 3 5}}
round 8 {{4 19 12 16 18 11 5 17 1 6} {8 13 10 9 3 7 15 2 14 0}}
round 9 {{10 13 7 9 11 14 16 4 5 15} {3 12 6 17 8 18 19 0 2 1}}
round 10 {{15 5 18 9 14 6 0 8 19 11} {13 17 1 3 10 12 4 7 2 16}}
duel_frequencies 0:2 2:11 4:92 6:85
matrix  -  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19
matrix  0  -  6  4  4  4  6  6  6  6  6  4  6  4  4  6  4  0  6  4  4
matrix  1  6  -  6  6  4  6  4  4  4  4  4  4  6  4  6  2  4  6  6  4
matrix  2  4  6  -  6  4  4  4  6  6  4  6  0  4  6  6  4  6  4  6  4
matrix  3  4  6  6  -  4  4  4  2  6  4  6  4  6  6  4  4  6  4  4  6
matrix  4  4  4  4  4  -  6  6  6  4  6  6  6  6  4  2  4  6  6  2  4
matrix  5  6  6  4  4  6  -  6  4  6  4  6  6  2  4  6  4  4  4  4  4
matrix  6  6  4  4  4  6  6  -  4  4  4  6  6  6  4  2  4  4  4  6  6
matrix  7  6  4  6  2  6  4  4  -  4  6  6  4  4  6  6  6  4  6  4  2
matrix  8  6  4  6  6  4  6  4  4  -  4  4  4  2  4  6  6  4  6  4  6
matrix  9  6  4  4  4  6  4  4  6  4  -  4  6  6  4  6  6  4  4  4  4
matrix 10  4  4  6  6  6  6  6  6  4  4  -  4  4  6  4  6  6  2  4  2
matrix 11  6  4  0  4  6  6  6  4  4  6  4  -  6  4  4  6  4  6  4  6
matrix 12  4  6  4  6  6  2  6  4  2  6  4  6  -  4  2  4  6  6  6  6
matrix 13  4  4  6  6  4  4  4  6  4  4  6  4  4  -  6  4  6  4  4  6
matrix 14  6  6  6  4  2  6  2  6  6  6  4  4  2  6  -  6  4  4  6  4
matrix 15  4  2  4  4  4  4  4  6  6  6  6  6  4  4  6  -  6  4  6  4
matrix 16  0  4  6  6  6  4  4  4  4  4  6  4  6  6  4  6  -  4  6  6
matrix 17  6  6  4  4  6  4  4  6  6  4  2  6  6  4  4  4  4  -  4  6
matrix 18  4  6  6  4  2  4  6  4  4  4  4  4  6  4  6  6  6  4  -  6
matrix 19  4  4  4  6  4  4  6  2  6  4  2  6  6  6  4  4  6  6  6  -

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。