【数学建模】钻井问题

已知

  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 ∣ ≤ ϵ \begin{cases} |a_i-x_i| \le \epsilon \\ |b_i-y_i| \le \epsilon \end{cases} {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 \begin{cases} a_j = a_i+x \\ b_j = b_i + y \end{cases} {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 ≤ ϵ \begin{cases} ans = \max \sum_{\substack{i\in N\\1\le i\le n} }{fi} \\ \max{(|a_i+x-x_i|,|b_i + y-y_i|)f_i}\le \epsilon \end{cases} {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 ⌋ \begin{cases} x_j = \lfloor a_j+0.5 \rfloor \\ y_j = \lfloor b_j+0.5 \rfloor \end{cases} {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 ≤ ϵ \begin{cases} ans = \max \sum_{\substack{i\in N\\1\le i\le n} }{fi} \\ \max{(|a_i+x-\lfloor a_i+x+0.5 \rfloor|,|b_i + y-\lfloor b_i+y+0.5 \rfloor|)f_i}\le \epsilon \end{cases} {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 \begin{cases} ans = \max \sum_{\substack{i\in N\\1\le i\le n} }{fi} \\ \max{(|x_i+x-\lfloor x_i+x+0.5 \rfloor|,|y_i + y-\lfloor y_i+y+0.5 \rfloor|)f_i}\le 0.05 \end{cases} {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;

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 \begin{cases} ans = \max \sum_{\substack{i\in N\\1\le i\le n} }{fi} \\ |x_i+x-\lfloor x_i+x+0.5 \rfloor|f_i\le 0.05\\|y_i + y-\lfloor y_i+y+0.5 \rfloor|f_i\le 0.05 \end{cases} 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;

答案如下

  Objective value:                              4.000000Objective bound:                              4.000000F( 1)        0.000000           -1.000000F( 2)        1.000000            0.000000F( 3)        0.000000           -1.000000F( 4)        1.000000           -1.000000F( 5)        1.000000            0.000000F( 6)        0.000000           -1.000000F( 7)        0.000000           -1.000000F( 8)        0.000000           -1.000000F( 9)        0.000000           -1.000000F( 10)        1.000000            0.000000F( 11)        0.000000           -1.000000F( 12)        0.000000           -1.000000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式学习57-ARM7(字符设备驱动框架led)

kernel 内核 printk 内核打印 cat /proc/devices mknod ? 查看指令 gcc -oapp hello.c

动态库作用举例

1.定义解析 符号地址&#xff1a; 符号地址是指代码中定义的函数、变量或其他标识符的内存地址。在程序编译和链接的过程中&#xff0c;这些符号会被编译器和链接器分配一个具体的内存地址。 每个符号在程序的执行过程中都有一个唯一的地址&#xff0c;用于指示它在内存中的位…

fastapi写一个上传的接口

首先&#xff0c;确保您已经在 Python 环境中安装了 FastAPI。 安装环境&#xff1a; pip install fastapi uvicorn让我们创建一个图片上传的接口&#xff1a; from fastapi import FastAPI, File, UploadFile from fastapi.responses import JSONResponse import shutil im…

Dynamic Wallpaper for Mac:动态壁纸让桌面更生动

Dynamic Wallpaper for Mac是一款为苹果电脑用户精心设计的动态壁纸软件&#xff0c;它以其丰富的功能和精美的壁纸库&#xff0c;为用户带来了更加生动和个性化的桌面体验。 Dynamic Wallpaper for Mac v17.8中文版下载 这款软件支持多种动态壁纸&#xff0c;用户可以根据自己…

AirServer投屏软件

AirServer下载:https://souurl.cn/7xWmKW AirServer是一款功能强大的屏幕镜像接收器&#xff0c;它适用于Mac和PC&#xff0c;允许用户接收来自iOS、Android、Mac和Windows等设备的AirPlay和Google Cast流。这款软件可以让用户将手机或平板电脑的屏幕内容无线投射到电脑上&…

2024.4.19力扣每日一题——准时抵达会议现场的最小跳过休息次数

2024.4.19 题目来源我的题解方法一 动态规划浮点数精度方法二 动态规划不考虑浮点数精度问题 题目来源 力扣每日一题&#xff1b;题序&#xff1a;1883 我的题解 方法一 动态规划浮点数精度 参考官方题解。 用 f[i][j]表示经过了 dist[0]到 dist[i−1]的 i 段道路&#xff0…

ORACLE错误提示概述

OceanBase分布式数据库-海量数据 笔笔算数 保存起来方便自己查看错误代码。 ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程…

PTA L2-047 锦标赛

题目 解析 把每一场比赛看作满二叉树的一个节点&#xff0c;父节点递归遍历子节点的结果&#xff0c;进行试填。 代码 #include <bits/stdc.h>using i64 long long;struct Node {int win, lose; };void solve() {int k;std::cin >> k;int siz (1 << k);…

【YOLOv8改进[Backbone]】使用MobileNetV3助力YOLOv8网络结构轻量化并助力涨点

目录 一 MobileNetV3 1 面向块搜索的平台感知NAS和NetAdapt 2 反向残差和线性瓶颈 二 使用MobileNetV3助力YOLOv8 1 整体修改 ① 添加MobileNetV3.py文件 ② 修改ultralytics/nn/tasks.py文件 ③ 修改ultralytics/utils/torch_utils.py文件 2 配置文件 3 训练 其他 …

如何查看项目中使用的Qt版本

如何查看项目中使用的Qt版本 1.点击左下角电脑按钮查看Qt版本。 2.点击左侧栏项目按钮查看Qt版本。

apipost、postman等工具上传图片测试flask、fastapi的文件api接口

参考&#xff1a;https://blog.csdn.net/qq_15821487/article/details/119354129 https://www.cnblogs.com/wyxjava/p/16076176.html 选择from-data&#xff0c;下拉选择file上传文件发送即可

MySQL-数据库基础

一、背景与基本使用 首先是登录方式&#xff0c;一般用 mysql -h 127.0.0.1 -P 3306 -u root -p mysql也是一种网络服务。 当然我们在本地登录时可以省去主机ip和端口号。 -h表示我们要登录mysql在哪个ip的主机上&#xff0c; -P表示端口号。 -u表示以谁的身份去登录。…

笔记:Python顺序结构 练习题

文章目录 前言一、什么是顺序结构&#xff1f;二、练习题1.题目2.填空题3.简答题4.编程题 总结 前言 本次笔记旨在帮助读者加深对Python编程语言中顺序结构和选择题的理解。在学习Python编程过程中&#xff0c;掌握程序的基本结构以及条件语句的使用至关重要。通过本次练习题&…

MyBatis使用PageHelper分页插件

1、不使用PageHelper分页插件 模块名&#xff1a;mybatis-012-page CarMapper接口package org.example.mapper;import org.apache.ibatis.annotations.Param; import org.example.pojo.Car;import java.util.List;public interface CarMapper {/*** 分页查询* param startInd…

Python中的字符串操作

Python 是一种简单易学且功能强大的编程语言&#xff0c;它在处理字符串方面提供了丰富的内置方法和函数。字符串是 Python 中最基本的数据类型之一&#xff0c;用于表示文本数据。本文将介绍 Python 中一些常用的字符串操作方法&#xff0c;并通过示例代码来展示它们的用法。 …

【爬虫】多线程爬取图片

多线程爬虫 多线程爬虫概述1.1 多线程的优势1.2 多线程的挑战 设计多线程爬虫1.1 项目设计1.2 项目流程1.3注意事项 总结 多线程爬虫概述 在当今信息爆炸的时代&#xff0c;网络爬虫&#xff08;Web Scraper&#xff09;已成为获取和分析网络数据的重要工具。而多线程爬虫&…

贪吃蛇游戏源码(VS编译环境)

贪吃蛇游戏源码&#xff08;VS编译环境&#xff09; &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;C语言&#x1f353; &#x1f33c;文章目录&#x1f33c; 1. Snake.h 头文件 2. Snake.c 源文件 3. Test.c 头文件 1. Snake.h 头…

什么是promise?

一个对象&#xff0c;用来处理异步操作。使异步操作写的更优雅、更易于阅读。 从字面上理解&#xff0c;promise是承诺、许诺的意思。意思是使用promise后&#xff0c;不管成功还是失败肯定会有返回值。 promise有三种状态&#xff1a;pending&#xff08;进行中&#xff09;&a…

linux常用命令,没有最全,只有更全 【持续更新】

工作中linux是大家常用的&#xff0c;下面这些linux命令涵盖了工作中常用的&#xff0c;相信你百分百会用的到&#xff01; 文件和目录操作&#xff1a; ls&#xff1a;列出当前目录下的文件和子目录。 例如&#xff1a;ls -l 显示详细信息&#xff0c;ls -a 显示所有文件&…

Dubbo元数据中心

元数据中心为 Dubbo 中的两类元数据提供了存取能力&#xff1a;地址发现元数据、服务运维元数据。 一、地址发现元数据 Dubbo3 中引入了应用级服务发现机制用来解决异构微服务体系互通与大规模集群实践的性能问题&#xff0c;应用级服务发现将全面取代 2.x 时代的接口级服务发…