Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <iostream>
- #include <vector>
- #include <cmath>
- #define pi 3.14
- #define TMAX 400
- #define nr_biti 5
- using namespace std;
- int n;
- double N;
- double DeJong(vector<double> v, int n)
- {
- double sum = 0;
- for (int i = 0; i < n; i++)
- sum += v[i] * v[i];
- return sum;
- }
- double Schwefels(vector <double> v, int n)
- {
- double sum = 0;
- for (int i = 0; i < n; i++)
- {
- sum += (-1 * v[i] * sin(sqrt(abs(v[i]))) + (-1)*v[i] * sin(sqrt(abs(v[i]))));
- }
- return sum;
- }
- double Rastrigin(vector <double> v, int n)
- {
- double sum = 10*n;
- for (int i = 0; i < n; i++)
- {
- sum += v[i] * v[i] - 10 * cos(2 * pi*v[i]);
- }
- return sum;
- }
- double Six_Hump(vector <double>v , int n) // n mereu 2
- {
- return (4 - 2.1*v[0] * v[0] + pow(v[0], 1.33)) * v[0] * v[0] + v[0] * v[1] + ((-4) + 4 * v[1] * v[1])*v[1] * v[1];
- }
- vector<int> select_vc(int n)
- {
- vector<int> v;
- int i;
- for (i = 0; i < n; ++i)
- {
- v.push_back(rand() % 2);
- }
- return v;
- }
- double conversie(vector<int> x, double a, double b)
- {
- double nr = 0;
- for (int i = 0; i < n; ++i)
- if (x[i] == 1)
- nr = nr + pow(2, i);
- double rez = a + nr*(b - a) / pow(2, n);
- return rez;
- }
- double fitness(vector <int>v, double a, double b)
- {
- return DeJong(v, a, b);
- }
- void mutatie(vector<double> v, int poz)
- {
- if (v[poz] == 0)
- v[poz] = 1;
- else
- v[poz] = 0;
- }
- void HC_first(double a, double b)
- {
- int t = 0;
- N = (b - a)*pow(10, nr_biti);
- n = (int)log(ceil(N));
- do
- {
- do
- {
- bool local = false;
- double best, vc1d;
- vector <double> vc, vc1;
- vc = select_vc(n);
- best = conversie(vc, a, b);
- vc1 = vc;
- for (i = 0; i < n ; i++)
- {
- mutatie(vc1, i); // neg bitul de la poz i
- vc1d = conversie(vc1, a, b);
- }
- } while (!local);
- t++
- } while (t < TMAX);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement