Пример #1
0
int main(void)
{
    while(scanf("%d%d",&n,&m)) {
        if(n==0&&m==0) break;

        scanf("%d%d",&x,&y);
        for(int i=0; i<n; i++) {
            scanf("%s",&str[i]);
        }

        solveA(m,n,y);  //y代表宽度
        reserveB(m,n);
        int total=solveB(n,m,x); //x代表高度

        if(x!=y) {
            reserveA(m,n);
            solveA(n,m,y);
            reserveB(n,m);
            total+=solveB(m,n,x);
        }
        printf("%d\n",total);
        //free memory
    }
    return 0;
}
Пример #2
0
void runTests(T *results, T t0, T I, T A, char numTest)
{
  // Initialize an "x" value for each simulation
  T xA=results[0], xE=results[1], xRK=results[2], xRD=results[3];
  // Variables for determining error in the simulations
  T diffE=(xA-xE), diffRK=(xA-xRK), diffRD=(xA-xRD);
  // Pre-computed values used in simulations
  T C, D;
  // Time
  T t = t0;
  // The data file and its name
  FILE *output; char *fileName = malloc(sizeof(char)*14);
  
  // Copy the simulation number into the appropriate place
  // and open the file
  if (sizeof(T)==4)
    strcpy(fileName,"./data/32/dat_.out");
  else
    strcpy(fileName,"./data/64/dat_.out");
  fileName[13]=numTest;
  output=fopen(fileName,"w");
  
  // Pre compute these values
  D = I/A;
  C = xA-D;

  do  {
    // Solve analytic first to keep simulations synchronized
    xA = solveA(A, D, C, t);
        
    diffE = fabs(xA-xE);
    diffRK = fabs(xA-xRK);
    diffRD = fabs(xA-xRD);

    // Print the output to a file
    fprintf(output,
	    "%lf \t %lf \t %lf \t %lf \t %lf \t %lf\t %lf \t %lf\n",
	    t,
	    xA,
	    xE,
	    xRD,
	    xRK,
	    diffE,
	    diffRK,
	    diffRD);
    
    // Run the three numerical simulations
    xE = solveE(xE, I, A);
    xRK = solveRK(xRK, I, A);
    xRD = solveRD(xRD, A, D);

    // Advance time
    t += DT;
  } while (t<=T_MAX+DT);

  // Put the final results into the array, close the file, and return
  results[0]=xA; results[1]=xE; results[2]=xRK; results[3]=xRD;
  fclose(output);
  return;
}
Пример #3
0
int main()
{
    printf("%d\n", special(3));
    char op;
    printConsole(&op);
    if(op == 'a') {
        sieveBuild();
        vector answer;
        answer = solveA();
        printf("Task (a):\n");
        printArray(answer);
    }
    else {
        printf("Task (b):\n");
        vector v;
        v = readArray();
        vector ans;
        ans = solveB(v);
        printArray(ans);
    }
    return 0;
}
int main(int argc, char **argv)
{

	  //*****************************SET PARAMETERS*************************************************
	  Parameters params(argc, argv, 0);
	  Parameters params2(argc, argv, 1);
	  //********************************************************************************************

	  //**********************READ DATA AND MAKE SOLUTION*******************************************
	  Solution* sol = constructSolution(params);
	  preprocesData(sol);
	  Solution* sol2 = constructSolution(params2);
	  preprocesData(sol2);
	 //*********************************************************************************************


	  //*****************************SET PARAMETERS*************************************************
	  if(sol->getNumberOfProcesses() * sol->getNumberOfMachines() <= 100 * 1000) {
		  params2.delta = params.delta = 40;
		  params2.nmb_iters_bpr = params.nmb_iters_bpr = 300;
		  params2.nmbRanges = params.nmbRanges = 7;
		  params2.rangeLength = params.rangeLength = sol->getNumberOfProcesses() / params.nmbRanges;
	  }
	  else {
		  params2.nmb_iters_bpr = params.nmb_iters_bpr = 100;
		  params2.nmbRanges = params.nmbRanges = 5;
		  params2.rangeLength = params.rangeLength = sol->getNumberOfProcesses() / params.nmbRanges;
		  params2.numberOfBestProcessesToConsiderShiftSwap =
				  params.numberOfBestProcessesToConsiderShiftSwap = 3;
		  params2.nmbLoops = params.nmbLoops = 2;

		  if(sol->getNumberOfProcesses() * sol->getNumberOfMachines() >= 20000 * 2000)
			  params2.nmbLoops = params.nmbLoops = 1;
	  }

	  params2.seedValue = params.seedValue + 1000;
	  //********************************************************************************************


	  if(sol->getNumberOfProcesses() * sol->getNumberOfMachines() <= 100 * 1000)  // A instances
		  solveA(params, sol, params2, sol2);
	  else  																	  // B instances
		  solveB(params, sol, params2, sol2);

	  long timeToSleep = params.time_limit - (time(0) - params.programStartTime) - 3;
	  if (timeToSleep < 0)
		  timeToSleep = 0;

	  sleep(timeToSleep);

	  // Read Solutions From Files And Write a better one

	  sol->setOriginalLoadCostWeights();
	  sol2->setOriginalLoadCostWeights();
	  //cout << " sol->solutionFilename   " << sol->solutionFilename << endl;
	  //cout << " sol2->solutionFilename  " << sol2->solutionFilename << endl;

	  //cout << " sol->getCost()   " << sol->getCost() << endl;
	  //cout << " sol2->getCost()  " << sol2->getCost() << endl;

	  readSolutionFromFile( sol,  sol->solutionFilename);
	  readSolutionFromFile(sol2, sol2->solutionFilename);


	  //cout << " after sol->getCost()   " << sol->getCost() << endl;
	  //cout << " after sol2->getCost()  " << sol2->getCost() << endl;
	  if ((sol->getCost() < sol2->getCost()) && (sol->checkConflict(false)))
	    sol->writeToFile(params.solution_filename);
	  else
		sol2->writeToFile(params.solution_filename);


	  //remove solution files
	  ostringstream oss1(""); oss1 << "rm " << sol->solutionFilename;
	  system(oss1.str().c_str());
	  ostringstream oss2(""); oss2 << "rm " << sol2->solutionFilename;
	  system(oss2.str().c_str());


	  //*****************************************FILES (REMOVE THIS PART)********************************************************

	  /*fstream fileResults("results", ios::out | ios::app);

	  fileResults << setw(5)  << params.seedValue << setw(30) << params.data_filename
			      << setw(20) << sol->getCost()
		          << setw(20) << sol2->getCost()
		          << setw(20) << *(params.best_objective)
			      << setw(15)  << time(0) - params.programStartTime << endl;

	  // running times
	  fstream fileRunnungTimes("runnung_times", ios::out | ios::app);
	  fileRunnungTimes << setw(5)  << setw(30) << params.data_filename << setw(20) << *(params.best_objective)
	  			       << setw(20)  << time(0) - params.programStartTime << endl;

	  // check solution with official checker
	  ostringstream oss("");
	  oss << "./checker " << params.data_filename << " " << params.initial_assignment_filename
		  << " " << params.solution_filename;
	  oss << " >> checkerFile ";
	  system(oss.str().c_str());
	   */
	  //*************************************************************************************************************************

	  return 0;

}