MATLAB Answers

How to write a Monte Carlo Simulation Code?

844 views (last 30 days)
Reza
Reza on 31 Mar 2015
Commented: Image Analyst on 21 Jan 2020
I want to start writing a code in Matlab in order to determine structural reliability of a bridge. The code is based on Monte Carlo Simulation. It would be very helpful if anyone helps me how to start with a * pattern of Monte Carlo Simulation * .

  1 Comment

hos shoj
hos shoj on 21 Apr 2016
salam peyda kardi be manam bede mrc

Sign in to comment.

Answers (4)

Adam Wyatt
Adam Wyatt on 31 Mar 2015
Your question is ill-defined.
Monte-Carlo simulations simply mean perform your simulation with varying inputs such that the inputs are chosen randomly. Better MC simulations use prior information / simulations to pick the next iteration.
Here is an example - given an input, the method passes if it is greater than 0.5, fails if it is less than or equal to 0.5.
function out = Test(in)
out = (in>0.5);
end
And to test it:
MCSim = arrayfun(@(inputs) Test(inputs), rand(100,1));

  2 Comments

Reza
Reza on 1 Apr 2015
Hi Adam. Thanks alot for your answer.I know the principles of MCS. What I am seeking is the right procedure of a scientific MCS code,i.e. how to write the code. I have some stochastic variables with different distributions including load, material,geometry,crack length,fracture parameters ...Actually the probability of failure must be calculated as an output. I do not know how to implement/write a MCS code to get the relevant results.
Adam Wyatt
Adam Wyatt on 1 Apr 2015
Your question is far too vague - you're basically saying solve my problem, but haven't actually said what the problem is.
Lets assume that you have a set of variables (load, material etc.) and you want to test the performance of your system for different variable values. The first question that arises is what distribution are your variables, are the uniformly distributed or normally distributed say. Lets assume you have 2 variables, var1 is uniformly randomly distributed and var2 is normally distributed, and you want to perform N tests.
Lets say you want to run N tests, set up N vectors for your variable values:
N = 1000;
var1 = var1_min + (var1_max-var1_min)*rand(N, 1);
var2 = var2_mean + var2_std*randn(N, 1);
result = arrayfun(MyTestFunction, var1, var2);
% Where
function ScalarResult = MyTestFunction(Scalar_Var1, Scalar_Var2)
...
end
Hope this helps, but if you're not more specific then we cannot help you much more than that.
You could for example use the parallel toolbox with parfor to help speed up your testing:
N = 1000;
var1 = ...
var2 = ...
result = zeros(N, 1);
parfor n=1:N
result(n) = MyTestFun(var1(n), var2(n));
end

Sign in to comment.


Image Analyst
Image Analyst on 31 Mar 2015
For an example, attached is a Monte Carlo simulation of the Monty Hall problem that I wrote.

  2 Comments

NURSAFIKA BAHIRA JULI
NURSAFIKA BAHIRA JULI on 21 Jan 2020
Hi, can i ask can Monte carlo simulation run for langmuir isotherm. I just don't know how to begin the simulation
Image Analyst
Image Analyst on 21 Jan 2020
You just did.
But I have no idea what langmuir isotherm is, so I can't help you with that.

Sign in to comment.


John D'Errico
John D'Errico on 31 Mar 2015
Most simply:
rand(1000,1)
What is the problem?

  6 Comments

Show 3 older comments
Image Analyst
Image Analyst on 9 Nov 2017
You most likely will have to write it.
Edmar Adem
Edmar Adem on 17 Jan 2018
Hi Ma'am/Sir, A Monte Carlo sampling technique combined with a minimum cost assessment model is used to conduct the simulation of generation and risk costs. Do you have a code this problem? Please send me a code e93adem@gmail.com thank you and God bless..
John D'Errico
John D'Errico on 17 Jan 2018
Sorry, but Answers is not a forum where we provide code written to your specs, and then sent to your e-mail address. In fact, I don't know of any sites that provide a free service like that.

Sign in to comment.


leichong lei
leichong lei on 10 Apr 2019
I want to use Monte Carlo method to write a program to simulate my system, perform systematic sequence sampling, and perform reliability evaluation.please help,send message to my e-mail (499500798@qq.com),thanks

  0 Comments

Sign in to comment.

Sign in to answer this question.


Translated by