钻井布局数学模型
- 格式:doc
- 大小:53.50 KB
- 文档页数:5
钻石布局数学模型
指导老师:温利民
参赛队员:田毅 卢俊红 曾琪
2009年7月27日
问题一的解答:
程序一:
x=[41.5375 87.4367 76.7950 99.0083 43.8659 21.3963
32.0036 72.6632 74.4566 43.9924 68.3332 83.9238 13.3773
60.7199 37.0477 45.1425 2.7185 1.2863 68.3116 3.5338
60.8540 1.6355 58.6918 36.7568 71.7634 8.4079 44.1828
15.3606 69.9213 47.8384 12.1047 71.5883];
y=[30.4999 1.5009 97.0845 78.8862 49.8311 64.3492 96.0099
41.1953 26.7947 93.3380 21.2560 62.8785 20.7133 62.9888
57.5148 4.3895 31.2685 38.3967 9.2842 61.2395 1.5760
19.0075 5.7581 63.1451 69.2669 45.4355 35.3250 67.5645
72.7509 55.4842 45.0754 89.2842];
a=zeros(1,32);
b=zeros(1,32);
a=x-fix(x);%去整以后的x
b=y-fix(y);%去整以后的y
max=0;%记录最多能有几口旧井可以利用
count=0;%记录确定网格节点后能利用旧井的数量
for i=0:0.0025:1
for j=0:0.0025:1
count=0;
for k=1:32
if(sqrt((a(k)-i)^2+(b(k)-j)^2)<0.05)
count=count+1;
end
end
if(count>max)
max=count;
c=zeros(1,32);%标记能利用的旧井井,如果为1表示有这口井,否则没有
X=i;%网格节点的x坐标
Y=j;%网格节点的Y坐标
for k=1:32
if(sqrt((a(k)-i)^2+(b(k)-j)^2)<0.05)
c(k)=1;
end
end
end
end
end
max,c,X,Y
程序一说明:从题目的资料中给出了32口旧井的位置的坐标数据x,y两个数组,
网格的方向是固定的,对于任意一点ip,当网格纵横平移整数个单位时,ip相对于最近的网格结点的距离是不变的,即当ip在网格上纵横平移整数个单位至Pi´时,ip相对同一网格的距离不变,于是,我们把所有的旧井点都纵横平移整数个单元,使他们都落在同一网格单元w中,此时,各点相对于最近网格结点的距离保持不变。
所以去整求出32口旧井的新坐标,给定,ij的范围在0~1,为网格节点的YX、坐标,在i,j变化的多次的循环下满足32口旧井到网格节点的距离小于0.05的最多口旧井数就是所要求的结果(max),为两个旧井。
程序结果:
max =2
c =
Columns 1 through 20
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
Columns 21 through 32
0 0 0 0 0 0 1 0 0 0 0 0
X =0.1375
Y =0.3400
问题二的解答:
程序二:
x=[41.5375 87.4367 76.7950 99.0083 43.8659 21.3963
32.0036 72.6632 74.4566 43.9924 68.3332 83.9238 13.3773
60.7199 37.0477 45.1425 2.7185 1.2863 68.3116 3.5338
60.8540 1.6355 58.6918 36.7568 71.7634 8.4079 44.1828
15.3606 69.9213 47.8384 12.1047 71.5883];
y=[30.4999 1.5009 97.0845 78.8862 49.8311 64.3492
96.0099 41.1953 26.7947 93.3380 21.2560 62.8785 20.7133
62.9888 57.5148 4.3895 31.2685 38.3967 9.2842 61.2395
1.5760 19.0075 5.7581 63.1451 69.2669 45.4355 35.3250
67.5645 72.7509 55.4842 45.0754 89.2842];
a=zeros(1,32);
b=zeros(1,32);
a1=zeros(1,32);
b1=zeros(1,32);
%a=x-fix(x);%去整以后的x
%b=y-fix(y);%去整以后的y
max=0;%记录最多能有几口旧井可以利用
count=0;%记录确定网格节点后能利用旧井的数量
N=0;
for i=0:0.025:1
for j=0:0.025:1
for n=0:0.01*pi:pi/2
for m=1:32
a(m)=x(m)*cos(n)-y(m)*sin(n);
b(m)=x(m)*sin(n)+y(m)*cos(n);
end
for k=1:32
a1(k)=a(k)-fix(a(k));
b1(k)=b(k)-fix(b(k));
if a(k)<0
a1(k)=1+a1(k);
end
if b1(k)<0
b1(k)=1+b1(k)
end
end
count=0;
for k=1:32
if(sqrt((a1(k)-i)^2+(b1(k)-j)^2)<0.05)
count=count+1;
end
end
if(count>max)
max=count;
c=zeros(1,32);%标记能利用的旧井井,如果为1表示有这口井,否则没有
r=i;%网格节点的x坐标
s=j;%网格节点的Y坐标
N=n;
for k=1:32
if(sqrt((a1(k)-i)^2+(b1(k)-j)^2)<0.05)
c(k)=1;
end
end
end
end
end
end
max,r,s,c,N 程序二的说明:在程序一的基础下,32口旧井的坐标进行旋转,旋转公式为
X´= X cos() - Y sin() Y´= X sin() + Y cos()
同理根据给定,ij的范围在0~1,,rs为网格节点的YX、坐标,在i,j变化的多次的循环下满足32口旧井到网格节点的距离小于0.05的最多口旧井数为5口井旋转后的角度N =1.1310
特别,对位于离网格边界≤ε的点,映射到[1,1+ε]处理
为程序运行所得的结果为
max = 5
r = 0.8500
s = 0.7500
c =
Columns 1 through 20
0 1 0 0 0 1 0 0 0 0 0 1
0 1 0 0 1 0 0 0
Columns 21 through 32
0 0 0 0 0 0 0 0 0 0 0 0
N = 1.1310