📄 trans.cpp
字号:
#include "trans.h"/* QValueVector <int> permutations; QValueVector <bool> orientations; float taille; */#include <iostream>using namespace std;void swap (int i,int j){ int k=i; i=j; j=k;}trans::trans(){ //orientations.resize(10,1); //for (int i=9;i > -1; i--) for (int i=0;i<10;i++) { permutations.append(i); orientations.append(rand()%2); } taille = 50;}/* trans::trans(trans t1,trans t2) { cout << "kikoo"<<endl; } */ voidtrans::mutationI(){ int i = rand()%10; int j = rand()%10; //cout <<" avant : "<<permutations[i]<<" "<<permutations[j]<<endl; int buf = permutations[i]; permutations[i] = permutations[j]; permutations[j] = buf; //swap(permutations[i],permutations[j]); //cout <<" apres : "<<permutations[i]<<" "<<permutations[j]<<endl; //cout << "kikoo"<<endl;} voidtrans::mutationB(){ int i = rand()%10; //cout <<"avant "<<orientations[i]<<endl; if (orientations[i]) orientations[i]= 0; else orientations[i]= 1; //cout <<"apres "<<orientations[i]<<endl; //cout << "kikoo"<<endl;}; inttrans::getIndex(int i){ return permutations[i];} booltrans::getPosit(int i){ return orientations[i];} voidtrans::transformer(){ mutationB(); mutationI();} voidtrans::setTaille(float i){ taille = i;} float trans::getTaille(){ return taille;}void trans::crossoverI(trans t1,trans t2){ // ceci n'applique pas vraiment un crossover mais une combinaison int s = permutations.size(); for (int i=0;i<s;i++) { setIndex(i,t1.getIndex(t2.getIndex(i))); } //cout << "crossover sur l'ordre"<<endl;}void trans::crossoverB(trans t1,trans t2){ int s = orientations.size(); bool tmp; int aCut = random()%s; int bCut = random()%s; if (aCut > bCut) // swap { swap(aCut,bCut); } for (int i=aCut;i<bCut;i++) { tmp = t1.getPosit(i); t1.setPosit(i,t2.getPosit(i)); t2.setPosit(i,tmp); } //cout << "crossover sur les orientations"<<endl;} voidtrans::setIndex(int i, int b){ permutations[i] = b;} void trans::setPosit(int i, bool b){ orientations[i] = b; };bool operator< (trans x, trans y){ return (x.getTaille() < y.getTaille());}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -