void NSGA_II::Mutuj(Solution * S) { for (unsigned int i_zmienna = 0; i_zmienna < problem->zmienne.size(); i_zmienna++) { for (int i_bit = 0; i_bit < il_bitow; i_bit++) { if (losuj(0.0, 1.0) < prawd_mutacji) { S->genotyp[i_zmienna][i_bit] = !S->genotyp[i_zmienna][i_bit]; } } } }
void Symulacja::rok(Restauracja restauracja){ zaludnijWektorKlientow(); // pobiera z bazy wszystkie adresy email i tworzy na ich podstawie obiekty klasy KlientOnline, nastepnie tworzy taka sama liczbe obiektow klasy Klient Stacjonarny pobierzNazwyPizzy(); // pobiera z bazy nazwy pizzy, aby na ich podstawie klient mogl skladac zamowienia for (int i=1;i<=365;i++) { // dzień: int iloscZamowionychPizzWCiaguDnia = losujIloscZamowionychPizzWCiaguDnia(); // losuje wartosc miedzy 10 a 20 int iloscZamowienWCiaguDnia = iloscZamowionychPizzWCiaguDnia * 0.8; // bo czesc klientow zamowi wiecej niz jedna pizze int ileKlientow = iloscZamowienWCiaguDnia; for (int i=0;i<ileKlientow;i++){ int ktoryKlient = losuj(0, (int)wektorKlientow.size()-1); // losuje numer/indeks klienta, ktory ma zamowic string nazwaPizzy = nazwyPizzy[losuj(0, (int)nazwyPizzy.size())]; Zamowienie zamowienie = wektorKlientow[ktoryKlient]->zamow(losuj(0, 1), nazwaPizzy, losujLiczbe()); restauracja.akceptujZamowienie(zamowienie); } cout << "Dzien: " << i << endl; // funkcja zamow zwraca nowe zamowienie, teraz pozostaje przekazac je do realizacji tj. ulepic nowe pizze i zapisac w bazie odpowiednie wartosci dotyczace sprzedazy i wartosci zakupionych przez klienta } restauracja.wyswietlPodsumowanie(); }
void NSGA_II::MakeNewPop() { // QVector<Solution*>* Q = new QVector<Solution*>(); int ind1, ind2; for (int i = 0; i < wiel_pop; i++) { ind1 = losuj(0, rodzice.size() - 1); ind2 = ind1; while (ind1 == ind2) { ind2 = losuj(0, rodzice.size() - 1); } // DINFO; // qDebug() << "ind1 " << ind1 << " ind2 " << ind2 << "\n"; if (CrowdedComparisonOperator(rodzice[ind1], rodzice[ind2])) { // DINFO; rodzenstwo.push_back(new Solution(*(rodzice[ind1]))); } else { // DINFO; rodzenstwo.push_back(new Solution(*(rodzice[ind2]))); } // DINFO; if (i > 0 && ((i % 2) == 0))//dla parzystego indesku bierzemy 2 ostatnie osob. i wyk. mut. krzyz. { if (losuj(0.0, 1.0) < prawd_krzyz) { Krzyzuj(rodzenstwo[i], rodzenstwo[i - 1]); } Mutuj(rodzenstwo[i]); Mutuj(rodzenstwo[i - 1]); } // DINFO; } }
void NSGA_II::Krzyzuj(Solution * S1, Solution* S2) { int maks = il_bitow * problem->zmienne.size(); int m = losuj(1, maks - 1); for (int i = m; i < maks; i++) { } int indeks = 0; bool tmp; for (unsigned int i_zmienna = 0; i_zmienna < problem->zmienne.size(); i_zmienna++) { for (int i_bit = 0; i_bit < il_bitow; i_bit++) { if (indeks >= m) { tmp = S1->genotyp[i_zmienna][i_bit]; S1->genotyp[i_zmienna][i_bit] = S2->genotyp[i_zmienna][i_bit]; S2->genotyp[i_zmienna][i_bit] = tmp; } indeks++; } } }
int main(void) { int tab[WYMIAR]; int klucz; int indeks; losuj(tab, WYMIAR); drukuj(tab, WYMIAR); printf("\n"); printf("podaj element ktorego szukasz:"); scanf("%d", &klucz); indeks=znajdz(tab, WYMIAR, klucz); if(indeks!=-1) printf("znaleziony element ma indeks tablicy numer %d\n", indeks); else printf("nie znaleziono podanego elementu\n"); return 0; }
void Roslina::zasiew(Swiat &swiat, int i, int j) { int a = rand() % 100; Polozenie nowe; if (a <3) { nowe = losuj(); if (this->rysowanie() == GUARANA) { if (swiat.getSymbol(nowe.x,nowe.y) != ' '){} // jezeli wylosuje miejsce zajete to nie urosnie nowa else { swiat.stworzOrganizm(swiat, GUARANA, nowe.x, nowe.y); } } else if (this->rysowanie() == TRAWA) { if (swiat.getSymbol(nowe.x, nowe.y) != ' '){} // jezeli wylosuje miejsce zajete to nie urosnie nowa else { swiat.stworzOrganizm(swiat, TRAWA, nowe.x, nowe.y); } } else if (this->rysowanie() == WILCZAJAGODA) { if (swiat.getSymbol(nowe.x, nowe.y) != ' '){} // jezeli wylosuje miejsce zajete to nie urosnie nowa else { swiat.stworzOrganizm(swiat, WILCZAJAGODA, nowe.x, nowe.y); } } swiat.logi(this->rysowanie(), " rozmnaza sie ", swiat.getSymbol(nowe.x, nowe.y)); } }
void Mlecz::akcja(Swiat &swiat, int i, int j) { //3 proby rozmnozenia int a; int n = 0; Polozenie nowe; while (n<3) { a = rand() % 100; if (a <1) { nowe = losuj(); if (swiat.getSymbol(nowe.x,nowe.y) != ' '){} else { swiat.stworzOrganizm(swiat, MLECZ, nowe.x, nowe.y); } } n++; } }
//=========================================================================================== int main() { DDRB = 0b11111111; DDRD = 0b01111111; //PD7 jako przycisk PORTD = (1 << PD7); DDRC = (0 << PD7); pusto(); //wygaszenie ekranu ADMUX = (0 << REFS1) | (1 << REFS0); //wybor napiecia referencyjnego do ADC (Vcc) MCUCR = (1 << SE) | (1 << SM1); //konfiguracja sleep mode int czas=pomiar(); losuj(); //liczba prawdziwie losowa srand(liczba_RND); //bedzie naszym seedem do randomizera zeruj(); while (1) { do { liczba_RND = rand() % (iloscUczniow); } while (czyWylosowana(liczba_RND) == 1); //losowanie bez powtórzeń eeprom_update_byte((uint8_t *) liczba_RND, 1); //zapisywanie wylosowanej liczby do pamięci EEPROM eeprom_busy_wait(); //oczekiwanie na zakończenie procesu zapisywania show(liczba_RND + 1); //wyświetlanie wylosowanej liczby na ekran. for (int i = 0; i <czas + 100; i++) //wyświetlanie liczby przez określony czas _delay_ms(10); pusto(); //wygaszenie ekranu sleep_cpu(); //przejście w tryb uśpienia } }
void Wilk::akcja(Swiat &swiat, int i, int j) { nowe = losuj(); this->kolizja(swiat, i, j); wiek++; }
int Symulacja::losujLiczbe(){ int tab[] = {1, 1, 1, 1, 1, 1, 1, 1, 0, 0}; int temp = tab[losuj(0, 9)]; if (temp==1) return 1; else return losuj(2, 5); }
int Symulacja::losujIloscZamowionychPizzWCiaguDnia(){ return losuj(4, 8); };