/*
# Flexibility evaluation of multiechelon supply chains -- Data Set
Dat set tested for PLOS ONE research paper

Please cite as:
Almeida, J. F. F.; Conceição, S. V.; Pinto, L. R.; Camargo, R. S.; Júnior, G. M. (2018): FEMSC-DataSet. 
*/


data;																																			

set V 		:= 	V1	V2 ;	#vendors (suppliers)
set F 		:= 	F1	F2 ;	#plants (facilities)
set DC		:= 	DC1	DC2;	#DCs (distribution centers)
set C		:= 	C1	C2	;	#customers
set M		:=	M1	M2	;	#modals of transport
set X		:=	X1	X2 ;	#components
set Y		:=	Y1	Y2	;	#finished products
set R[F1]	:=	R1A	R1B	;	#resources of plant F1	
set R[F2]	:=	R2A	R2B	;	#resources of plant F2

# link Suppliers Plants
set L_VF:=	(V1, F1) (V1, F2) (V2, F1) (V2, F2);
	
# link plant machines
set L_FR[F1,Y1] :=	(F1, R1A) 	(R1A, R1B)	(R1B, F1);   	
set L_FR[F1,Y2] := 	(F1, R1A) 	(R1A, R1B)	(R1B, F1);   	
set L_FR[F1,Y3] := 	(F1, R1A) 	(R1A, R1B)	(R1B, F1);   	
set L_FR[F1,Y4] := 	(F1, R1A) 	(R1A, R1B)	(R1B, F1);   	
set L_FR[F1,Y5] := 	(F1, R1A) 	(R1A, R1B)	(R1B, F1);

set L_FR[F2,Y1] :=	(F2, R2A) 	(R2A, R2B)	(R2B, F2);   	
set L_FR[F2,Y2] := 	(F2, R2A) 	(R2A, R2B)	(R2B, F2);   	
set L_FR[F2,Y3] := 	(F2, R2A) 	(R2A, R2B)	(R2B, F2);   	
set L_FR[F2,Y4] := 	(F2, R2A) 	(R2A, R2B)	(R2B, F2);   	
set L_FR[F2,Y5] := 	(F2, R2A) 	(R2A, R2B)	(R2B, F2);   	

# link plant DCs 
set L_FDC:=	 (F1, DC1)	(F1, DC2)	(F2, DC1) (F2, DC2);

# link DCs customers
set L_DCC:=	 (DC1, C1)	(DC1, C2)	(DC2, C1) (DC2, C2);

param D /*	Demand	*/		
[*,*,'C1']:	Y1	Y2:=	
	    1 	10	10
	    2 	10	10

[*,*,'C2']:	Y1	Y2:=	
	    1 	10	10
	    2 	10	10
;

/*	Sales price	*/
param RC :=
	Y1		100
	Y2 		100
;

param BL /*  Bill of materials	*/
		:	Y1	Y2:=
		X1	2	2																																
		X2	1	1																																
;																																					

# production fixed cost 
param PFC: 	R1A	R1B	R2A	R2B	:=
	    F1	500	500	.	.
	    F2	.	.	500	500
;

#production variable cost of finished product
param PVC:	Y1	Y2:=	
	    F1	20	20
	    F2	10	20
;

/*	Procurement cost	***/				
param PC: 		X1	X2	Y1	Y2	:=		
		V1	1	1	40	50
		V2	1	1	.	.
;

/*  Lot size */
param LS :	X1	X2	Y1	Y2	:=		
	    V1	10	10	.	.	
	    V2	10	10	.	.	
	    F1	.	.	5	1	
	    F2	.	.	5	1	
	    ;


/* Available hours	*/
param AH:=
	1	50
	2	50
;	


# extra capacity cost (constraint violation)
param EX: 	R1A	R1B	R2A	R2B	:=
	F1	100	100	.	.	
	F2	.	.	100	100	
;	

# Inventory costs 
param IC:	Y1	Y2	:=		
	F1		1	1
	F2		1	1
;


/*		# Transportation capacity */
param TC
[M1,*,*]:	V1	V2	F1	F2	DC1	DC2	C1	C2:=	
		V1	.	.	10	10	.	.	.	.
		V2	.	.	10	10	.	.	.	.
		F1	.	.	.	.	10	10	.	.
		F2	.	.	.	.	10	10	.	.
		DC1	.	.	.	.	.	.	10	10
		DC2	.	.	.	.	.	.	10	10

[M2,*,*]:	V1	V2	F1	F2	DC1	DC2	C1	C2:=	
		V1	.	.	20	20	.	.	.	.
		V2	.	.	20	20	.	.	.	.
		F1	.	.	.	.	20	20	.	.
		F2	.	.	.	.	20	20	.	.
		DC1	.	.	.	.	.	.	20	20
		DC2	.	.	.	.	.	.	20	20
;		


/*		Initial stock	*/			
param Io: 	X1	X2	Y1	Y2	:=		
	    F1	100	100	5	5	
	    F2	100	100	5	5	
	    DC1	.	.	5	5	
	    DC2	.	.	5	5	
	    ;

#Safety stock of finished product "p" on location "l"

param SS 
[*,*,1]:	X1	X2	Y1	Y2	:=		
	    F1	10	10	10	10	
	    F2	10	10	10	10	
	    DC1	.	.	10	10	
	    DC2	.	.	10	10	

[*,*,2]:	X1	X2	Y1	Y2	:=		
	    F1	10	10	10	10	
	    F2	10	10	10	10	
	    DC1	.	.	10	10	
	    DC2	.	.	10	10	
;

/* Availability of material */
param AV 
[*,*,1]:	X1	X2	Y1	Y2	:=		
	    V1	50	10	10	10	
	    V2	10	50	.	.
	    	

[*,*,2]:	X1	X2	Y1	Y2	:=		
	    V1	50	10	10	10	
	    V2	10	50	.	.
;

/* Machine extra capacity */
param AX
[F1,*,*]:	1	2	:=	
	R1A	10	10
	R1B	10	10

[F2,*,*]:	1	2	:=
	R2A	10	10
	R2B	10	10
;

/* tax */																																				
param TAX:= 																																
	C1	0.05																																	
	C2	0.05																																	
;

# distribution center inbound handling capacity (products units)
param CI:	1	2:=		
  DC1		50	50
  DC2		50	50
;

# distribution center outbound handling capacity (products units)
param CO:	1	2:=		
  DC1		50	50
  DC2		50	50
;

end;																																					

