您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 综合/其它 > 钻井布局研究---数学建模
钻井布局问题研究摘要本文主要研究了钻井布局过程中使可利用旧井位最大化的问题,即如何移动规划中的正方行网格(边长为1)使满足与网格结点的距离不超过=0.05个单位的旧井ip的个数最多。文中先引入了0-1变量if,旧井可利用(与结点距离不超过0.05)if为1,不可利用if为0主要进行了平行移动(不可旋转,只可横向、纵向移动)和自由移动(可旋转)的两方面研究。在进行平行移动的研究中两点间的距离为其横向距离(横坐标之差的绝对值)及纵向距离(纵坐标之差的绝对值)的最大值。自由移动的研究是在欧氏距离误差的意义下进行的。在解决平移问题的过程中根据运动的相对性,文中将网格的移动转换成了旧井的整体移动。对于问题一,然后假设旧井横向移动了x,纵向移动了y,用取整法将旧井移动后与其最近的结点坐标表示为)5.0,5.0(ybxaii。画出树形图将旧井位坐标、移动后旧井位坐标、结点坐标之间、给定误差之间的关系直观化后,根据给定误差确定横向、纵向移动步长为0.01。移动范围不超过1。建立最优化模型,用Matlab搜索求解并画出点阵模型和用Lingo全局求解求出在平行移动的情况下可被利用的旧井最多了4个,它们分别为:2p、4p、5p、10p。对于问题二,网格除在纵向和横向方向移动之外,还进行旋转,我们把原旧井坐标的其中一个作为坐标原点进行顺时针转动,即网格为逆时针转动,根据条件我们确定旋转步长为1度,旋转范围(0,2),分析旧井点坐标,移动距离、旋转角度、移动后井点坐标、结点坐标的关系,建立最优化模型,再利用Metlab软件编写程序,用Matlab搜索求解并画出点阵模型,其能利用的旧井数量为6口;分别为1p,6p,7p,8p,9p,11p。关键词:0-1变量取整最优化模型Matlab搜索求解Lingo全局求解1问题重述在平面上有n个井位ip,坐标为),(iiba。现要重新布置井位,要求把新井布置在一个每个格子的边长都是1个单位(100米)的正方形网格N的所有结点(纵线和横线的交叉点)上。如果旧井P距网格结点的距离不超过=0.05个单位,则认为旧井可以利用,不必在此结点上打新井。整个网格在平面上可以任意移动。研究以下问题:(1)假定网格的横向和纵向固定的,并规定两点间的距离为其横坐标之差的绝对值及纵坐标之差的绝对值的最大值,在平面上平行移动网格N,使可利用的旧井数尽可能大。对表中提供的12个旧井进行分析。为了方便计算我们可以把网格看做固定的,把旧井P的整个面进行平行移动。(2)在欧氏距离误差的意义下,考虑网格的横向纵向不固定(可以旋转)的情形,给出算法及计算结果。为了方便问题研究,我们用Matlab软件绘出移动网格前旧井的点阵模型:2问题分析问题一分析因为表中给出的所有点坐标都在第一象限,所以我们在第一象限研究问题。我们可以用直接Matlab编程求出结果后,使结果直观化,再建立模型。用Lingo全局求解,得到具体结果。因为最后结果考虑的是距离问题,根据运动的相对性。所以移动网格和整体移动井位本质上是相同的。因此我们可以考虑移动井位平面,这样我们只需要先引入P1(0.50,2.00)P3(3.00,1.50)P2(1.41,3.50)P9(7.57,2.01)P4(3.37,3.51)P8(5.43,4.10)P6(4.72,2.00)P12(9.50,0.80)P11(8.98,3.41)P5(3.40,5.50)P7(4.72,6.24)P10(8.38,4.50)变量x(横向移动距离)和y(纵向移动距离)。再引入0-1变量(距离小于0.05为1,大于0.05为0),为了使几个点的关系直观化,我们画出树图进行分析:因为问题的本质是将移动后的井位和网格的结点进行横坐标比较和纵坐标比较,而正方形网格边长为1,即所有结点坐标都是整数,所以我们可以把问题看为原井位移动后的横坐标、纵坐标与其横坐标、纵坐标进行(四舍五入)取整后的值进行比较。因为给定误差是0.05,所以为了节省时间和确保没有疏漏我们确定移动步长为0.01。问题二分析:问题二的研究可分两步进行,先横向、纵向移动,再旋转一定角度,因此问题二只要在问题一的基础上考虑到旋转角度,并考虑旋转角度对坐标的影响。3假设条件(1)问题一中的网格横向纵向绝对固定,误差远远小于0.05。(2)在平行移动中,误差远远小于0.05。(3)给出点的坐标误差远远小于0.05。(4)在正方形网格区域内任何地方打井,所需费用相同。P(i)a(i)b(i)a(i)+xb(i)+y[b(i)+y+0.5][b(i)+y+0.5][a(i)+x+0.5][a(i)+x+0.5]纵向平移Y横向平移X大于0.05小于等于0.05小于等于0.05大于0.05P(i)不可利用P(i)可利用P(i)不可利用4符号说明ia------表示第i个井的横坐标。ib-------表示第i个井的纵坐标。x-------表示井移动的横坐标距离。y-------表示井移动的纵坐标距离。[]---表示向下取整。if----表示0-1变量。kx----旧井点归零后的横坐标ky---旧井点归零后的纵坐标jd---旧井点归零后的间距r---网格转动角度km---转动后旧井点横坐标kn---转动后旧井点纵坐标5模型的建立与求解问题一1模型准备为了方便计算,我们将网格看做是不动的,把所有井位看做是可以整体移动的,假设横向移动的距离为x,纵向移动距离为y。引入0-1变量,距离小于0.05为1,距离大于0.05为0。因为Lingo软件中没有四舍五入取整指令,所以我们可以把移动后的横坐标取整和纵坐标取整分别用[5.0xai]和[5.0ybi]向下取整代替。2.目标分析因为本题目标是尽可能多的利用旧井位,因此本题目标为最大值求解,建立目标为:121iifzMax3.约束条件因为移动旧井位可以横、纵向任意移动,所以我们计算距离时要加绝对值。又,只有移动后的井位与其最相近的结点的横、纵坐标之差同时小于0.05时,此井位才符合要求。所以)12...1(05.0|]5.0[|ifxaxaiii)12...1(05.0|]5.0[|ifybybiii因为正方形网格的边长为1,所以横向、纵向移动距离均应不超过1,(超过1为重复,无意义)因此10x01y4.模型建立综上所述我们建立模型如下:121iifzMax101010)12...1(05.0|].50[|)12...1(05.0|].50[|iiiiiiifxyifybybifxaxa5.模型求解用Lingo全局求解结果为:p2(1.41,3.50)p4(3.37,3.51)P2(2,4)P4(3.96,4.01)p5(3.40,5.50)p10(8.38,4.50)P5(3.99,6)P10(8.97,5)向右移动0.59向上移动0.50向右移动0.59向上移动0.50向右移动0.59向上移动0.50向右移动0.59向上移动0.50利用Matlab软件编程进行搜索求解:首先我们把x轴加上i(步长为0.01)的一个步长,再对y轴加上j(步长为0.01)的一个步长,逐个观察ka与x轴,kb与y轴的距离,如果二者都小于0.05,则记录下来。如果不同时满足ka与x轴,kb与y轴的距离都小于0.05,那就y轴在已有的基础上再移动一个步长。如此循环直到j等于1才停止此循环。以上循环停止后在对x轴加上一个步长,再次循环以上的程序,直到i等于1才停止。求满足ka与x轴,kb与y轴的距离都小于0.05的点的最多个数。经过搜索求解得到可以利用的井有第2个,第4个,第5个,第10个。用Matlab绘出结果点阵模型为:6.结果分析本题的两种算法结果相同,所以本体的模型是最优化模型,而我们的算法是移动井位,在实际生活中井是不可移动的。因此我们要将结果转化成网格的移动。所以在实际中应该将网格向坐移动0.59,向下移动0.5。可利用的井位和模型求解的结果是相同的。问题二1.模型二分析由于都是求满足要求的井的个数,所以问题二的目标和问题一是相同的,即:121iifzMax约束条件1)网格延横坐标移动后,网格结点与能利用旧井之间的距离不超过给定误差:05.05.0)(mxmxfiii3)网格延纵坐标移动后,网格结点与能利用旧井之间的距离不超过给定误差:05.05.0)(nynyfiii4)归零后新产生的旧井点坐标:ikikxaaxbb5)旧井点归零后点的间距:22jkkdxy6)转动后旧井点的坐标:cossinsinsinkjkjkjkjymdradyndrad7)转动完成后,网格结点与能利用旧井之间的距离不超过给定误差:220.05ikfmnk因此我们建立如下模型:121iifzMax22220,102cossinsinsin0.05.iikikjkkkjkjkjkjikkfxaaybbdxyrymdradyndradfmnst2.算法1):首先我们坐标轴移动的第一个井的位置,再以o(一度)为单位旋转网格点。根据欧式距离计算格式((im-round(im))^2+(in-round(in))^2)^0.50.05;((im,in移动后的坐标),(round(im),round(in))网格点坐标的距离小于0.05的记录下来。再重复旋转网格点,直到旋转网格点到90度为止。2):再次把坐标轴移动到第三个井的位置,重复旋转网网格点。直到坐标轴移动到第十二个井的位置。3):记录移动后距离小于等于0.05的井的个数最多的3.结果分析用Matlab搜索求解,求出最多可以利用6个旧井,分别是1p,6p,7p,8p,9p,11p。其点阵模型为:6附录原12井位坐标:i123456789101112a0.501.413.003.373.404.724.725.437.578.388.989.50b2.003.501.503.515.502.006.244.102.014.503.410.80问题一Matlab编程:x=[0.501.413.003.373.404.724.725.437.578.388.989.50];y=[2.003.501.503.515.502.006.244.102.014.503.410.80];n=0;fori=0:0.01:1;a=x+i;forj=0:0.01:1;b=y+j;m=0;fork=1:12;ifabs(a(k)-round(a(k)))=0.05&abs(b(k)-round(b(k)))=0.05;m=m+1;endifmn;n=m;q=i;w=j;endendendendnqwplot(x+q,y+w,'.')grid问题一lingo编程:sets:aa/1..12/:a,b,f;endsetsdata:a=0.50,1.41,3.00,3.37,3.40,4.72,4.72,5.43,7.57,8.38,8.98,9.50;b=2.00,3.50,1.50,3.51,5.50,2.00,6.24,4.10,2.01,4.50,3.41,0.800;enddatamax=@sum(aa(i):f(i));@for(aa(i):@abs((a(i)+x)-@floor(a(i)+x+0.5))*f(i)=0.05);@for(aa(i):@abs((b(i)+y)-@floor(b(i)+y+0.5))*f(i)=0
本文标题:钻井布局研究---数学建模
链接地址:https://www.777doc.com/doc-1422016 .html