钻井布局问题的搜索算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第19卷第2期 怀化师专学报 V ol119N o12 2000年4月 J OURNA L OF HUAIHUA TEACHERS COLLEGE Apr.,2000
钻井布局问题的搜索算法3
蒲 飞, 龚玉龙, 吴齐峰, 宋燕霞
(怀化师专数学系,湖南怀化 418008)
摘 要:研究了钻井布局问题,采用将网格移动而井不动转化为井动而网不动的思想,对平移情形提出了两种搜索算法,一种是全程搜索,另一种是逐井优化搜索,并对后一种算法的有效性在理论上给出两个定理作保证1对旋转情形也采用全程搜索算法,并对所提算法进行了数值实验1通过比较,对平移情形,逐井优化搜索算法比全程搜索算法效率高得多,大大节省了搜索时间,且所得结果与全程搜索完全一致1最后,分别对所提算法的数值结果可视化1所给例子,求得只可平移时有4个旧井可利用,对可旋转又可平移的情况,求得有6个旧井可利用1关键词:平移;旋转;全程搜索;逐井优化搜索;参照井
中图分类号:O241;T B115 文献标识码:A 文章编号:1007-1814(2000)02-0024-06
1 问题的提出
勘探部门在某地区找矿,初步勘探时期已在若干位置钻井取得了地质资料,进入系统勘探时期后,要在一个区域内按纵横等距的网格点来布局井位,进行“撒网式”全面钻探1由于钻一口新井的费用很高,如果新设计的井位与原有井位重合(或相当接近),便可利用旧井的地质资料,不必打这口新井1因此,应该尽量利用旧井,少打新井,以节约钻探费用1
设平面上有n个点P i,其坐标为(a i,b i),i=1,2,…,n,表示已有的n个井位1新布置的井位是一个正方形网格N的所有结点1假定每个格子的边长(井位的纵横间距)都是1单位1整个网格是可以在平面上任意移动的1若一个已知点P i与某个网格结点X i的距离不超过给定误差ε(=0105单位),则认为P i处的旧井资料可以利用,不必在结点X处打新井1
为进行辅助决策,勘探部门提出如下问题:
(1)假定网格的横向和纵向是固定的(比如东西向和南北向),并假定距离误差是沿横向和纵向计算的,即要求可利用井P i与相应的结点X i的横坐标之差(取绝对值)及纵坐标之差(取绝对值)均不超过ε1在平面上平行移动网格N,使可利用的旧井数尽可能多1试提供数值计算方法,并对下面的数值例子(表1)用计算机进行计算1
(2)在问题(1)的基础上,考虑网格的横向和纵向不固定(可以旋转)的情形,给出算法及计算结果1
表1 数值例子(n=12个点的坐标)
i123456789101112
a i015011413100313731404172417251437157813881899150
b i210031501150315151502100612441102101415031410180
2 模型假设及符号设置
211 模型假设
收稿日期:1999-10-22
3本文获1999年全国大学生数学建模竞赛三等奖1蒲飞为指导教师1
作者简介:蒲飞(1970-),男,湖南洪江人,讲师,硕士,主要从事计算数学研究1
(1)假设所考虑区域为平面区域1
(2)不考虑井的大小,只把它当作平面上的点来处理1(3)假设利用旧井的费用远远小于钻一口新井的费用1(4)假设平移的方向为东西向和南北向1
(5)旋转时旋转角度,以逆时针方向为正,顺时针方向为负1
(6)网格的初始位置中有一条横线与X 轴重合,有一条纵线与Y 轴重合1212 符号设置:
P i (a i ,b i ):第i 口旧井,其中(a i ,b i )为其坐标1X i :网格中的结点1
ε:给定的误差,取为0105个单位1
k :井纵向移动的单位数,k >0时向上移,k <0时向下移1h :井横向移动的单位数,h >0时向右移,h <0时向左移1[x ]:不超过x 的最大整数1
3 算法的分析及建立
钻井布局实际上就是移动网格使尽可能多的结点与旧井的距离误差不超过ε,即可利用的旧井数尽可能地多1在网格移动的过程中,旧井的位置是不变的1为分析问题简单计,可看成是旧井动而网格不动的情形,则网格移动的方向实际上与旧井移动的方向相反1以下算法的设计均采用这一思想来处理1进一步,对平移情形可只考虑旧井横向与纵向的最大移动范围为1个单位的情形,若移动了x (x ≥1)个单位,各旧井移动后的位置与所在格子的四边的距离跟各旧井移动x —[x ](0≤x —[x ]<1)个单位时旧井位置与四边的距离完全一样1下面分别就只平移及平移且旋转两种情形来建立算法1311 只平移的情形31111 全程搜索算法:
算法设计思想:由于给定的误差ε=0105单位,为保证搜索的精确度,取搜索步长为0101单位,做一个双重循环,外部循环做横向搜索,内部循环为纵向搜索,横向与纵向搜索范围均不超过1单位1每循环一次均搜索出可利用旧井数,搜索完毕后,求出最大可利用旧井数1
算法:
Step 1:输入旧井坐标1
Step 2:作全程搜索,采用双重循环,h 1为横向搜索步长,h 2为纵向搜索步长1h 1从0开始,依次递增0101单位作外部循环,进行横向搜索,h 2从0开始,依次递增0101单位作内部循环1进行纵向搜索,依次计算各井与所在格子四个结点的横坐标之差(取绝对值)及纵坐标之差(取绝对值),若至少与一个结点的纵横坐标之差(取绝对值)均不超过ε,则认为此井可利用,可按下式计算:
(1)与左下结点:a i -[a i ]≤ε,b i -[b i ]≤ε(2)与左上结点:a i -[a i ]≤ε,[b i ]+1-b i ≤ε(3)与右下结点:[a i ]+1-a i ≤ε,b i -[b i ]≤ε(4)与右上结点:[a i ]+1-a i ≤ε,[b i ]+1-b i ≤ε
Step 3:搜索完毕后,取可利用旧井数的最大值,并输出相应的横向、纵向平移长度,同时输出各旧井相应位置1
数值计算结果:最大可利用井数为4,旧井向东移动016单位,向北移动015单位(即网格向西移动016单位,向南移动015单位)后各井位置如表2:
・
52・第19卷第2期 蒲飞等:钻井布局问题的搜索算法
表2 只平移全程搜索算法的数值计算结果
i 123456789101112
a i 1110210131603197410051325132610381178198915810110
b i
2150
4100
2100
4101
6100
2150
6174
4160
2151
5100
3191
1130
注:取得最大可利用井数时,移动方式不唯一1
31112 逐井优先搜索算法
算法设计思想:由于全程搜索没有给出搜索的准则,运算量大,运行时间长,特别当结点数n 较大时,
运算量巨大,因而在实际应用中并非好算法1若能找到搜索准则,则可大大降低运算量,减少运算时间1本算法先选参照井P 1,即把P 1移至所在格子四个结点中某一邻近区域(即与该结点横纵坐标之差的绝对值不超过ε的区域),其他结点平移方向同P 1,可通过如下定理1、定理2,计算出有多少个结点在平移后也被移至所在格对应结点邻近区域;然后依次选P 2,P 3,…,P n 为参照井,同样计算出各自可利用的井数;最后,取出最多可利用旧井数,设其对应的参照井为P k (1≤k ≤n ),找出可利用的旧井,给出平移方向1从而,由定理1、定理2可知,该方案即为更优方案1
定理1 在n 个点P i (i =1,2,…,n )中任取一点,设为P 0(a 0,b 0),把它移至某一结点附近,即与纵横轴误差距离均不超于ε,若P i (a i ,b i )(P i ≠P 0)也被移至一结点附近,它们与纵横轴误差距离不超过ε,则有:
a 0-[a 0]-2ε≤a i -[a i ]≤a 0-[a 0]+2ε
b 0-[b 0]-2ε≤b i -[b i ]≤b 0-[b 0]+2ε证明:如图1,点P 0可移至它邻近的四个结点1现取P 0右上方的结点考虑,其它三个结点可按同一方法处理1现P 0
被移至它右上方的结点附近区域
图1
△0∶[[a 0]+1-ε,[a 0]+1+ε]×[[b 0]+1-ε,[b 0]+1+ε]则P i 也将被移至右上方1若P i 被移至a 0它右上方结点附近区域△i ∶[[a i ]+1-ε,[a i ]+1+ε]×[[b i ]+1-ε,[b i ]+1+ε] 设(a 0,b 0)被移至(a 0+h ,b 0+k ),h ,k ∈[0,1),有
h ∈[[a 0]+1-a 0-ε,[a 0]+1-a 0+ε] (1)
k ∈[[b 0]+1-b 0-ε,[b 0]+1-b 0+ε] (a i ,b i )被移到(a i +h ,b i +k )∈△i ,则h ,k 应满足
h ∈[[a i ]+1-a i -ε,[a i ]+1-a i +ε] (2)
k ∈[[b i ]+1-b i -ε,[b i ]+1-b i +ε]从图中可以看出,当h ,k 同时满足(1),(2)时,有:
[a i ]+1-ε≤a i +[a 0]+1-a 0-ε≤[a i ]+1+ε[b i ]+1-ε≤b i +[b 0]+1-b 0-ε≤[b i ]+1+ε或
[a i ]+1-ε≤a i +[a 0]+1-a 0+ε≤[a i ]+1+ε[b i ]+1-ε≤b i +[b 0]+1-b 0+ε≤[b i ]+1+ε
或
[a i ]+1-ε≤a i +[a 0]+1-a 0-ε≤[a i ]+1+ε[b i ]+1-ε≤b i +[b 0]+1-b 0+ε≤[b i ]+1+ε
或
・62・怀化师专学报 2000年4月
[a i ]+1-ε≤a i +[a 0]+1-a 0+ε≤[a i ]+1+ε[b i ]+1-ε≤b i +[b 0]+1-b 0-ε≤[b i ]+1+ε
解之得 a 0-[a 0]-2ε≤a i -[a i ]≤a 0-[a 0]+2ε
b 0-[b 0]-2ε≤b i -[b i ]≤b 0-[b 0]+2ε 证毕定理2 若将井P 0(a 0,b 0)移至所在格子四个结点中任一结点邻近区域,即与该结点横纵坐标之差(取绝对值)均不超过ε的区域。
把P 0所在格子四个结点中任一结点的邻近区域划分为四个区域,如图2所示,对这样标记的四个区域,我们有以下结论
:
图2
(1)若P 0进入区域1,则满足条件:
a 0-[a 0]-ε≤a i -[a i ]≤a 0-[a 0]
b 0-[b 0]-ε≤b i -[b i ]≤b 0-[b 0]的井P i (a i ,b i )必进入区域51
(2)若P 0进入区域2,则满足条件:
a 0-[a 0]≤a i -[a i ]≤a 0-[a 0]+ε
b 0-[b 0]-ε≤b i -[b i ]≤b 0-[b 0]的井P i (a i ,b i )必进入区域51
(3)若P 0进入区域3,则满足条件:
a 0-[a 0]≤a i -[a i ]≤a 0-[a 0]+ε
b 0-[b 0]≤b i -[b i ]≤b 0-[b 0]+ε
的井P i (a i ,b i )必进入区域51
(4)若P 0进入区域4,则满足条件:
a 0-[a 0]-ε≤a i -[a i ]≤a 0-[a 0]
b 0-[b 0]≤b i -[b i ]≤b 0-[b 0]+ε 的井P i (a i ,b i )必进入区域51
证明:四种情形证明类似,这里只证明(1)1若P 0(a 0,b 0)进入区域1,设横向移动h ,纵向移动k 1则有:[a 0]+1≤a 0+h ≤[a 0]+1-ε [b 0]+1≤b 0+k ≤[b 0]+1+ε即有:[a 0]+1-a 0≤h ≤[a 0]+1+ε-a 0 [b 0]+1-b 0≤k ≤[b 0]+1+ε-b 0 则a i +[a 0]+1-a 0≤a i +h ≤a i +[a 0]+1-a 0+ε
b i +[b 0]+1-b 0≤b i +k ≤b i +[b 0]+1-b 0+ε
又 a i +h =a i -[a i ]+[a i ]+h ≤a 0-[a 0]+[a i ]+[a 0]+1-a 0+ε=[a i ]+1+ε a i +h =a i -[a i ]+[a i ]+h ≥a 0-[a 0]+[a i ]+[a 0]+1-a 0-ε=[a i ]+1-ε
即 [a i ]+1-ε≤a i +h ≤[a i ]+1+ε …(a )
同样,b i +k =b i -[b i ]+[b i ]+k ≤b 0-[b 0]+[b 0]-b 0+ε+[b i ]=[b i ]+ε+1 b i +k =b i -[b i ]+[b i ]+k ≥[b i ]+b 0-[b 0]+[b 0]-b 0+1-ε=[b i ]+1-ε
即 [b i ]+1-ε≤b i +k ≤[b i ]+ε+1 …(b )故由(1)、(2)得知,井P i (a i ,b i )必进入区域51算法:
Step 1: F or Ⅰ=1 to n 选参照井P i (1≤i ≤n )计算满足条件:a i -[a i ]-2ε≤a j -[a j ]≤a i -[a i ]+2ε
b i -[b i ]-2ε≤b j -[b j ]≤b i -[b i ]+2ε
(1)
・
72・第19卷第2期 蒲飞等:钻井布局问题的搜索算法
的井P j (a j ,b j ),(j =1,2,…,n ,j ≠i )
Step 2:a )将P i 平移至所在格子四个结点中任一结点的邻近区域1时,选取满足以下条件的所有井P j ,并统计其个数m 1:
a i -[a i ]-ε≤a j -[a j ]≤a i -[a i ]
b i -[b i ]-ε≤b j -[b j ]≤b i -[b i ]
(2)
b )将P i 平移至所在格子四个结点中任一结点的邻近区域2时,选取满足以下条件的所有井P j ,
并统计其个数m 2:
a i -[a i ]≤a j -[a j ]≤a i -[a i ]+ε
b i -[b i ]-ε≤b j -[b j ]≤b i -[b j ] (3)
c )将P i 平移至所在格子四个结点中任一结点的邻近区域3时,选取满足以下条件的所有井P j ,并统计其个数m 3:
a i -[a i ]≤a j -[a j ]≤a i -[a i ]+ε
b j -[b i ]≤b j -[b j ]≤b j -[b i ]+ε (4)
d )将P i 平移至所在格子四个结点中任一结点的邻近区域4时,选取满足以下条件的所有井P j ,
并统计其个数m 4:
a i -[a i ]-ε≤a j -[a j ]≤a i -[a i ]
b j -[b i ]≤b j -[b j ]≤b j -[b i ]+
ε (5)
e )对满足条件(1),但同时不满足条件(2),(3),(4),(5)的所有井P m ,分别计算当P i 平移至所在格子的四个结点中任一结点的邻近区域时,井P m 也被平移至所在格子四个结点中相应结点邻近区域的个数,取其最大者,记为m 5,设此时P i 被平移至结点X m 的邻近区域1
Step 3:将井P i (a i ,b i )平移至X m 的邻近区域,
计M i =m 1+m 2+m 3+m 4+m 5+1 (加1表示包含P i 本身)
Step 4:若M k =max {M 1,M 2,……,M n },则将P k 移至X k 结点的邻近区域时可利用的旧井数最多,为M k 1数值计算结果:井向东移动0159个单位,向南移动0148个单位,最大可利用井数4个(见表3)1
表3 只平移逐井优先搜索算法的数值计算结果
i 123456789101112
a i 1109210031593196319951315131610281168197915710109
b i
1152
3102
1102
3100
5102
1152
5176
3162
1153
4102
2193
0132
312 平移且可旋转情形
全程搜索算法:
算法设计思想:考虑到先平移后旋转与先旋转后平移是等价的,故采用先平移后旋转的搜索方法,搜索时为保证精确度,纵向步长与横向步长均取为0105单位,旋转角度为π/180,做三重循环,外部循环为横向搜索,中间循环为纵向搜索,内部循环为旋转搜索,横向与纵向搜索均不超过1单位1每循环一次均搜索出可利用旧井数,搜索完毕后,求出最大可利用旧井数1
算法:
step 1:输入旧井坐标,作全程搜索
step 2:采用三重循环,h 1从0开始,依次递增0105单位,作为外部循环1k 1从0开始,依次递增0105单位,
作为中间循环1θ从0开始依次递增π/180,作为内部循环,依次计算各井与所在格子四个结点的横坐标之差(取绝对值)及纵坐标之差(取绝对值)1若至少与一个结点的纵横轴坐标之差均不超过
・82・怀化师专学报 2000年4月
ε,则认为此井可利用1
step 3:搜索完毕后取可利用旧井数的最大值,并比较出相应的横向平移长度,纵向平移长度以及旋转
角度同时输出各旧井相应位置1
数值计算结果:旋转角度为45度,水平移动0170个单位,上下移动0140个单位,最大可利用旧井数为6个(见表4)1
表4 平移且可旋转全程搜索算法的数值计算结果
i 123456789101112a i
1100
0170
0141
2104
3152
1198
4198
3197
4100
6134
5199
4151
b i 201020140221142019801412310001002210225101231822510127113
注:取得最大可利用井时,旋转移动方式不唯一1
算法的源程序因篇幅而没有附上,索要源程序请与作者联系1作者感谢数学系98级杨军、许任飞、计
算机系98级陈鑫三位同学为本文所做的许多数值计算工作1参考文献:
[1]张宜华1精通Matlab [M]1北京:清华大学出版社,19991
[2]卢开澄1计算机算法导引———设计与分析[M]1北京:清华大学出版社,19981[3]张志涌1掌握和精通Matlab [M]1北京:北京航空航天大学出版社,19971
Solving the Distribution Problem of Mine Via Search Algorithm
PU Fei , G ONG Y u 2long , W U Qi 2feng , S ONG Y ian 2xia
(Department o f Mathematics ,Huaihua Teacher s ’College ,Huaihua ,Hunan 418008)
Abstract :This paper considers the distribution problem of mine 1In the first case ,that parallel 2vertical m ovement of mesh is only permitted ,tw o search alg orithms are given 1One is called global search alg orithm ,the other is called optimal search alg orithm for each mine ,which efficiency is proved by tw o theorems 1In the second case ,the rotation of mesh is als o permitted ,the global search alg orithm is given 1All alg orithms are experienced by numeral experiment 1Through a giving ex 2am ple ,it shows that four mines can be used in the first case ,and six mines can be used in the second case 1
K ey w ords :parallel 2vertical m ovement ;rotation ;global search ;optimal search for each mine ;referential mine
・
92・第19卷第2期 蒲飞等:钻井布局问题的搜索算法。