Esempio n. 1
0
	void Segmenter::segment() {
		if (featureSet != NULL) {
			frames = featureSet->getMinHistorySize();
			
			initialize();
			
			for (int i = 0; i < frames; i++) {
				for (int j = 0; j < features.size(); j++)
					y[j] = features[j]->getHistoryFrame(i);
			
				viterbi(i);
			}
			
			vector<int> state_sequence(frames, 0);
			
			vector<double>::iterator minimum_cost = min_element(oldCosts.begin(), oldCosts.end());
			state_sequence[frames - 1] = distance(oldCosts.begin(), minimum_cost);
			
			for (int i = frames - 2; i > -1; i--) 
				state_sequence[i] = psi[i][state_sequence[i + 1]];
			
			for (int i = 0; i < frames; i++)
				modes[i] = modeMatrix[0][state_sequence[i]];
		}
	}
// Private functions
double Anneal::AcceptRatioNow(int sequence_size) const
{
    std::uniform_real_distribution<double> distribution(0.0, 1.0);
    int accept_state_num = 0;
    int total_state_num = 0;

    std::vector<Path> state_sequence(sequence_size);
    std::vector<double> state_value(sequence_size);
    for (int i = 0; i < sequence_size; i++)
    {
        state_sequence[i] = std::move(GenerateRandomPath());
        state_value[i] = Evaluate(state_sequence[i]);
    }

    for (int i = 0; i < sequence_size; i++)
    {
        for (int j = 0; j < sequence_size; j++)
        {
            total_state_num++;
            if (state_value[j] <= state_value[i] ||
                distribution(generator_) <
                    TransitionProbability(state_value[i], state_value[j]))
                    accept_state_num++;
        }
    }
    return static_cast<double>(accept_state_num) /
           static_cast<double>(total_state_num);
}
Esempio n. 3
0
int main(int argc, char** argv) {
  core::term_signal=0;
    size_t n=1;
    const char* filename=NULL;

    if (argc<2 || argc>3) {
	fprintf(stderr,"%s [repeat] pulsesequence\n",argv[0]);
	return 1;
    }
    
    if (argc==3) {
	char* endptr=NULL;
	n=strtoul(argv[1],&endptr,10);
	if (*endptr!=0 && n<1) {
	    fprintf(stderr,"%s [repeat] pulsesequence\n",argv[0]);
	    return 1;
	}
	filename=argv[2];
    }


    if (argc==2) {
	filename=argv[1];
    }

    if (0!=access(filename, R_OK)) {
	fprintf(stderr, "%s: could not open file %s, reason: %s\n",argv[0],filename, strerror(errno));
	return 1;
    }


    int value_returned=0;
    size_t i=0;
    while (i<n && value_returned==0) {
	value_returned=state_sequence(filename);
	i++;
    }
    if (n>1) {
	fprintf(stdout,"%s: executed %s %lu times\n",argv[0],filename,i);
    }
    return value_returned;
}