多目标随机行走说明书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

随机行走也叫无规则行走,是物理上的布朗运动。该软件通过使用Win32的窗口程序模式,实现随机行走路径图形生成程序的设计与开发;给出了随机数发生器的参数控制接口,允许用户在控制范围内自由选择参数;支持四方向和八方向的绝对方向模式和相对方向模式;提供无轨迹模式,拖尾型轨迹模式,单点轨迹模式生成模式。该软件设计通过使用MASMPlusWin32的窗口程序模式来实现。

关键词:随机数发生器 ; 二维随机行走;越界检查

摘要 (1)

1.问题描述 (2)

2.系统设计 (3)

2.1.功能模块 (3)

2.2工作流程图 (4)

3.系统实现 (5)

4.系统测试 (8)

4.1测试的目的 (8)

4.2 测试方案 (8)

4.3测试结果 (8)

4.3.1.拖尾型轨迹四方向绝对测试: (8)

4.3.2.拖尾型轨迹四方向相对测试: (9)

4.3.3.拖尾型轨迹八方向绝对测试: (9)

4.3.4.拖尾型轨迹八方向向对测试: (10)

4.3.5.无轨迹绝对四方向测试: (10)

4.3.6.单点轨迹绝对四方向测试: (11)

4.4 可行性分析 (11)

总结 (12)

参考文献 (13)

源代码 (14)

1.问题描述

随机行走也叫无规则行走,是物理上的布朗运动。从最初的无规则分子热运动、微观粒子的运动形成模型的研究,已广泛应用到了物理学、化学、结晶学、天文学、生物学、气象学、流体力学、经济学、交通等许多领域,并且发挥着重要作用。目前已有许多随机行走模型,如简单随机行走、对称随机行走、带有吸收壁的随机行走、格点上的随机行走等等。

无规则行走在任意尺度上都具有相似结构。而扩散以一个初始分布释放大量的无规则行走,观察他们的密度就会得到分布函数,这就是多目标随机行走问题研究的重点。

本设计开发一个基于多目标的二维随机行走计算机模拟系统,可以实现对随机模式与目标模式的控制,以便直观的查看多目标随机行走的分布规律及行为模式。并从数学的角度做适当的探讨及给出相应的算法。

2.系统设计

2.1.功能模块

该程序主要是通过对随机行走的各种可能性进行探讨,确定了随机行走的随机数控制、随机方向控制和生成过程的随机行走模式组合。支持四方向和八方向的绝对方向模式和相对方向模式;提供无轨迹模式,拖尾型轨迹模式,单点轨迹模式的生成模式,且种子生成方式分为集中和分散两种。

图2.1 功能图

可以通过运用重要指令对随机行走的随机数的设置,来选择相应的随机行走的方向和随机行走的模式及种子模式。其中随机行走的方向有四方向和八方向;随机行走的模式有绝对模式和相对模式,种子模式有分散模式和集中模式。

2.2工作流程图

图2.2 工作流程图

图2.2为随机行走程序的工作流程图,该程序通过使用Win 32窗口程序模式,给出随机数发生器的参数控制接口。通过对随机行走程序的随机参数的设置,选择相应的随机行走方向(如:四方形方向,八方形方向)和相应的随机行走模式(如:绝对模式和相对模式);之后形成随机行走的模式组合:四方形的绝对模式、八方形的绝对模式、四方形的相对模式、八方形的相对模式。

3.系统实现

;随机数发生器(产生0-3或0-7的随机数)

md proc

mov eax, ra

mov edx, tn

imul eax, edx ; eax = a*r

add eax, rb ; eax = a*r+b

mov ecx, rs

mov tn, eax ; rn = a*r+b

shr eax, cl ; eax = (a*r+b)/(2^s)

.if mf&2; 相对方向模式,从当前方向算起

add eax, edx

.endif

and eax, ma ; eax = ((a*r+b)/(2^s))%m为返回值

ret

rnd endp

; 绘制直线

drawLine proc uses ebx esi edi, _x:SWORD, _y:SWORD, _xx:SWORD, _yy:SWORD, _color:DWORD

LOCAL incx:SDWORD, incy:SDWORD

mov eax, bitmapTemp.bmHeight

movzx ecx, _y

sub eax, ecx

dec eax

imul eax, bitmapTemp.bmWidthBytes

movzx edx, _x

shl edx, 2

add eax, edx

mov edi, mTemp

add edi, eax

; 计算两个方向的画线距离

movzx eax, _xx

movzx edx, _x

sub eax, edx ; dx = xx - x

movzx edx, _y

movzx ecx, _yy

sub edx, ecx ; dy = yy - y

; 单步(n个像素距离内的)随机行走

Step proc uses ebx, hdcT:HDC, _n:DWORD LOCAL _k:DWORD

.if view == 3

mov ebx, offset ats

mov edx, offset att

mov ecx, seed

.while ecx

mov eax, [ebx]

mov [edx], eax

add ebx, 8

add edx, 4

dec ecx

.endw

.endif mov ecx, 0

.while ecx < _n

push ecx

mov ebx, offset ats

mov eax, seed

mov _k, eax

.while _k

相关文档
最新文档