⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trans.cpp

📁 LinPacker是一个优化矩形布局的工具
💻 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 + -