2024年认证杯SPSSPRO杯数学建模B题(第一阶段)神经外科手术的定位与导航解题全过程文档及程序
2024年认证杯SPSSPRO杯数学建模
B题 神经外科手术的定位与导航
原题再现:
人的大脑结构非常复杂,内部交织密布着神经和血管,所以在大脑内做手术具有非常高的精细和复杂程度。例如神经外科的肿瘤切除手术或血肿清除手术,通常需要将颅骨打开一个(或几个)圆形窗口,将病变部位暴露在术野中。但当病变部位较深时,就必须将上方的脑组织进行一定程度的牵拉、移位。这种牵拉和移位的幅度不能太大,而且具有损伤脑组织的风险。所以医生需要仔细设计手术方案,才能在尽量减小损伤的前提下完成手术目标。现在有CT或核磁共振等成像手段可以对颅内区域进行准确的透视和三维定位。但是在打开颅骨后,由于打开部位的颅骨约束作用消失,而且脑组织是柔软的,所以脑组织会产生一定程度的变形、移位,甚至在一定程度上膨出,以至于病变部位的位置发生了改变。如果想要在术中实时进行透视和定位,需要复杂的设备,术者也需经过特殊的训练,这都使得此类手术尚未完全普及。所以我们需要设计一个合理的数学模型,较为精细地预测手术部位在开颅后的位置改变情况。我们一定能够取得的数据是:
1. 术前的CT成像结果,这包含了颅腔的三维形状以及手术部位在三维空间中的位置(在建模时可自行寻找并使用典型的颅脑CT成像数据);
2. 术前的颅内压;
3. 在颅骨上打开的窗口的大小以及位置;
4. 开颅后在颅骨窗口处可观察到的脑组织膨出高度(通常以mm计);
5. 在术前可以测量得到的其他生理指标。
请你和你的团队建立合理的数学模型以解决下列问题。
第一阶段问题:我们先来处理病人颅内无占位性病变的情况。
1. 假设在术中可以测得颅内压。请依据我们能够取得的数据,尽可能精细地计算全脑在开颅后的变形情况。
2. 假设在术中无法测得颅内压,请依据我们能够取得的数据,尽可能精细地计算全脑在开颅后的变形情况。
注:如果在建模的过程中,术中的颅内压对改善模型精度没有用处,那么这两个问题可以共用同一个模型。
整体求解过程概述(摘要)
人的大脑结构非常复杂,内部交织密布着神经和血管,因此在术中能否测得颅内压的情况会变得不稳定。本文首先对已有数据进行预处理,剔除缺失值和重复值后进行分组研究,利用虚拟神经外科开颅手术进行仿真,基于Abaqus有限元分析软件建立有限元模型,预测手术部位在在开颅后的形变情况。
针对第一问,我们将已有 CT 成像结果数据建立软组织形变模型构建不同 CT 成像图的颅骨和脑组织形状的三维几何图形,其次将三维几何图形导入有限元分析软件Abaqus,建立有限元模型。由于泊松比和杨氏模量并不与有限元模型有直接联系,因此本文利用matlab运用粒子群算法建立质点-弹簧模型中的泊松比和杨氏模量与有限元模型的联系,为脑组织定义合适的材料属性减少虚拟神经外科手术仿真结果误差,最后施加颅内压作为边界条件,模拟神经外科开颅手术对脑组织的影响。利用实时性和粘弹性优化有限元模型。最后根据在颅骨上打开的窗口的大小以及位置的变化情况和术中与术后脑组织膨出高度的变化量,记录全脑在开颅后的变形情况。我们发现,颅内压对脑组织的变形情况具有近于线性影响关系,即术中测得的颅内压越高,脑组织的变形情况越剧烈,并且脑组织变形情况在整个颅腔都是均匀分布的。
针对第二问,本文假设术中的颅内压对改善模型精度没有用处,因此我们在问题二中与问题一公用一个模型。在基于问题一隐式积分方法优化有限元实时模型和粘弹性模型的基础上,输入上述得出的泊松比和杨氏模量,为脑组织定义合适的材料属性减少虚拟神经外科手术仿真结果的误差,取消施加颅内压作为边界条件,直接模拟神经外科开颅手术对脑组织的影响,得出术后的颅内压,最后利用得出的术后膨出高度与已知的术后膨出高度的数值和术后颅内压与问题一求出的术后颅内压的数值进行准确性评估验证,计算二者线性回归相关系数r值。通过SPSS分析,我们得出r值分别为0.995,1.000,相关性显著,假设成立。因此,在术中无法测得颅内压的情况下,我们依旧可以得出颅内压对脑组织的变形情况具有近于线性影响关系,并且脑组织变形情况在整个颅腔都是均匀分布的。
问题分析:
对本文所提出的两种相关问题,逐一做如下分析:
问题一的分析
在问题一的分析中,我们在术中可以测得病人的颅内压,因此需要依据能够取得的各类人群的术前颅内压的数据,以此来建立合理的有限元模型来尽可能精细地计算全脑在进行神经外科开颅手术后的变形情况。
第一步:对已知数据进行预处理,剔除有部分术前颅内压、在颅骨上打开的窗口的大小以及位置、开颅后在颅骨窗口处脑组织膨出高度数据不完整、异常数据以及重复数据,并对数据进行分组,分为:男性分为A1(成年人组)、B1(未成年人组);女性分为A2(成年人组)、B2(未成年人组)。
第二步:将已分组的 CT 成像结果数据借助软组织形变模型构建不同 CT 成像图的颅骨和脑组织形状的三维几何图形,其次将三维几何图形导入有限元分析软件Abaqus,建立有限元模型,划分网格。
第三步:利用matlab软件,运用粒子群算法建立质点-弹簧模型中的泊松比和杨氏模量与有限元模型之间的联系,得出适用于模拟的泊松比和杨氏模量数值,从而为脑组织定义合适的材料属性减少虚拟神经外科手术结果误差,最后施加颅内压作为边界条件,模拟神经外科开颅手术对脑组织的影响。
第四步:利用隐式积分方法优化有限元实时模型和粘弹性优化有限元模型。
第五步:最后根据在颅骨上打开的窗口的大小以及位置的变化情况和术中与术后脑组织膨出高度的变化量,记录全脑在开颅后的变形情况。
问题二的分析
在基于问题一建立有限元模型的基础上,我们不难得出新的术后膨出高度和颅骨打开窗口大小以及位置的变化情况,本文将对此数据进行处理,将缺失值、异常值以及重复值去除。同时,在问题一中我们发现得出的膨出高度数值和颅内压中有部分数据过大或过小,因此,在问题二中本文选取了适中的数值,而不是取所有已知数据进行有限元模型模拟。
第一步:假设没有颅内压对模型的精度没有改进作用,因此本文在问题一建立的有限元模型中,输入上述粒子群算法得出的泊松比和杨氏模量数值,为脑组织定义合适的材料属性减少虚拟神经外科手术结果误差,取消施加颅内压作为边界条件,此外,本文还设置了材料属性的弹性、膨胀和粘性,直接模拟神经外科开颅手术对脑组织的影响。
第二步:根据在颅骨上打开的窗口的大小以及位置的变化情况和术中与术后脑组织膨出高度的变化量,得出术后的颅内压,最后利用得出的术后膨出高度与已知的术后膨出高度的数值和术后颅内压与问题一求出的术后颅内压的数值进行准确性评估,判断假设是否成立。
第三步:计算二者r值,若得出的膨出高度与已知的术后膨出高度和术后颅内压与问题一求出的术后颅内压相关系数r值越趋近于1,则假设成立,问题一和问题二的全脑在开颅后的变形情况有一致;若得出的膨出高度与已知的术后膨出高度和术后颅内压与问题一求出的术后颅内压相关系数r值不趋近于1,则假设不成立,问题一和问题二的全脑在开颅后的变形情况不一致。
模型假设:
在整个求解模型过程中,假设:
1.假设病人颅内无占位性病变。
2.假设获取术前的CT成像结果、术前的颅内压、在颅骨上打开的窗口的大小以及位置、开颅后在颅骨窗口处可观察到的脑组织膨出高度等指标的病人的年龄、性别、体重等不会影响脑组织的力学属性。
3.假设颅内压均匀分布。
4.假设模拟神经外科手术过程中无流体流动(比如脑脊液),集中关注脑组织的固体变形部分。
5.假设个体间生理条件及接受手术的环境相似,个体生理差异及手术环境差异不会对结果有影响。
完整论文缩略图


全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
部分程序代码:
closeall;%清图
clc;%清屏
N=100;%群体粒子个数
D=10;%粒子维数
T=200;%最大迭代次数
c1=1.5;%学习因子1c2=1.5;%学习因子2w=0.8;%惯性权重
Xmax=20;%位置最大值
Xmin=-20;%位置最小值
Vmax=10;%速度最大值
Vmin=-10;%速度最小值
x=rand(N,D)*(Xmax-Xmin)+Xmin;v=rand(N,D)*(Vmax-Vmin)+Vmin;%初始化个体最优位置的最优值
p=x;pbest=ones(N,1);fori=1:Npbest(i)=func(x(i,:));end%初始化全局最优位置和最优值
g=ones(1,D);gbest=inf;fori=1:Nif(pbest(i)<gbest)g=p(i,:);gbest=pbest(i);endendgb=ones(1,T);%按照公式依次迭代直到满足精度或者迭代次数
fori=1:Tforj=1:N%更新个体最优位置和最优值
if(func2(x(j,:))<pbest(j))p(j,:)=x(j,:);pbest(j)=func2(x(j,:));end%更新全局最优位置和最优值
if(pbest(j)<gbest)g=p(j,:);gbest=pbest(j);end%计算动态惯性权重值
w=Wmax-(Wmax-Wmin)*i/T;%跟新位置和速度值
v(j,:)=w*v(j,:)+cl*rand*(p(j,:)-x(j,:))...+c2*rand*(g-x(j,:));
%边界条件处理
forii=1:Dif(v(j,ii)>Vmax)||(v(j,ii)<Vmin)v(j,ii)=rand*(Vmax-Vmin)+Vmin;endif(x(j,ii)>Xmax)||(x(j,ii)<Xmin)x(j,ii)=rand*(Xmax-Xmin)+Xmin;endendend%记录历代全局最优值
gb(i)=gbest;endg;gb(end);figureplot(gb)xlabel('迭代次数');ylabel9('适应度值');
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
相关文章:
2024年认证杯SPSSPRO杯数学建模B题(第一阶段)神经外科手术的定位与导航解题全过程文档及程序
2024年认证杯SPSSPRO杯数学建模 B题 神经外科手术的定位与导航 原题再现: 人的大脑结构非常复杂,内部交织密布着神经和血管,所以在大脑内做手术具有非常高的精细和复杂程度。例如神经外科的肿瘤切除手术或血肿清除手术,通常需要…...
安卓底层相机流的传输方式
这是安卓 相机流的定义 typedef enum {CAM_STREAMING_MODE_CONTINUOUS, /* continous streaming */CAM_STREAMING_MODE_BURST, /* burst streaming */CAM_STREAMING_MODE_BATCH, /* stream frames in batches */CAM_STREAMING_MODE_MAX} cam_streaming_mode_t; 在ca…...
【单链表】(更新中...)
一、 题单 206.反转链表203.移除链表元素 876.链表的中间结点BM8 链表中倒数最后k个结点21.合并两个有序链表 二、题目简介及思路 206.反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 思路简单,但是除了要两个指针进…...
开源堡垒机JumpServer配置教程:使用步骤与配置
开源堡垒机JumpServer配置教程:使用步骤与配置 上一篇文章星哥讲了如何安装JumpServer堡垒机,本篇文章来讲如何配置和使用JumpServer。 安装成功后,通过浏览器访问登录 JumpServer 地址: http://<JumpServer服务器IP地址>:<服务运…...
上门服务小程序开发,打造便捷生活新体验
随着互联网的快速发展,各种上门服务成为了市场的发展趋势,不管是各种外卖、家政、美甲、维修、按摩等等,都可以提供上门服务,人们足不出户就可以满足各种需求,商家也能够获得新的拓展业务渠道,提高整体收益…...
iOS中的类型推断及其在Swift编程语言中的作用和优势
iOS中的类型推断及其在Swift编程语言中的作用和优势 一、iOS中的类型推断 类型推断(Type Inference)是编程语言编译器或解释器自动推断变量或表达式的类型的能力。在支持类型推断的语言中,开发者在声明变量时无需显式指定其类型,…...
工业检测基础-缺陷形态和相机光源选型
缺陷形态与相机选择依据 微小点状缺陷(如微小气泡、杂质颗粒) 相机选择依据: 分辨率:需要高分辨率相机,无论是面阵还是线阵相机,以确保能够清晰地分辨这些微小的点。对于面阵相机,像元尺寸要小&…...
Python100道练习题
Python100道练习题 BIlibili 1、两数之和 num1 20 num2 22result num1 num2print(result)2、一百以内的偶数 list1 []for i in range(1,100):if i % 2 0:list1.append(i) print(list1)3、一百以内的奇数 # 方法一 list1 [] for i in range(1,100):if i % 2 ! 0:lis…...
2024年华中杯数学建模A题太阳能路灯光伏板的朝向设计问题解题全过程文档及程序
2024年华中杯数学建模 A题 太阳能路灯光伏板的朝向设计问题 原题再现 太阳能路灯由太阳能电池板组件部分(包括支架)、LED灯头、控制箱(包含控制器、蓄电池)、市电辅助器和灯杆几部分构成。太阳能电池板通过支架固定在灯杆上端。…...
【JavaWeb后端学习笔记】Java上传文件到阿里云对象存储服务
阿里云对象存储 1、创建阿里云对象存储节点2、上传文件2.1 修改项目配置文件2.2 定义一个Properties类获取配置信息2.3 准备一个alioss工具类2.4 创建注册类,将AliOssUtil 注册成Bean2.5 使用AliOssUtil 工具类上传文件2.6 注意事项 使用阿里云对象存储服务分为以下…...
网盘管理系统
文末获取源码和万字论文,制作不易,感谢点赞支持。 设计题目:网盘管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软…...
learn-(Uni-app)跨平台应用的框架
使用 Vue.js 开发所有前端应用的框架,开发者编写一份代码,可发布到iOS、Android、Web(包括微信小程序、百度小程序、支付宝小程序、字节跳动小程序、H5、App等)等多个平台。 跨平台:Uni-app 支持编译到iOS、Android、W…...
趋同进化与趋异进化的区别及分析方法-随笔03
趋同进化与趋异进化的区别及分析方法 1. 引言 在生物学中,进化是指生物种群随着时间的推移,通过遗传变异、自然选择、基因漂变等机制的作用,逐渐改变其基因型和表型的过程。进化的方式有很多种,其中趋同进化(Converg…...
2024年华中杯数学建模B题使用行车轨迹估计交通信号灯周期问题解题全过程文档及程序
2024年华中杯数学建模 B题 使用行车轨迹估计交通信号灯周期问题 原题再现 某电子地图服务商希望获取城市路网中所有交通信号灯的红绿周期,以便为司机提供更好的导航服务。由于许多信号灯未接入网络,无法直接从交通管理部门获取所有信号灯的数据&#x…...
高效查找秘密武器一:位图
有这样的一个问题: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数 中。 那么我们一般会想到这样做的 1.遍历,时间复杂度O(n) 2.排序(N*logN),…...
自回归模型(AR )
最近看到一些模型使用了自回归方法,这里就学习一下整理一下相关内容方便以后查阅。 自回归模型(AR ) 自回归模型(AR )AR 模型的引入AR 模型的定义参数的估计方法模型阶数选择平稳性与因果性条件自相关与偏自相关函数优…...
Linux内核 -- Linux驱动从设备树dts文件中读取字符串信息的方法
从Linux设备树读取字符串信息 在Linux内核中,从设备树(DTS)中读取字符串信息,通常使用内核提供的设备树解析API。这些API主要位于<linux/of.h>头文件中。 常用函数解析 1. of_get_property 获取设备树中的属性。原型:con…...
图片懒加载+IntersectionObserver
通过IntersectionObserver实现图片懒加载 在JavaScript中,图片懒加载可以通过监听滚动事件和计算图片距离视口顶部的距离来实现 在HTML中,将src属性设置为一个透明的1x1像素图片作为占位符,并将实际的图片URL设置为data-src属性。 <img c…...
MySQL的获取、安装、配置及使用教程
一、获取MySQL 官网地址:https://www.mysql.com MySQL产品:企业版(Enterprise)和社区版(Community)社区版是通过GPL协议授权的开源软件,可以免费使用。企业版是需要收费的商业软件 MySQL版本历史:5.0、5.5、5.6、5.7和8.0(最新版本)两种打包版本:MSI(安装版)和ZI…...
Odoo在线python代码开发
《Odoo在线python代码开发从入门到精通》 从简入手,由浅入深,Odoo开发不求人 以实例促理解,举一反三 从Python到Odoo,低代码开发的正解之路 代码视频讲解与代码注释配合,帮助用户真正理解每一句代码的作用 《Odoo在…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
