*******************************************************************
MATLAB code for the Colourful Feasibility Problem.
Copyright (C) 2006 by Sui Huang.

This code is licenced under the GNU General Public Licences,
more details are contained in the file "licence.TXT".

This package contains the code files for the thesis 
"Colourful Feasibility: Algorithms, Bounds, and Implications" ([1])
and the paper "The Colourful Feasibility Problem" ([2])
*******************************************************************


The features in this package depends on the following external components:
  MATLAB Optimization Toolbox      http://www.mathworks.com/products/optimization/
  SeDuMi                           http://sedumi.mcmaster.ca/
  YALMIP                           http://control.ee.ethz.ch/~joloef/yalmip.php


Following are the brief descriptions of files.


The random generators of Colourful Feasibility Problems (for [1][2]):
  cfp_gencore_highdensity.m
  cfp_gencore_lowdensity.m
  cfp_gencore_middensity.m
  cfp_gencore_random.m
  cfp_gencore_tube.m
  cfp_gen_infeasible.m
  cfp_gen_random.m

The solvers of Colourful Core Feasibility Problems (for [1][2]):
  cfp_solver_bo1.m           (depends on Matlab Optimization Toolbox)
  cfp_solver_bo2.m           (depends on Matlab Optimization Toolbox)
  cfp_solver_multiupdate.m   (depends on Matlab Optimization Toolbox)
  cfp_solver_maxvolume.m            
  cfp_solver_randompick.m
  cfp_solver_hybrid.m        (for [2] only)
  cfp_solver_mbo2            (for [2] only)

The solvers for general Colourful Feasibility Problems (for [1]):
  cfp_solver_enumstretch.m
  cfp_solver_sdprelax.m      (for infeasibility detection, depends on SeDuMi and YALMIP)

The test script of solvers and random generators (for [1]):
  test_gen.m
  test_gencore.m
  test_infeasible.m

The utility subroutines used by random generators and solvers (for [1][2]):
  private/accdot.m                  uses heuristic to get numerically accurate dot product
  private/accnorm.m                 uses heuristic to get numerically accurate norm
  private/accsum.m                  uses heuristic to get numerically accurate sum
  private/rand_int.m                generates matrix of random integers
  private/rand_real.m               generates matrix of random real numbers               
  private/regular_simplex.m         generates the coordinates of regular simplices
  
The script of generating and organizing infeasible cases (for [1]):
  infeaGen.m
  

The initialization routines of colourful simplex (for [2]):
  cfp_init_random.m
  cfp_init_proj.m
  cfp_init_maxdist.m
  cfp_init_regular.m
