***************************
README
***************************

This generator allows to create random B2B instances,
for a given number of participants P, and a number of
M meeting between them. It also requires the number of 
timeslots T and locations L.

The two participants of every meeting are selected
randomly following an uniform distribution.

Authors:
* Miquel BOFILL
* Marc GARCIA
* Jesús GIRÁLDEZ-CRU
* Josep SUY
* Mateu VILLARET



----------------------
1. Install
----------------------

$ make

----------------------
2. Execution
----------------------

$ ./B2Bgenerator [options] -P #p -M #m -T #t -L #l
  
Options:
     -P <int>    : number of participants
     -M <int>    : number of meetings
     -T <float>  : number of timeslots
     -L <float>  : number of locations
     -s <int>    : seed (0)
     -o <string> : output file (stdout)

Checks:
     -> No repeated meetings
     -> No participant with more meetings than #timeslots

	

--------------------------------------
3. Contraints on the input parameters
--------------------------------------
If one of the following constraints is violated, the execution
stops, indicating the reason of the error
	
a) There is at least 2 participants:
	#p > 1
	
b) There is at least 1 meeting, 1 timeslots and 1 location:
	{#m, #t, #l} > 0
	
c) The number of meetings fits into the event capacity:
	#m <= #t * #l
	
d) The number of meetings fits into the combination of participants:
	#m <= (#p \choose 2)
Notice that (#p \choose 2) is the maximum number of distinct meetings
among #p participants

e) The number of meetings fits into the combination of participants-timeslots:
	#m <= (#p * #t) / 2
Notice that if every participant has #t meetings, in order to avoid repeated meetings
(#p * #t) / 2 is the maximum possible number of meetings



----------------------------
4. "Soft" feasibility checks
----------------------------
The resulting B2B random instance has the following feasible conditions:

a) There is no repeated meeting
b) No participant has more meetings than #t
	
Notice that these two conditions do *NOT* guarantee the instances to be feasible
(but they filter out some trivially unfeasible problems)	

