• 【数学建模】钻井问题


    已知

    1. 12口井的坐标位置如下:
      x=[0.50,1.41,3.00,3.37,3.40,4.72,4.72,5.43,7.57,8.38,8.98, 9.50];
      y=[2.00,3.50,1.50,3.51,5.50,2.00,6.24,4.10,2.01,4.50,3.41,0.80];
    2. 设平面有n个点 P i P_i Pi(表旧井井位),其坐标为 ( a i , b i ) , i = 1 , 2 , … , n (a_i,b_i),i=1,2,…,n (ai,bi),i=1,2,,n。新置的井位是一个正方形网格 N N N的所有结点。假设每个格子的边长都是 1 1 1单位。整个网格是可以在平面上任意移动的。若一个已知点 P i P_i Pi距某个网格结点 X i X_i Xi的距离不超过给定误差 ϵ \epsilon ϵ,则认为 P i P_i Pi处的旧井井位可以利用,不必在结点处打新井。

    1)假定网格的横向和纵向是固定的,并规定两点间的距离为其横向距离(横坐标之差的绝对值)及纵向距离(纵坐标之差的绝对值)的最大者,在平面上平移网格N,使可利用的旧井数尽可能大,试提供数值计算方法。

    本题主要是要建立旧井可利用判断模型

    首先是按照题目建立两点距离符合误差 ϵ \epsilon ϵ范围内的判断模型
    若一个已知点 P i P_i Pi ( a i , b i ) (a_i,b_i) (ai,bi)距某个网格结点 X i ( x i , y i ) X_i(x_i,y_i) Xi(xi,yi)的距离不超过给定误差 ϵ \epsilon ϵ
    { ∣ a i − x i ∣ ≤ ϵ ∣ b i − y i ∣ ≤ ϵ {|aixi|ϵ|biyi|ϵ {aixiϵbiyiϵ
    或者

    max ⁡ ( ∣ a i − x i ∣ , ∣ b i − y i ∣ ) ≤ ϵ \max{(|a_i-x_i|,|b_i-y_i|)}\le \epsilon max(aixi,biyi)ϵ

    其次是网格平移模型,因为要研究的是网格平行对井的位置变化
    设网格向右平移 x x x个单位,向上平移 y y y个单位;一个已知点 P i P_i Pi ( a i , b i ) (a_i,b_i) (ai,bi)
    ;网格平移后新点位置 P j ( a j , b j ) P_j(a_j,b_j) Pj(aj,bj)
    { a j = a i + x b j = b i + y {aj=ai+xbj=bi+y {aj=ai+xbj=bi+y

    综合上述模型和要可利用的旧井数尽可能大可得模型:

    { a n s = max ⁡ ∑ i ∈ N 1 ≤ i ≤ n f i max ⁡ ( ∣ a i + x − x i ∣ , ∣ b i + y − y i ∣ ) f i ≤ ϵ {ans=maxiN1infimax(|ai+xxi|,|bi+yyi|)fiϵ {ans=maxiN1infimax(ai+xxi,bi+yyi)fiϵ

    现在还剩下一个问题某个网格结点 X i ( x i , y i ) X_i(x_i,y_i) Xi(xi,yi)是哪个网格点
    这里问题就可以变成一个已知点 P j P_j Pj ( a j , b j ) (a_j,b_j) (aj,bj)求距离其最近的网格点 X j ( x j , y j ) X_j(x_j,y_j) Xj(xj,yj)
    将一个小格子划分为四个区域观察规律可得
    { x j = ⌊ a j + 0.5 ⌋ y j = ⌊ b j + 0.5 ⌋ {xj=aj+0.5yj=bj+0.5 {xj=aj+0.5yj=bj+0.5

    将这个式子带入我们的模型中可得
    { a n s = max ⁡ ∑ i ∈ N 1 ≤ i ≤ n f i max ⁡ ( ∣ a i + x − ⌊ a i + x + 0.5 ⌋ ∣ , ∣ b i + y − ⌊ b i + y + 0.5 ⌋ ∣ ) f i ≤ ϵ {ans=maxiN1infimax(|ai+xai+x+0.5|,|bi+ybi+y+0.5|)fiϵ {ans=maxiN1infimax(ai+xai+x+0.5,bi+ybi+y+0.5)fiϵ

    给出12口井的坐标, ϵ = 0.05 \epsilon = 0.05 ϵ=0.05 , 按照问题一的要求求解

    按照问题一给的模型,进行调整
    { a n s = max ⁡ ∑ i ∈ N 1 ≤ i ≤ n f i max ⁡ ( ∣ x i + x − ⌊ x i + x + 0.5 ⌋ ∣ , ∣ y i + y − ⌊ y i + y + 0.5 ⌋ ∣ ) f i ≤ 0.05 {ans=maxiN1infimax(|xi+xxi+x+0.5|,|yi+yyi+y+0.5|)fi0.05 {ans=maxiN1infimax(xi+xxi+x+0.5,yi+yyi+y+0.5)fi0.05

    LINGO求解

    sets:
    	aa/1..12/:a,b,f;
    endsets
    data:
    	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.80;
    enddata
    max = @sum(aa(i):f(i));
    @for(aa(i):@bin(f(i)));
    @for(aa(i):@smax(@abs(a(i)+x1-@floor(a(i)+x1+0.5)),@abs(b(i)+y1-@floor(b(i)+y1+0.5)))*f(i)<=0.05);
    x1<1;
    y1<1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    or
    { a n s = max ⁡ ∑ i ∈ N 1 ≤ i ≤ n f i ∣ x i + x − ⌊ x i + x + 0.5 ⌋ ∣ f i ≤ 0.05 ∣ y i + y − ⌊ y i + y + 0.5 ⌋ ∣ f i ≤ 0.05 {ans=maxiN1infi|xi+xxi+x+0.5|fi0.05|yi+yyi+y+0.5|fi0.05 ans=maxiN1infixi+xxi+x+0.5fi0.05yi+yyi+y+0.5fi0.05

    sets:
    	aa/1..12/:a,b,f;
    endsets
    data:
    	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.80;
    enddata
    max = @sum(aa(i):f(i));
    @for(aa(i):@bin(f(i)));
    @for(aa(i):@abs(a(i)+x1-@floor(a(i)+x1+0.5))*f(i)<=0.05);
    @for(aa(i):@abs(b(i)+y1-@floor(b(i)+y1+0.5))*f(i)<=0.05);
    x1<1;
    y1<1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    答案如下

      Objective value:                              4.000000
      Objective bound:                              4.000000
    
     						  F( 1)        0.000000           -1.000000
                              F( 2)        1.000000            0.000000
                              F( 3)        0.000000           -1.000000
                              F( 4)        1.000000           -1.000000
                              F( 5)        1.000000            0.000000
                              F( 6)        0.000000           -1.000000
                              F( 7)        0.000000           -1.000000
                              F( 8)        0.000000           -1.000000
                              F( 9)        0.000000           -1.000000
                             F( 10)        1.000000            0.000000
                             F( 11)        0.000000           -1.000000
                             F( 12)        0.000000           -1.000000
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    电影数据读取、分析与展示(Python+Scrapy)
    数组中的第K大元素[堆排 + 建堆的实际时间复杂度]
    JVM:字节码文件,类的生命周期,类加载器
    css样式之精灵图与字体图标跟多行显示省略号
    为什么接口中字段要static和final修饰?
    oracle数据库中job和dbms_job比较
    【前端】判断是否为对象
    多线程&并发篇---第十六篇
    STM32 BSRR BRR ODR 寄存器解析(F4系列已经去掉BRR寄存器了)
    雨果奖首设游戏奖项,Hades拿下科幻界的诺贝尔奖
  • 原文地址:https://blog.csdn.net/weixin_72899100/article/details/137674246