2024年认证杯SPSSPRO杯数学建模B题(第一阶段)神经外科手术的定位与导航解题全过程文档及程序

news2025/2/24 2:34:39

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;%学习因子1
 c2=1.5;%学习因子2
 w=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:N
 pbest(i)=func(x(i,:));
 end
 %初始化全局最优位置和最优值
g=ones(1,D);
 gbest=inf;
 fori=1:N
 if(pbest(i)<gbest)
 g=p(i,:);
 gbest=pbest(i);
 end
 end
 gb=ones(1,T);
 %按照公式依次迭代直到满足精度或者迭代次数
fori=1:T
 forj=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:D
 if(v(j,ii)>Vmax)||(v(j,ii)<Vmin)
 v(j,ii)=rand*(Vmax-Vmin)+Vmin;
 end
 if(x(j,ii)>Xmax)||(x(j,ii)<Xmin)
 x(j,ii)=rand*(Xmax-Xmin)+Xmin;
 end
 end
 end
 %记录历代全局最优值
gb(i)=gbest;
 end
 g;
 gb(end);
 figure
 plot(gb)
 xlabel('迭代次数');
 ylabel9('适应度值');
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

Jest timers

引入 我们自己先写一个定时器,在这里,这个测试是一定会通过的,因为他一旦传入callback,就算是完成了,而不是在意你的运行结果了,而且你的定时器还有几秒呢 export const timer (fn) > {setTimeout(() > {fn()}, 3000) }//test import {timer} from "./timer"…

数据链路层(四)---PPP协议的工作状态

1 PPP链路的初始化 通过前面几章的学习&#xff0c;我们学了了PPP协议帧的格式以及组成&#xff0c;那么对于使用PPP协议的链路是怎么初始化的呢&#xff1f; 当用户拨号上网接入到ISP后&#xff0c;就建立起了一条个人用户到ISP的物理链路。这时&#xff0c;用户向ISP发送一…

UE5 C++ 不规则按钮识别,复选框不规则识别 UPIrregularWidgets

插件名称&#xff1a;UPIrregularWidgets 插件包含以下功能 你可以点击任何图片&#xff0c;而不仅限于矩形图片。 UPButton、UPCheckbox 基于原始的 Button、Checkbox 扩展。 复选框增加了不规则图像识别功能&#xff0c;复选框增加了悬停事件。 欢迎来到我的博客 记录学习过…

Latex转word(docx)或者说PDF转word 一个相对靠谱的方式

0. 前言 投文章过程中总会有各种各样的要求&#xff0c;其中提供word格式的手稿往往是令我头疼的一件事。尤其在多公式的文章中&#xff0c;其中公式转换是一个头疼的地方&#xff0c;还有很多图表&#xff0c;格式等等&#xff0c;想想就让人头疼欲裂。实践中摸索出一条相对靠…

Leetcode打卡:棋盘上有效移动组合的数目

执行结果&#xff1a;通过 题目&#xff1a;2056 棋盘上有效移动组合的数目 有一个 8 x 8 的棋盘&#xff0c;它包含 n 个棋子&#xff08;棋子包括车&#xff0c;后和象三种&#xff09;。给你一个长度为 n 的字符串数组 pieces &#xff0c;其中 pieces[i] 表示第 i 个棋子的…

Day5:生信新手笔记 — R语言基本语法

一、数据类型 &#xff08;重点只有两个&#xff0c;剩下的不看&#xff09; 1.1 向量&#xff08;vector&#xff09; 矩阵&#xff08;Matrix&#xff09; 数组&#xff08;Array&#xff09; 1.2 数据框&#xff08;Data frame&#xff09; x<- c(1,2,3) #常用的向…

【Win11的Bug】无法在文件夹中创建txt文件

问题 右键只能新建文件夹 , 无法新建txt文本文档 解决办法 将注册表中的一个参数从1改为0即可. 具体内容: WinR输入regeditHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 将1改为0(下面这张图我已改过) 4.然后重新启动电脑即可 小技…

word如何快速创建目录?

文章目录 1&#xff0c;先自己写出目录的各级标题。2、选中目标标题&#xff0c;然后给它们编号3、给标题按照个人需求开始分级4、插入域构建目录。4.1、利用快捷键插入域构建目录4.2、手动插入域构建目录 听懂掌声&#xff01;学会了吗&#xff1f; 前提声明&#xff1a;我在此…

Java程序调kubernetes(k8s1.30.7)core API简单示例,并解决403权限验证问题,即何进行进行权限授权以及验证

简单记录问题 一、问题描述 希望通过Java程序使用Kubernetes提供的工具包实现对Kubernetes集群core API的调用&#xff0c;但是在高版本上遇见权限验证问题4xx。 <dependency><groupId>io.kubernetes</groupId><artifactId>client-java</artifact…

合合信息扫描全能王线下体验活动:科技与人文的完美交融

文章目录 前言签到欢迎仪式产品体验智能高清滤镜去除透字效果照片高清修复 破冰行动会议感受 前言 作为合合信息旗下扫描全能王的忠实粉丝&#xff0c;上周&#xff0c;我很荣幸参与了扫描全能王“扫出你的能量buff”快闪活动及技术交流会。这次活动的不仅让我对这款强大的文档…

【工具变量】上市公司企业所在地城市等级直辖市、副省级城市、省会城市 计划单列市(2005-2022年)

一、包含指标&#xff1a; 股票代码 股票代码 股票简称 年份 所属城市 直辖市&#xff1a;企业所在地是否属于直辖市。1是&#xff0c;0否。 副省级城市&#xff1a;企业所在地是否属于副省级城市。1是&#xff0c;0否。 省会城市&a…

Svn如何切换删除账号

记录Svn清除切换账号 1.首先打开小乌龟的设置如下图 打开设置后单击已保存数据&#xff0c;然后选择清除 接上图选择清除后&#xff0c;就可以打勾选择清除已保存的账号&#xff0c;我们再次检出的就可以切换账号了 &#x1f449;总结 本次记录Svn清除切换账号 如能帮助到你…

ASP.NET Core SignalR 入门

一、简介 &#x1f4e2; SignalR的主要功能是提供服务器和客户端之间的实时通信。当连接的客户端变得可用时&#xff0c;服务器可以立即向其推送内容&#xff0c;而不是等待客户端发起请求。这种功能特别适合需要实时更新数据的应用场景&#xff0c;如聊天应用、实时数据分析、…

分布式光伏电站如何实现监控及集中运维管理?

安科瑞戴婷 Acrel-Fanny 前言 今年以来&#xff0c;在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速&#xff0c;装机容量均大幅度增长&#xff0c;新能源发电已经成为新型电力系统重要的组成部分&#xff0c;同时这也导致新型电力系统比传统的电…

2022-12-4----Android11(H713m)---- WiFi驱动添加写入mac号补丁

一、问题 用全志的写号工具&#xff0c;写入wifi_mac&#xff0c;设置下边不生效 二、分析 因为我们的WiFi不是用全志平台的&#xff0c;也不是用全志集成好的&#xff0c;而是用希微这家第三方的WiFi/BT&#xff0c;所以该驱动还没完善。 三、修改前的准备 用写号工具写号…

Linux笔记---进程:进程替换

1. 进程替换的概念 进程替换是指在一个正在运行的进程中&#xff0c;用一个新的程序替换当前进程的代码和数据&#xff0c;使得进程开始执行新的程序&#xff0c;而不是原来的程序。 这种技术通常用于在不创建新进程的情况下&#xff0c;改变进程的行为。 我们之前谈到过for…

Linux 权限管理:用户分类、权限解读与常见问题剖析

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; &#x1f6a9;用通俗易懂且不失专业性的文字&#xff0c;讲解计算机领域那些看似枯燥的知识点&#x1f6a9; 目录 &#x1f4af;L…

【开源】A060-基于Spring Boot的游戏交易系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…

rabbitmq 安装延时队列插件rabbitmq_delayer_message_exchange(linux centOS 7)

1.插件版本 插件地址&#xff1a;Community Plugins | RabbitMQ rabbitmq插件需要对应的版本&#xff0c;根据插件地址找到插件 rabbitmq_delayer_message_exchange 点击Releases 因为我rabbitmq客户端显示的版本是&#xff1a; 所以我选择插件版本是&#xff1a; 下载 .ez文…

elementui table滚动分页加载

文章目录 概要 简化的实现示例&#xff1a; 小结 概要 在使用 Element UI 的 Table 组件时&#xff0c;如果需要实现滚动分页加载的功能&#xff0c;可以通过监听 Table 的滚动事件来动态加载更多数据。 简化的实现示例&#xff1a; <template><el-table ref"…