实验5: 随机模拟实验

实验5: 随机模拟实验

5.1 基础训练

  1. 假设学生到达图书馆的间隔时间服从在区间[0, 5](单位:秒)上的均匀分布,请编程输出100个学生的到达时刻。

代码:

x = 5*rand(1,99);                % 生成间隔时间向量
sum = 0;                         %求和数赋初值
y = [];                          %到达时刻向量
for i = 1:length(x)
    sum = sum+x(i);
    y(i+1)=sum;
end
y(1) = 0;                       %设第一个同学到底时刻为0
y                               %输出到达时刻向量

运行结果:假设第一名学生到达的时刻为0,则100名学生的到达时刻如下
实验5: 随机模拟实验_第1张图片

  1. 假设在某30分钟内学生到达图书馆的间隔时间服从在区间均值为5秒的指数分布(exprnd(5)),请编程产生30分钟内所有到达图书馆的学生的到达时刻,并输出到达人数;并绘制学生的到达时刻散点图(横轴为人的序号,纵轴为到达时刻;学生从序号1开始编号).

代码:

x = exprnd(5,1,500);                          %生成到达时间间隔向量
sum = 0;
y = [0];
i = 1;
while 1
     sum = sum + x(i);
    if sum>1800
        break
    else
     y = [y,sum];
     i = i+1;
    end
end
length(y)                                   %输出到达人数
y                                           %输出到达时刻
x = [1:length(y)]

% 使用 scatter 函数画散点图
scatter(x, y, '*');

% 添加标题和轴标签
title('学生到达时刻散点图');
xlabel('学生序号');
ylabel('学生到达时刻');

散点图:
实验5: 随机模拟实验_第2张图片

运行结果:假设第一名学生到达的时刻为0,则30分钟内到达学生人数及其到达时刻如下

实验5: 随机模拟实验_第3张图片

5.2 综合训练

一、实验任务

请用蒙特卡罗法求解下列优化模型。

m i n f ( x ) = 2 ( x 1 − 1 ) 2 + 3 ( x 2 − 4 ) 2 + x 1 x 2 + ( 2 x 3 − 5 ) 2 min\quad f(x)=2(x_1-1)^2+3(x_2-4)^2+x_1x_2+(2x_3-5)^2 minf(x)=2(x11)2+3(x24)2+x1x2+(2x35)2

s . t . { 3 x 1 + 2 x 2 + 6 x 3 ≤ 20 4 x 1 + 5 x 2 + 2 x 3 ≤ 21 0 ≤ x 1 ≤ 15 0 ≤ x 2 ≤ 9 0 ≤ x 3 ≤ 25 且 x 3 为整数 s.t.\begin{cases}3x_1+2x_2+6x_3\le20\\4x_1+5x_2+2x_3\le21\\0\le x_1\le15\\ 0\le x_2\le9\\0\le x_3\le 25 且x_3为整数\end{cases} s.t. 3x1+2x2+6x3204x1+5x2+2x3210x1150x290x325x3为整数

二、实验目的

熟悉蒙特卡罗法求解优化问题的原理。

三、实验过程

分析:在可行域内随机投点,比较各处函数值的大小找到最小值

代码:

function opt
    n = 1e8;%随机点的个数
    fobj = inf;
    for i = 1:n
        x(1) = 15*rand;
        x(2) = 9*rand;
        x(3) = fix(26*rand);
        if (fun(x)<fobj)&(cons(x)<=0) %找最小值
            fx = x;
            fobj = fun(x);
        end
    end
    fx      %变量x1,x2和x3取值
    fobj    %对应函数值
function y = fun(x)
    y = 2*(x(1)-1).^2+3*(x(2)-4).^2+x(1)*x(2)+(2*x(3)-5).^2;
end
function c = cons(x)
    c = zeros(1,2);
    c(1) = 3*x(1)+2*x(2)+6*x(3)-20;
    c(2) = 4*x(1)+5*x(2)+2*x(3)-21;
end

运行结果:
实验5: 随机模拟实验_第4张图片

四、实验自评与改进方向

(一)实验自评:在本次实验中,基本完成了实验任务,较好地实现了实验目标。

(二)改进方向:应进一步熟悉蒙特卡罗方法在概率中的应用,加强各函数的熟练应用能力。

五、实验体会,收获及建议

通过本次实验,我了解了随机数学实验的相关函数命令,熟悉了蒙特卡洛的思想,并能用这个思想去解决一些最优化问题、随机分布问题等,对MATAB编程技巧更加熟悉,收获良多。

在这次实验中,我也发现自己对已经学习的知识有些许遗忘,比如while循环的使用注意事项,提醒我应当经常复习巩固所学知识,达到更好地学习效果。

你可能感兴趣的:(matlab,数学建模)