Untitled
unknown
c_cpp
3 years ago
1.0 kB
7
Indexable
#include <conio.h>
#include <stdio.h>
#include "hill_climb.h"
void hillclimb()
{
int n = 10;
int stuff = 1;
pcg32_random_t rng;
pcg32_srandom_r(&rng, time(NULL) ^ (intptr_t)&printf, (intptr_t)&rng);
double x;
double s = 0;
double r;
double w;
double best = s;
double neg = 1;
double neg2 = 1;
double sugar = 1;
while (stuff<50000)
{
x = ((double)pcg32_boundedrand_r(&rng, 1000000000)) / (500000000 / sugar);
if (stuff % 2 == 0) x = -x;
r = s + x;
for (int i = 0; i < n; i++)
{
x = ((double)pcg32_boundedrand_r(&rng, 1000000000)) / (500000000 / sugar);
if (i % 2 == 0) x = -x;
w = s + x;
if (fvg1(w) < 0) neg = -1;
else neg = 1;
if (fvg1(r) < 0) neg2 = -1;
else neg2 = 1;
if (neg*fvg1(w) < neg2*fvg1(r)) r = w;
}
s = r;
if (fvg1(s) < 0) neg = -1;
else neg = 1;
if (fvg1(best) < 0) neg2 = -1;
else neg2 = 1;
if (neg*fvg1(s)< neg2*fvg1(best)) best = s;
stuff++;
}
printf("%f", best);
}
Editor is loading...