Quick actions

cmd+k|ctrl+k

Navigation

Languages

Algoritma hill cilmbing

Snippet info

Language

Cpp

Visibility

public

Author

karelerlangga67

Created

2024-08-06T02:07:28.932739Z

Updated

2024-08-06T02:07:28.932739Z

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

double fKuadrat (double x, double a, double b, double c) {
    return a * x * + b * x + c;
}

pair<double, double> hClimbing (double a, double b, double c) {
    srand(static_cast<unsigned>(time(0))) ;
    double x = (double) rand () / RAND_MAX * 200 - 100;
    double deltax = 0.01;
    double nilai = fKuadrat (x - deltax, a, b, c) ;
    double nilai_kiri = fKuadrat (x - deltax, a, b, c) ;
    double nilai_kanan = fKuadrat (x + deltax, a, b, c) ;
    
    while (nilai_kiri > nilai || nilai_kanan > nilai) {
        if (nilai_kiri > nilai_kanan)  {
            x -= deltax;
            nilai = nilai_kiri;
        } else {
            x += deltax;
            nilai = nilai_kanan;
        }
        nilai_kiri = fKuadrat (x - deltax, a, b, c);
        nilai_kanan = fKuadrat (x + deltax, a, b, c);
    }
    return make_pair (x, nilai);
}

int main () {
    double a, b, c;
    cout << "masukkan nilai a : ";
    cin >> a;
    cout << "Masukkan nilai b : ";
    cin >> b;
    cout << "Masukkan nilai c : ";
    cin >> c;
    pair<double, double> result = hClimbing (a, b, c);
    double x_maks = result.first;
    double nilai_maks = result.second;
    cout << "Nilai x untuk hasil maksimum: " << x_maks << endl;
    cout << "Nilai maksimum f(x): "<< nilai_maks << endl;
    system ("PAUSE");
    return 0;
}
INFO