Contoh Program Source Code /

Metode Monte Carlo Matlab Java C++

Posted on1/24/2016
Join with us

Metode Monte Carlo Matlab Java C++

Metode Monte Carlo merupakan algoritma komputasi unt mensimulasikan berbagai perilaku sistem fisika dan matematika. pemakaian klasik metode ini merupakan unt mengevaluasi integral definit, terutama integral multidimensi dengan syarat dan batasan yang rumit.

Penggunaan nama Monte Carlo, yang dipopulerkan oleh para pioner bidang tersebut (termasuk Stanislaw Marcin Ulam, Enrico Fermi, John von Neumann dan Nicholas Metropolis), merupakan nama kasino terkemuka di Monako. Penggunaan keacakan dan sifat pengulangan proses mirip dengan aktivitas yang dilakukan pada sebuah kasino.

Dalam autobiografinya Adventures of a Mathematician, Stanislaw Marcin Ulam menyatakan bahwa metode tersebut dinamakan untuk menghormati pamannya yang seorang penjudi, atas saran Metropolis. Penggunaan metode Monte Carlo memerlukan sejumlah besar bilangan acak, dan hal tersebut semakin mudah dengan perkembangan pembangkit bilangan pseudoacak, yang jauh lebih cepat dan praktis dibandingkan dengan metode sebelumnya yang menggunakan tabel bilangan acak untuk sampling statistik.

Langkah Proses Metode Monte Carlo

Metode Monte-Carlo umumnya mengikuti langkah-langkah berikut:

  1. Tentukan sifat statistik dari input yang mungkin
  2. Menghasilkan banyak set input mungkin yang berikut sifat di atas
  3. Lakukan perhitungan deterministik dengan set tersebut
  4. Menganalisis statistik hasil

Kesalahan pada hasil biasanya menurun seiring 1 / √ N

Integrasi Numerik

Sebagian besar masalah dapat diselesaikan dengan integrasi

Metode Monte Carlo Matlab Java C++

Integrasi Monte-Carlo adalah aplikasi yang paling umum dari metode Monte-Carlo

Ide dasar: Jangan menggunakan grid tetap, tetapi poin acak, karena:

  1. Curse of dimensionality : grid tetap di D dimensi membutuhkan poin N^D
  2. Ukuran langkah harus dipilih pertama

Estimasi Kesalahan


Simulasi Monte-Carlo dapat digunakan untuk:

- menentukan sifat-sifat distribusi (mean, variance,...)
- menentukan interval keyakinan, yaitu


- menentukan komposisi distribusi, misal diberikan :


Perhatikan bahwa semua itu adalah integral!

Masalah Optimasi


Solusi numerik untuk masalah optimasi menanggung risiko terjebak dalam minimum lokal.


Pendekatan Monte-Carlo dapat mengatasi masalah dengan mengijinkan keluar acak dari minimum lokal dan menemukan yang lain, mudah-mudahan lebih baik minimal

Estimasi Probabilitas

Probabilitas Kepala vs Ekor

Apa yang probabilitas untuk memperoleh baik 3, 6 atau 9 kepala jika satu menarik koin sepuluh kali?

Probabilitas Binomial :

P = B(3; 10; 0:5)+B(6; 10; 0:5)+B(9; 10; 0:5)  ≅ 0:33

Simulasi Monte Carlo :

1. Mengingat variabel y  U (0; 1) , mendefinisikan "kepala" jika y <0: 5, dan "ekor" jika tidak

2.  Menggambar 10 random variabel Xi  ∼ U (0, 1); i = 1 , ... , 10

3. Menghitung jumlah kepala H, dan kenaikan T jika H = 3; 6; atau 9

4. Ulangi 2.-3. N kali, dengan N cukup besar

5. Probabilitas adalah sekitar T = N

Catatan bahwa ini merupakan integrasi pada distribusi probabilitas, bahkan jika itu adalah diskrit!

Estimasi Error

Apakah ketidakpastian pada mean?

Dengan asumsi N variabel acak Xi ∼ N (0 ; σ); i = 1 , ... , N,

penaksir mean adalah:

dan ketidakpastian adalah:

Dengan Menggunakan Metode Monte Carlo 

1. Menggambar set N variabel acak 

yi ∼  N (0 ; σ); i = 1 , ... , N

2. Menghitung mean sampel

3. Redo 1.-2. M kali

4. Ketidakpastian pada mean σ x adalah akar berarti persegi yj ,  j = 1, ... , M, yaitu


dengan :


Algoritma Monte Carlo

Prinsip dasar

di N dimensi membutuhkan   langkah

Mengingat V volume dan fungsi f (dengan <w> menjadi rata-rata w lebih V):


Berikut ini adalah teorema dasar integrasi Monte-Carlo :

1. Menggambar N poin secara acak dengan V

2.  Hitung   ( dan < f ^2 > )

3.  mengalikan  <f> dengan V untuk mendapatkan integral

Pembahan selanjutnya akan di jelaskan pada artikel berikutnya :)

Contoh Program

Matlab : Metode Monte Carlo

Berikut ini adalah contoh implementasi metode monte carlo dengan menggunakan Matlab

Source Code Matlab

function mh(iters, burnin, psig, pausevery)

parallel = 1;				% number of parallel
                                        % trajectories to display
                                        % at once

[xs, ys] = meshgrid(-1:.05:1);

% plot function to integrate
figure(1);
zs = foo(xs,ys);
surfl(xs,ys,zs);
shading interp;
xlabel X
ylabel Y
zlabel f(X,Y)
set(gca,'CameraPosition', [13.017 -4.10426 29.1589])
% print -depsc foo.eps

% get true integral x^2*foo(x,y) by fine discretization
zs = zs./sum(zs(:));
fprintf('True E(x^2) %f\n', sum(sum(zs.*xs.*xs)));

% contour plot of function to integrate, on top of which we will
% plot progress of MH
figure(2);
contourf(xs,ys,foo(xs,ys));

% initial point for MH
x = zeros(parallel,1);
y = x;
v = foo(x,y);

% record the samples and acceptance decisions
samples = zeros(parallel, iters);
accept = zeros(parallel, iters);

% the MH sampler
for i = 1:iters

  % sample from proposal distribution (and possibly plot)
  nx = x + randn(size(x))*psig;
  ny = y + randn(size(y))*psig;
  nv = foo(nx, ny);
  if (pausevery > 0 && mod(i, pausevery)==0)
    h = line(nx, ny, 'Marker', 'o', 'MarkerSize', 15, 'LineWidth', 2, ...
	     'Color', [1 .5 .5], 'LineStyle', 'none');
  end

  % compute acceptance probability and decide which proposals to
  % accept; note Q is symmetric, so we don't need its ratio
  accprob = nv ./ v;
  mask = rand(size(x))>accprob;
  nx(mask) = x(mask);
  ny(mask) = y(mask);

  % add this step to the plot
  if (pausevery > 0)
    line([x nx]', [y ny]');
  else
    line(nx, ny, 'Marker', '.');
  end
  
  % do the update and remember the sample
  x = nx;
  y = ny;
  samples(:,i) = x.^2;
  accept(:,i) = ~mask;

  % pause for a plot if desired
  if (pausevery > 0 && mod(i, pausevery)==0)
    fprintf('acceptance rate %f\n', mean(mean(accept(:,1:i))));
    if (i > burnin)
      fprintf('current estimate %f\n', mean(mean(samples(:,burnin:i))));
    end
    pause
    delete(h)
  end
end

fprintf('final acceptance rate %f\n', mean(mean(accept)));
fprintf('final estimate %f\n', mean(mean(samples)));

% print -depsc mh-path.eps

return;


function zs = foo(xs, ys)

zs = exp(sin(2*pi*(xs+ys))-xs-2*(xs-.3).^2-2*ys.^2)+2*exp(-(xs-ys).^2);
zs(xs<-1) = 0;
zs(xs>1) = 0;
zs(ys<-1) = 0;
zs(ys>1) = 0;

return;

Java : Metode Monte Carlo

Berikut ini adalah contoh program sederhana implementasi metode monte carlo dengan menggunakan bahasa pemrograman Java

Source Code Java

import java.util.Scanner;

public class MonteCarloSimulation {

  public static void main(String[] args) {

    long noOfTrials = 1000;
    int noOfOrders = 1; 
    Scanner input = new Scanner(System.in);
    System.out.print("\nEnter our how many iterations ");
    System.out.print(" from 1 to 10^8 : ");
    noOfOrders = input.nextInt();
    
      for (int count = 1; count <= noOfOrders; count++ ){
      long startTime = System.currentTimeMillis();
      int numberOfHits = 0;
      double pi = 0;

        for (int i = 0; i < noOfTrials; i++){
          double x = (Math.random() * 2.0 - 1);
          double y = (Math.random() * 2.0 - 1);
          if (x * x + y * y <= 1)
            numberOfHits++;
        }

      pi = 4.0 * numberOfHits / noOfTrials;
      long endTime = System.currentTimeMillis();
      long testTime = endTime - startTime;
      System.out.print(count + " :PI is " + pi + " with " + noOfTrials + " random points");
      System.out.println(". Time to calculate: "+ testTime / 1000 +  " seconds\n");
      noOfTrials = noOfTrials * 10;
    }
  }
}


C++  : Metode Monte Carlo

Berikut ini adalah contoh program sederhana implementasi metode monte carlo dengan menggunakan bahasa pemrograman C++

Source Code C++

#include<iostream>
#include<math.h>
#include<stdlib.h>
#include<time.h>
 
using namespace std;
int main(){
    int jmax=1000; // maximum value of HIT number. (Length of output file)
    int imax=1000; // maximum value of random numbers for producing HITs.
    double x,y;    // Coordinates
    int hit;       // storage variable of number of HITs
    srand(time(0));
    for (int j=0;j<jmax;j++){
        hit=0;
        x=0; y=0;
        for(int i=0;i<imax;i++){
            x=double(rand())/double(RAND_MAX);
            y=double(rand())/double(RAND_MAX);
        if(y<=sqrt(1-pow(x,2))) hit+=1; }          //Choosing HITs according to analytic formula of circle
    cout<<""<<4*double(hit)/double(imax)<<endl; }  // Print out Pi number
}


C# : Metode Monte Carlo

Berikut ini adalah contoh program sederhana implementasi metode monte carlo dengan menggunakan bahasa pemrograman C#

Source Code C#

using System;
 
class Program {
    static double MonteCarloPi(int n) {
        int inside = 0;
        Random r = new Random();
 
        for (int i = 0; i < n; i++) {
            if (Math.Pow(r.NextDouble(), 2)+ Math.Pow(r.NextDouble(), 2) <= 1) {
                inside++;
            }
        }
 
        return 4.0 * inside / n;
    }
 
    static void Main(string[] args) {
        int value = 1000;
        for (int n = 0; n < 5; n++) {
            value *= 10;
            Console.WriteLine("{0}:{1}", value.ToString("#,###").PadLeft(11, ' '), MonteCarloPi(value));
        }
    }
}


Swift : Metode Monte Carlo

Berikut ini adalah contoh program sederhana implementasi metode monte carlo dengan menggunakan bahasa pemrograman Swift

Source Code Swift

import Foundation
 
func mcpi(sampleSize size:Int) -> Double {
    var x = 0 as Double
    var y = 0 as Double
    var m = 0 as Double
 
    for i in 0..<size {
        x = Double(arc4random()) / Double(UINT32_MAX)
        y = Double(arc4random()) / Double(UINT32_MAX)
 
        if ((x * x) + (y * y) < 1) {
            m += 1
        }
    }
 
    return (4.0 * m) / Double(size)
}
 
println(mcpi(sampleSize: 100))
println(mcpi(sampleSize: 1000))
println(mcpi(sampleSize: 10000))
println(mcpi(sampleSize: 100000))
println(mcpi(sampleSize: 1000000))
println(mcpi(sampleSize: 10000000))
println(mcpi(sampleSize: 100000000))




Metode Monte Carlo Matlab Java C++

Metode Monte Carlo merupakan algoritma komputasi unt mensimulasikan berbagai perilaku sistem fisika dan matematika. pemakaian klasik metode ini merupakan unt mengevaluasi integral definit, terutama integral multidimensi dengan syarat dan batasan yang rumit.

Penggunaan nama Monte Carlo, yang dipopulerkan oleh para pioner bidang tersebut (termasuk Stanislaw Marcin Ulam, Enrico Fermi, John von Neumann dan Nicholas Metropolis), merupakan nama kasino terkemuka di Monako. Penggunaan keacakan dan sifat pengulangan proses mirip dengan aktivitas yang dilakukan pada sebuah kasino.

Dalam autobiografinya Adventures of a Mathematician, Stanislaw Marcin Ulam menyatakan bahwa metode tersebut dinamakan untuk menghormati pamannya yang seorang penjudi, atas saran Metropolis. Penggunaan metode Monte Carlo memerlukan sejumlah besar bilangan acak, dan hal tersebut semakin mudah dengan perkembangan pembangkit bilangan pseudoacak, yang jauh lebih cepat dan praktis dibandingkan dengan metode sebelumnya yang menggunakan tabel bilangan acak untuk sampling statistik.

Langkah Proses Metode Monte Carlo

Metode Monte-Carlo umumnya mengikuti langkah-langkah berikut:

  1. Tentukan sifat statistik dari input yang mungkin
  2. Menghasilkan banyak set input mungkin yang berikut sifat di atas
  3. Lakukan perhitungan deterministik dengan set tersebut
  4. Menganalisis statistik hasil

Kesalahan pada hasil biasanya menurun seiring 1 / √ N

Integrasi Numerik

Sebagian besar masalah dapat diselesaikan dengan integrasi

Metode Monte Carlo Matlab Java C++

Integrasi Monte-Carlo adalah aplikasi yang paling umum dari metode Monte-Carlo

Ide dasar: Jangan menggunakan grid tetap, tetapi poin acak, karena:

  1. Curse of dimensionality : grid tetap di D dimensi membutuhkan poin N^D
  2. Ukuran langkah harus dipilih pertama

Estimasi Kesalahan


Simulasi Monte-Carlo dapat digunakan untuk:

- menentukan sifat-sifat distribusi (mean, variance,...)
- menentukan interval keyakinan, yaitu


- menentukan komposisi distribusi, misal diberikan :


Perhatikan bahwa semua itu adalah integral!

Masalah Optimasi


Solusi numerik untuk masalah optimasi menanggung risiko terjebak dalam minimum lokal.


Pendekatan Monte-Carlo dapat mengatasi masalah dengan mengijinkan keluar acak dari minimum lokal dan menemukan yang lain, mudah-mudahan lebih baik minimal

Estimasi Probabilitas

Probabilitas Kepala vs Ekor

Apa yang probabilitas untuk memperoleh baik 3, 6 atau 9 kepala jika satu menarik koin sepuluh kali?

Probabilitas Binomial :

P = B(3; 10; 0:5)+B(6; 10; 0:5)+B(9; 10; 0:5)  ≅ 0:33

Simulasi Monte Carlo :

1. Mengingat variabel y  U (0; 1) , mendefinisikan "kepala" jika y <0: 5, dan "ekor" jika tidak

2.  Menggambar 10 random variabel Xi  ∼ U (0, 1); i = 1 , ... , 10

3. Menghitung jumlah kepala H, dan kenaikan T jika H = 3; 6; atau 9

4. Ulangi 2.-3. N kali, dengan N cukup besar

5. Probabilitas adalah sekitar T = N

Catatan bahwa ini merupakan integrasi pada distribusi probabilitas, bahkan jika itu adalah diskrit!

Estimasi Error

Apakah ketidakpastian pada mean?

Dengan asumsi N variabel acak Xi ∼ N (0 ; σ); i = 1 , ... , N,

penaksir mean adalah:

dan ketidakpastian adalah:

Dengan Menggunakan Metode Monte Carlo 

1. Menggambar set N variabel acak 

yi ∼  N (0 ; σ); i = 1 , ... , N

2. Menghitung mean sampel

3. Redo 1.-2. M kali

4. Ketidakpastian pada mean σ x adalah akar berarti persegi yj ,  j = 1, ... , M, yaitu


dengan :


Algoritma Monte Carlo

Prinsip dasar

di N dimensi membutuhkan   langkah

Mengingat V volume dan fungsi f (dengan <w> menjadi rata-rata w lebih V):


Berikut ini adalah teorema dasar integrasi Monte-Carlo :

1. Menggambar N poin secara acak dengan V

2.  Hitung   ( dan < f ^2 > )

3.  mengalikan  <f> dengan V untuk mendapatkan integral

Pembahan selanjutnya akan di jelaskan pada artikel berikutnya :)

Contoh Program

Matlab : Metode Monte Carlo

Berikut ini adalah contoh implementasi metode monte carlo dengan menggunakan Matlab

Source Code Matlab

function mh(iters, burnin, psig, pausevery)

parallel = 1;				% number of parallel
                                        % trajectories to display
                                        % at once

[xs, ys] = meshgrid(-1:.05:1);

% plot function to integrate
figure(1);
zs = foo(xs,ys);
surfl(xs,ys,zs);
shading interp;
xlabel X
ylabel Y
zlabel f(X,Y)
set(gca,'CameraPosition', [13.017 -4.10426 29.1589])
% print -depsc foo.eps

% get true integral x^2*foo(x,y) by fine discretization
zs = zs./sum(zs(:));
fprintf('True E(x^2) %f\n', sum(sum(zs.*xs.*xs)));

% contour plot of function to integrate, on top of which we will
% plot progress of MH
figure(2);
contourf(xs,ys,foo(xs,ys));

% initial point for MH
x = zeros(parallel,1);
y = x;
v = foo(x,y);

% record the samples and acceptance decisions
samples = zeros(parallel, iters);
accept = zeros(parallel, iters);

% the MH sampler
for i = 1:iters

  % sample from proposal distribution (and possibly plot)
  nx = x + randn(size(x))*psig;
  ny = y + randn(size(y))*psig;
  nv = foo(nx, ny);
  if (pausevery > 0 && mod(i, pausevery)==0)
    h = line(nx, ny, 'Marker', 'o', 'MarkerSize', 15, 'LineWidth', 2, ...
	     'Color', [1 .5 .5], 'LineStyle', 'none');
  end

  % compute acceptance probability and decide which proposals to
  % accept; note Q is symmetric, so we don't need its ratio
  accprob = nv ./ v;
  mask = rand(size(x))>accprob;
  nx(mask) = x(mask);
  ny(mask) = y(mask);

  % add this step to the plot
  if (pausevery > 0)
    line([x nx]', [y ny]');
  else
    line(nx, ny, 'Marker', '.');
  end
  
  % do the update and remember the sample
  x = nx;
  y = ny;
  samples(:,i) = x.^2;
  accept(:,i) = ~mask;

  % pause for a plot if desired
  if (pausevery > 0 && mod(i, pausevery)==0)
    fprintf('acceptance rate %f\n', mean(mean(accept(:,1:i))));
    if (i > burnin)
      fprintf('current estimate %f\n', mean(mean(samples(:,burnin:i))));
    end
    pause
    delete(h)
  end
end

fprintf('final acceptance rate %f\n', mean(mean(accept)));
fprintf('final estimate %f\n', mean(mean(samples)));

% print -depsc mh-path.eps

return;


function zs = foo(xs, ys)

zs = exp(sin(2*pi*(xs+ys))-xs-2*(xs-.3).^2-2*ys.^2)+2*exp(-(xs-ys).^2);
zs(xs<-1) = 0;
zs(xs>1) = 0;
zs(ys<-1) = 0;
zs(ys>1) = 0;

return;

Java : Metode Monte Carlo

Berikut ini adalah contoh program sederhana implementasi metode monte carlo dengan menggunakan bahasa pemrograman Java

Source Code Java

import java.util.Scanner;

public class MonteCarloSimulation {

  public static void main(String[] args) {

    long noOfTrials = 1000;
    int noOfOrders = 1; 
    Scanner input = new Scanner(System.in);
    System.out.print("\nEnter our how many iterations ");
    System.out.print(" from 1 to 10^8 : ");
    noOfOrders = input.nextInt();
    
      for (int count = 1; count <= noOfOrders; count++ ){
      long startTime = System.currentTimeMillis();
      int numberOfHits = 0;
      double pi = 0;

        for (int i = 0; i < noOfTrials; i++){
          double x = (Math.random() * 2.0 - 1);
          double y = (Math.random() * 2.0 - 1);
          if (x * x + y * y <= 1)
            numberOfHits++;
        }

      pi = 4.0 * numberOfHits / noOfTrials;
      long endTime = System.currentTimeMillis();
      long testTime = endTime - startTime;
      System.out.print(count + " :PI is " + pi + " with " + noOfTrials + " random points");
      System.out.println(". Time to calculate: "+ testTime / 1000 +  " seconds\n");
      noOfTrials = noOfTrials * 10;
    }
  }
}


C++  : Metode Monte Carlo

Berikut ini adalah contoh program sederhana implementasi metode monte carlo dengan menggunakan bahasa pemrograman C++

Source Code C++

#include<iostream>
#include<math.h>
#include<stdlib.h>
#include<time.h>
 
using namespace std;
int main(){
    int jmax=1000; // maximum value of HIT number. (Length of output file)
    int imax=1000; // maximum value of random numbers for producing HITs.
    double x,y;    // Coordinates
    int hit;       // storage variable of number of HITs
    srand(time(0));
    for (int j=0;j<jmax;j++){
        hit=0;
        x=0; y=0;
        for(int i=0;i<imax;i++){
            x=double(rand())/double(RAND_MAX);
            y=double(rand())/double(RAND_MAX);
        if(y<=sqrt(1-pow(x,2))) hit+=1; }          //Choosing HITs according to analytic formula of circle
    cout<<""<<4*double(hit)/double(imax)<<endl; }  // Print out Pi number
}


C# : Metode Monte Carlo

Berikut ini adalah contoh program sederhana implementasi metode monte carlo dengan menggunakan bahasa pemrograman C#

Source Code C#

using System;
 
class Program {
    static double MonteCarloPi(int n) {
        int inside = 0;
        Random r = new Random();
 
        for (int i = 0; i < n; i++) {
            if (Math.Pow(r.NextDouble(), 2)+ Math.Pow(r.NextDouble(), 2) <= 1) {
                inside++;
            }
        }
 
        return 4.0 * inside / n;
    }
 
    static void Main(string[] args) {
        int value = 1000;
        for (int n = 0; n < 5; n++) {
            value *= 10;
            Console.WriteLine("{0}:{1}", value.ToString("#,###").PadLeft(11, ' '), MonteCarloPi(value));
        }
    }
}


Swift : Metode Monte Carlo

Berikut ini adalah contoh program sederhana implementasi metode monte carlo dengan menggunakan bahasa pemrograman Swift

Source Code Swift

import Foundation
 
func mcpi(sampleSize size:Int) -> Double {
    var x = 0 as Double
    var y = 0 as Double
    var m = 0 as Double
 
    for i in 0..<size {
        x = Double(arc4random()) / Double(UINT32_MAX)
        y = Double(arc4random()) / Double(UINT32_MAX)
 
        if ((x * x) + (y * y) < 1) {
            m += 1
        }
    }
 
    return (4.0 * m) / Double(size)
}
 
println(mcpi(sampleSize: 100))
println(mcpi(sampleSize: 1000))
println(mcpi(sampleSize: 10000))
println(mcpi(sampleSize: 100000))
println(mcpi(sampleSize: 1000000))
println(mcpi(sampleSize: 10000000))
println(mcpi(sampleSize: 100000000))



Metode Monte Carlo Matlab Java C++| Contoh Program

Source CodeMetode Monte Carlo Matlab Java C++

Source Code Tutorial belajar Gratis download Flow Chart PDF ZIP RAR DOC Java C# Visual Basic VB PHP Matlab C++ Penerapan implementasi metode algoritma pemrograman

Tutorial belajarMetode Monte Carlo Matlab Java C++

VB PHP Matlab C++ Penerapan implementasi metode algoritma pemrograman Source Code Tutorial belajar Gratis download Flow Chart PDF ZIP RAR DOC Java C# Visual Basic

Gratis downloadMetode Monte Carlo Matlab Java C++

Chart PDF ZIP RAR DOC Java C# Visual Basic VB PHP Matlab C++ Penerapan implementasi metode algoritma pemrograman Source Code Tutorial belajar Gratis download Flow

Penerapan implementasiMetode Monte Carlo Matlab Java C++Metode Monte Carlo Matlab Java C++

Posted by: Metode-Algoritma.comMetode Monte Carlo Matlab Java C++| Contoh ProgramUpdated at :







Konsultasi Gratis

Jika ada yang ingin di tanyakan, Kamu bisa melakukan konsultasi gratis kepada team metode-algoritma.com melalui form di bawah. Mohon isi email dengan benar, karena hasil konsultasi akan di kirimkan ke email kamu.


Metode Monte Carlo Matlab Java C++| Contoh Program

Label:,,,,

Copyright © 2013 metode-algoritma.com Allright Reserved|about|sitemap|

Konsultasi gratis