Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////Dodać #include <random>
- odcinek mrowka::losuj(int ktory_krok){
- /////////////////ODRZUCENIE WĘZŁÓW WYKORZYSTANYCH//////////////////////
- vector <int> indeksy_pozostalych_wezlow; //wektor z indeksami nie wykorzystanych węzłów
- for(int i=0; i<DLUGOSC;i++){
- bool czy_byl=false;
- for(int j=0; j<=ktory_krok;j++){
- if(wezly[j]==i)
- czy_byl=true;
- }
- if(czy_byl)
- ;
- else
- indeksy_pozostalych_wezlow.push_back(i);
- }
- ////////////////////UTWORZENIE LISTY ODCINKÓW DO PRZEJŚCIA////////////////////////
- int indeks_obecnego=wezly[ktory_krok];
- vector <odcinek> odcinki_do_wylosowania;
- for(int i=0; i<(int)odcinki_z_feromonem_glowne.size(); i++){
- for(int j=0; j<(int)indeksy_pozostalych_wezlow.size(); j++){
- if(odcinki_z_feromonem_glowne[i].pocz==indeks_obecnego){
- if(odcinki_z_feromonem_glowne[i].kon==indeksy_pozostalych_wezlow[j]){
- odcinki_do_wylosowania.push_back(odcinki_z_feromonem_glowne[i]);
- }
- }
- if(odcinki_z_feromonem_glowne[i].kon==indeks_obecnego){
- if(odcinki_z_feromonem_glowne[i].pocz==indeksy_pozostalych_wezlow[j]){
- odcinki_do_wylosowania.push_back(odcinki_z_feromonem_glowne[i]);
- }
- }
- }
- }
- ///////////////////TWORZENIE LINII LOSOWANIA//////////////////////////////////////
- double linia_losowania=0;
- for(int i=0; i<(int)odcinki_do_wylosowania.size(); i++){
- linia_losowania+=odcinki_do_wylosowania[i].feromon;
- linia_losowania+=0.1;
- }
- mt19937 eng(static_cast<unsigned long>(time(nullptr)));
- uniform_real <double> dist(0, linia_losowania);
- double wylosowana_liczba=dist(eng);
- int indeks=0; //indeks wylosowanego odcinka
- linia_losowania=0;
- for(int i=0; i<(int)odcinki_do_wylosowania.size(); i++){
- if(i==(int)odcinki_do_wylosowania.size()-1){
- if((wylosowana_liczba>=linia_losowania)&&(wylosowana_liczba<=(linia_losowania+0.1))){
- indeks=i;
- break;
- }
- }
- else{
- if((wylosowana_liczba>=linia_losowania)&&(wylosowana_liczba<(linia_losowania+0.1))){
- indeks=i;
- break;
- }
- }
- }
- return odcinki_do_wylosowania[indeks];
- };
Advertisement
Add Comment
Please, Sign In to add comment