typedef IloArray< IloNumVarArray> NumVarMatrix;
typedef IloArray< IloBoolVarArray> NumBoolVarMatrix;

int CWYBinPacking::Level_Matching_MIP_CPLEX(vector <CItem> &item){
	ofstream print_report("Level_Matching_MIP_CPLEX.txt");	
	
	IloEnv env;
	if(print_report.is_open()){	
	int i, j, item_size = (int)item.size();
    print_report<<"item_size"<<item_size<<endl;

	try {
		print_report << "in try:: ok" << endl;
		IloModel model(env);
		NumBoolVarMatrix x(env, item_size);
		NumMatrix loss(env, item_size);
		print_report << "in 0:: ok" << endl;
		for(i=0; i<item_size; i++){
			loss[i] = IloNumArray(env, item_size, 0.0, IloInfinity);
			x[i] =  IloBoolVarArray(env, item_size);
		}
		
		print_report << "in 1:: ok" << endl;
		if(m_check_level_matching_model=true){
			print_report << "in 2:: ok" << endl;
			level_matching_model(model, x, loss, item, m_item_check);	//level matching model ¸¸µå´Â ÇÔ¼ö È£Ãâ  
		}else if(m_check_level_matching_model_park = true)
			level_matching_model_park(model, x, loss, item, m_item_check, m_slab_volumn);	//Dr.park's level matching model ¸¸µå´Â ÇÔ¼ö È£Ãâ  
	
		IloCplex cplex(model);
		
		cplex.exportModel("wy_levelgeneration.lp");
				
		env.end();
	
	}catch (...) {
		return -1;
	}
	
	  print_report<<"end line"<<item_size<<endl;

	}
	print_report.close();
	 return 0;
}