Ejemplo n.º 1
0
void test_copies()
{
    // Test for range of integers
    std::vector<int> val_1 = {12,2,3,4,5,1,6,7,8,9,10};
    std::vector<int> val_2(11);
    auto it = copies(val_1.begin(),val_1.end(),val_2.begin());
    assert(*(val_1.begin())==*(val_2.begin()));
    assert(it == val_2.end());

    // Test for range of Strings
    std::vector<std::string> str_1={"Hi", "this", "is", "a", "test", "for", "equal"};
    std::vector<std::string> str_2(7);
    auto StrIterator = copies(str_1.begin(),str_1.end(),str_2.begin());
}
Ejemplo n.º 2
0
ParameterList printPurchaseOrder::getParamsOneCopy(const int row,
                                                   XSqlQuery *qry)
{
  ParameterList params = printMulticopyDocument::getParamsOneCopy(row, qry);
  params.append("title", copies()->watermark(row));
  return params;
}
ParameterList printShippingForms::getParamsOneCopy(const int row, XSqlQuery *qry)
{
  ParameterList params = printMulticopyDocument::getParamsOneCopy(row, qry);

  params.append("shiphead_id", qry->value("shiphead_id"));
  params.append("shipchrg_id", qry->value("shiphead_shipchrg_id"));

  if (_metrics->boolean("MultiWhs"))
    params.append("MultiWhs");

  if (copies()->showCosts(row))
    params.append("showcosts");

  return params;
}
Ejemplo n.º 4
0
	vector<vector<int> > combinationSum(vector<int> &candidates, int target) {
		vector<vector<int> > result;
		int n = candidates.size();
		if(!n)
			return result;
		sort(candidates.begin(), candidates.end());
		vector<int> selection(n, 0);
		vector<int> copies(n, 0);
		int value = target;
		int index = 0;
		selection[index] = 0;
		copies[index] = 1;
		value -= candidates[selection[index]] * copies[index];
		while(true) {
			if(selection[0] >= n)
				break;
			if(value == 0){
				addResultItem(candidates, selection, copies, index, result);
				value += candidates[selection[index]] * copies[index];
				if(selection[index] == n-1) {
					if(!index)
						break;
					// 
					--index;
					++copies[index];
					value -= candidates[selection[index]];
				} else {
					++selection[index];
					copies[index] = 1;
					value -= candidates[selection[index]];
				}
			} else if(value > 0) {
				if(selection[index] == n-1) {
					++copies[index];
					value -= candidates[selection[index]];
				} else {
					++index;
					selection[index] = selection[index-1] +1 ;
					copies[index] = 1;
					value -= candidates[selection[index]];
				}
			} else {
				value += candidates[selection[index]] * copies[index];
				if(selection[index] >= n-1)
					if(!index)
						break;
					else {
						--index;
						++copies[index];
						value -= candidates[selection[index]];
					}
				else if(copies[index] == 1) {
					// go back
					if(!index)
						break;
					else {
						--index;
						++copies[index];
						value -= candidates[selection[index]];
					}
				} else {
					++selection[index];
					copies[index] = 1;
					value -= candidates[selection[index]];
				}
			}
		}
		return result;
	}
Particles ResamplingResidual::resample(Particles* particles){

    Particles resampledSet;
    Particles stage1;
    int count = 0;
    resampledSet.samples = fmat(particles->samples.n_rows,particles->samples.n_cols);
    resampledSet.weights = frowvec(particles->weights.n_cols);

    fvec cumsum;
    fvec random;

    unsigned int number = particles->samples.n_cols;
    unsigned int numberOfStage1 = 0;

    // Generating copie information of every particle
    ivec copies = zeros<ivec>(particles->samples.n_cols);
    for (unsigned int i=0;i<particles->samples.n_cols;++i){
        copies = (int) floor(number*particles->weights(i));
    }

    numberOfStage1 = sum(copies);

    stage1.samples =  fmat(particles->samples.n_rows,numberOfStage1);
    stage1.weights = frowvec(numberOfStage1);

    //Picking N_i = N*w_i copies of i-th particle
    for (unsigned int i=1; i < copies.n_rows;++i){
        for (int j=0;j<copies(i);++j){
            for (unsigned int k=0;k<particles->samples.n_rows;++k){
                stage1.samples(k,count) = particles->samples(k,i);
            }
            stage1.weights(count) = particles->weights(i) - (float)copies(i)/number;
            count++;
        }
    }

    // multinomial resampling with residuum weights w_i = w_i - N_i/N
    cumsum = zeros<fvec>(numberOfStage1);
    for (unsigned int i=1; i < stage1.weights.n_cols;++i){
        cumsum(i) = cumsum(i-1) + stage1.weights(i);
    }

    // generate sorted random set
    random = randu<fvec>(numberOfStage1);
    random=random*cumsum(cumsum.n_rows-1);
    random = sort(random);

    for (unsigned int j=0; j < random.n_rows; ++j){
        for (unsigned int i=0 ; i < cumsum.n_rows; ++i){
            if (random(j) <= cumsum(i)){
                if(i > 0){
                    if(random(j) >= cumsum(i-1)) {
                        for (unsigned int k=0;k<stage1.samples.n_rows;++k){
                            resampledSet.samples(k,j) = stage1.samples(k,i);
                            assignmentVec.push_back(i);
                        }
                        break;
                    }
                }
                else {
                    for (unsigned int k=0; k<stage1.samples.n_rows; ++k){
                        resampledSet.samples(k,j) = stage1.samples(k,i);
                        assignmentVec.push_back(i);
                    }
                    break;

                }

            }
            // Normalize weights
            resampledSet.weights(j) = 1.0f/particles->weights.n_cols;
        }
    }

    return resampledSet;
}
Ejemplo n.º 6
0
void optiq_opi_compute_stat()
{
    int size, rank;
    MPI_Comm_rank (MPI_COMM_WORLD, &rank);
    MPI_Comm_size (MPI_COMM_WORLD, &size);

    if (rank == 0)
    {
	int mincopies = 0, maxcopies = 0, medcopies = 0, total_numcopies = 0;
	int minrputs = 0, maxrputs = 0, medrputs = 0, total_rputs = 0;
	int minlinkloads = 0, maxlinkloads = 0, medlinkloads = 0;
        double total_linkloads = 0;
	double avgcopies = 0, avglinkloads = 0, avgrputs = 0;

	std::vector<int> copies (max_opi.all_numcopies, max_opi.all_numcopies + size);
	std::sort (copies.begin(), copies.end());

	std::vector<int> rputs (max_opi.all_numrputs, max_opi.all_numrputs + size);
	std::sort (rputs.begin(), rputs.end());

	std::vector<int> linkloads (max_opi.all_link_loads, max_opi.all_link_loads + size * 9);
	std::sort (linkloads.begin(), linkloads.end());
	opi.linkloads = linkloads;

	int ncpy = 0, nrput = 0, nlinks = 0;
	maxcopies = copies[size - 1];
	maxrputs = rputs[size - 1];
	maxlinkloads = linkloads[size * 9 - 1];

	std::map<int, int>::iterator it;
	opi.copies_dist.clear();

	for (int i = size; i >= 0; i--)
	{
	    if (copies[i] != 0)
	    {
		total_numcopies += copies[i];
		mincopies = copies[i];
		ncpy++;

		it = opi.copies_dist.find(copies[i]);

		if (it == opi.copies_dist.end())
		{
		    opi.copies_dist.insert(std::pair<int, int>(copies[i], 1));
		}
		else
		{
		    it->second++;
		}
	    }

	    if (rputs[i] != 0)
	    {
		total_rputs += rputs[i];
		minrputs = rputs[i];
		nrput++;
	    }
	}

	for (int i = size * 9; i >= 0; i--)
	{
	    if (linkloads[i] != 0)
	    {
		total_linkloads += linkloads[i];
		minlinkloads = linkloads[i];
		nlinks++;
	    }
	}

	medcopies = copies[size - 1 - ncpy/2];
	avgcopies = (double) total_numcopies / ncpy;

	medrputs = rputs[size - 1 - nrput/2];
	avgrputs = (double) total_rputs / nrput;

	medlinkloads = linkloads[size * 9 - 1 - nlinks/2];
	avglinkloads = total_linkloads / nlinks;

	opi.copies.max = maxcopies;
	opi.copies.min = mincopies;
	opi.copies.avg = avgcopies;
	opi.copies.med = medcopies;
	opi.copies.total = total_numcopies;
	
	opi.rputs.max = maxrputs;
	opi.rputs.min = minrputs;
	opi.rputs.avg = avgrputs;
	opi.rputs.med = medrputs;
	opi.rputs.total = total_rputs;

	opi.load_link.max = maxlinkloads;
	opi.load_link.min = minlinkloads;
	opi.load_link.avg = avglinkloads;
	opi.load_link.med = medlinkloads;
	opi.load_link.total = total_linkloads;
    }
}