Example #1
0
void TABLE::find(char* wildcard_ID, char* lastID)
{
	vector<IDinfor> print_data;
	int len = strlen(wildcard_ID);
	if (hasStart(wildcard_ID, len)){
		for (int i = 1; i < NAMEMAX; i++){
			int size = ID_table[i].size();
			for (int j = 0; j < size; j++){
				if (strcmp(ID_table[i][j].str, lastID) == 0)
					continue;
				if (WildTextCompare(ID_table[i][j].str, wildcard_ID))
					print_data.push_back(ID_table[i][j]);
			}
		}
	}

	else {
		int size = ID_table[len].size();
		for (int i = 0; i < size; i++){
			if (strcmp(ID_table[len][i].str, lastID) == 0)
					continue;
			if (WildTextCompare(ID_table[len][i].str, wildcard_ID))
				print_data.push_back(ID_table[len][i]);
		}
	}

	sort(print_data.begin(), print_data.end(), cmp);
	print(print_data);
}
bool QTodoItem::qt_invoke( int _id, QUObject* _o )
{
    switch ( _id - staticMetaObject()->slotOffset() ) {
    case 0: actionsMenuActivated((int)static_QUType_int.get(_o+1)); break;
    case 1: actionsMenu(); break;
    case 2: addSubTodo(); break;
    case 3: addTodoBelow(); break;
    case 4: addTodoAbove(); break;
    case 5: hasStart((bool)static_QUType_bool.get(_o+1)); break;
    case 6: hasDeadline((bool)static_QUType_bool.get(_o+1)); break;
    case 7: showHBoxBelow(); break;
    default:
	return QHBox::qt_invoke( _id, _o );
    }
    return TRUE;
}
typename Population<FITNESS_TYPE>::chromosome_container SmoothPeakMutationOperation<VALUE_TYPE, FITNESS_TYPE>::doMutate(
        const typename Population<FITNESS_TYPE>::chromosome_container &chromosomeInputContainer,
        BaseManager<FITNESS_TYPE> &manager) const
{

    typename Population<FITNESS_TYPE>::chromosome_container resultset;
    typename Population<FITNESS_TYPE>::chromosome_container choosenChromosomeContainer;
    typename Population<FITNESS_TYPE>::chromosome_container notChoosenChromosomeContainer;
    const auto maxNumMvc = this->getBuilderFactory().getSettings().getNum();

    const auto continousBuilderSettings =
            (
            static_cast<const ContinousMultiValueBuilderSettings<VALUE_TYPE, FITNESS_TYPE>&>(this->getBuilderFactory().getSettings())
            );


    choosenChromosomeContainer = this->getChoosingOperation().doChoose(chromosomeInputContainer);

    for(auto it: chromosomeInputContainer)
    {
            auto result = std::find(std::begin(choosenChromosomeContainer), std::end(choosenChromosomeContainer), it);
            if (result == std::end(choosenChromosomeContainer))
            {
                 notChoosenChromosomeContainer.emplace_back(it);
            }
    }

    //only mutate choosen chromosomes
    for (const auto &chosenChromosome : choosenChromosomeContainer)
    {

        const auto slotsToMutate = Random::generate<unsigned int>(this->getSettings().getMinimumPointsToMutate(),
                this->getSettings().getMaximumPointsToMutate());

        //casting mutant to MVC
        const auto mvcMutant = std::dynamic_pointer_cast < MultiValueChromosome<VALUE_TYPE, FITNESS_TYPE>
                > (chosenChromosome);
        assert(mvcMutant);

        //creating a new MVC (to keep things reversible)
        auto mutatedChromosome = std::dynamic_pointer_cast < MultiValueChromosome<VALUE_TYPE, FITNESS_TYPE>
                > (this->getBuilderFactory().createChromosome(BaseChromosomeFactory<FITNESS_TYPE>::LET_UNPOPULATED));
        assert(mutatedChromosome);

        //getting values
        const auto &mutantChromosomeContainer = mvcMutant->getContainer();
        auto &result_container = mutatedChromosome->getContainer();

        std::copy(mutantChromosomeContainer.cbegin(), mutantChromosomeContainer.cend(), result_container.begin());

        //Predetermine Positions for Mutation:
        std::unordered_set<unsigned int> positions;
        while (positions.size() < slotsToMutate)
        {
            const auto rand = Random::generate<unsigned int>(0, maxNumMvc - 1);
            positions.emplace(rand);
        }

        //We have an predetermined amount of points for introducing peaks...
        for (const auto pos : positions)
        {
            const int sign = (Random::generateBit()) ? -1 : 1;
            const auto peak = sign * Random::generate<VALUE_TYPE>(0, this->_maxElevation);
            Smoothing::peakAt<VALUE_TYPE, FITNESS_TYPE>(pos, Random::generate<int>(0, this->_maxLeftEps),
                    Random::generate<int>(0, this->_maxRightEps),
                    //TODO(bewo): Make minElevation another setting
                    peak, mutatedChromosome);
        }



        //Correct smoothness in mutated chromosome
        Smoothing::restoreSmoothness<VALUE_TYPE, FITNESS_TYPE>(mutatedChromosome,
                continousBuilderSettings.getEps(),
                continousBuilderSettings.getRandomMin(),
                continousBuilderSettings.getRandomMax(),
                continousBuilderSettings.hasStart(),
                continousBuilderSettings.getStartValue());



        //Age reset
        mutatedChromosome->setAge(0);
        resultset.emplace_back(mutatedChromosome);
    }

    //add not mutated chromosomes
    resultset.insert(resultset.end(), notChoosenChromosomeContainer.begin(), notChoosenChromosomeContainer.end());

    return resultset;

}