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('适应度值');