2019年数维杯国际大学生数学建模A题医疗系统的现状与优化求解全过程文档及程序

328 篇文章 32 订阅
15 篇文章 2 订阅

2020年数维杯国际大学生数学建模

A题 医疗系统的现状与优化

问题重述:

  背景
  随着我国经济社会的快速发展和老龄化趋势,对医院健康服务的需求不断增加。同时,随着工业化和城市化进程的加快,生态和食品安全面临着不同程度的挑战。这些总体发展也给医疗卫生工作带来了一系列新的挑战。
  医疗需求的快速增长和多元化发展,导致民营医院数据增加。目前,民营医院和公立医院已经形成了不同层次的竞争与合作。对于公立医院来说,如何满足日益增长的居民全民医保需求,全面提高居民对医院的需求,是主要工作方向。对于民营医院来说,如何有效满足公立医院的高峰需求和特殊疾病的需求,是他们努力的主要方向。

  任务
  任务一:利用国家统计局居民收入、人口年龄结构、经济发展水平等相关统计分析数据,对中国老龄化趋势和居民医疗需求做出合理预测。

  任务2:以某省为例,计划分析本省未来最常见的疾病,为省内各大公立医院的整体发展提供建议。

  任务3:假设不同类型的患者可能需要在医院进行不同的检查,不同的检查项目可能分布在不同的位置,队列中人员的数据可能存在较大差距。针对这类排队问题,我们将提出一种常见的排队理论及其相关的最优排队方法。

  任务4:结合民营医院与公立医院之间复杂的合作与竞争,提出多家医院之间最优的合作与竞争策略。

  任务五:结合前几个问题,为相关医疗管理部门撰写一份建议书,为其编制“十四五”规划提供参考。

整体求解过程概述(摘要)

  在任务1中,建立GM(1,1)模型来预测中国的老龄化趋势。我们针对居民的医疗需求构建多元线性回归模型,并试图找出影响居民医疗需求的因素。使用 GM(1,1)模型对所有影响因素的数据进行预测,根据多元线性回归模型与影响因素的预测数据预测医疗需求的趋势。中国的老龄化趋势和医疗需求在未来10年有快速增长。

  在任务2中,我们以与省同级的澳门为例,选取2007-2018年专科门诊患者数据,代表各类常见病患者数据。本文利用GM(1,1)模型预测不同类型的疾病并分析其未来的增长趋势。根据预测数据,内科疾病和理疗疾病最为常见,我们对公立医院内部结构提出了合理化建议。

  在任务3中,我们构建了排队理论模型来解决排队时间过长的问题,以提高患者排队检查的效率。排队理论模型中的患者到达率根据任务 2 的就诊规模确定。我们限制排队的平均轮候时间,以决定分配给不同类型疾病的科室的不同检查站,以便医院提高检查效率。例如,当内科有5个检查站时,每个人的平均排队时间约为2分钟。

  在任务4中,民营医院和民营医院之间存在着复杂的竞争与合作,他们关注的患者需求不同。任务四要求我们在这种背景下,制定多家医院之间的最优合作和竞争策略。为了解决这个问题,本文首先对公立医院和民营医院进行了SWOT分析,并从人才、技术、资源等方面提出了竞争与合作的策略。

  在任务5中,本文基于对中国医疗需求趋势的研究,根据城乡差异以及公立医院与私立医院的差异,提出了以下建议。完善老年人医疗需求体系,调整未来内科、理疗病等常见疾病的医疗资源也是必要的。

模型假设:

  1.假设医院检查站一次只检查一名患者。
  2.假设每次检查的检查时间是独立的。
  3.假设患者到达医院的时间是独立的。
  4.假设患者检查排队过程因素的分配接近实际情况。

问题分析:

  分析任务一
  任务1要求我们利用国家统计局的相关统计分析数据,如居民收入、人口年龄结构、经济发展水平等,建立一个模型,对中国老龄化趋势和居民的医疗需求做出合理的预测。为了预测中国的老龄化趋势,我们建立了GM(1,1)模型。它考虑以前的数据来预测中国老龄化趋势的未来数据。此外,我们针对居民的医疗需求建立了多元线性回归模型,并试图找出影响居民医疗需求的因素。使用 GM(1,1) 模型预测所有影响因素的数据,根据多元线性回归模型和影响因素的预测数据,可以预测医疗需求的趋势。

  任务二分析
  任务2要求我们分析省内未来最常见的疾病,以某省为例,为省内各大公立医院的整体发展提供建议。本文以与省同级的澳门为例,探讨未来最常见的疾病。本文根据模型的完整性和数据的可用性,选取了澳门统计局公布的2007年至2018年专科门诊病人数据。各专科门诊数据代表各种常见病患者数据。因此,本文利用GM(1,1)模型预测不同类型的疾病并分析其未来的增长趋势。根据对不同类型疾病的预测,我们可以判断最常见的疾病,并对公立医院的内部结构提出合理的建议。

  任务三分析
  任务3要求我们为排队问题找出相关的最优排队方法。为了提高患者排队检查的效率,本文通过排队理论模型解决了排队时间过长的问题。在任务2澳门门诊数据数据的基础上,分析不同常见病的就诊规模,根据就诊规模确定排队理论模型中的患者到诊率。为了解决排队时间过长的问题,本文限制了排队过程中的平均等待时间。为不同类型疾病的科室分配不同的检查点,以满足不同类型患者的检查需求,使医院提高检查效率。

  任务四分析
  在问题的背景下,民营医院和民营医院之间存在着复杂的竞争与合作,他们关注的患者需求是不同的。因此,任务四要求我们在这种背景下,在多家医院之间制定最优的合作和竞争策略。为了解决这个问题,本文首先对公立医院和民营医院进行了SWOT分析,然后从人才、技术、资源等方面提出了竞争和合作策略。

  任务五分析
  任务5要求我们向相关医疗管理部门撰写一份提案,为其编制“十四五”规划提供参考。本文在研究我国医疗需求发展趋势的基础上,对我国医疗卫生提出了以下建议:一是建立覆盖城乡居民的基本医疗卫生体系,缓解就医难贵问题。二是针对城乡医疗需求差异,合理规划医疗资源配置,缩小城乡差距和农村地区。第三,面对老龄化发展趋势,推动医疗产业与养老产业融合发展,可以完善老年人医疗保障体系。最后,要统筹公立医院和民营医疗机构的医疗资源,建立有效的医疗运行体系,提高医疗卫生服务效率。在未来国民健康发展的趋势下,内科、理疗疾病、外科疾病规模较大。因此,应合理调整医疗资源,培养医务人员,为今后的常见病腾出更多资源。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

文档共43页
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:

部分Matlab程序如下:
问题一
function [px0,rel_err,r,e0]=gm11_A1(x0,number)
%[px0,ab,rel]=gm11(x0,number)
x0=[7.6,7.7,7.9,8.1,8.3,8.5,8.9,9.1,9.4,9.7,10.1,10.465,10.8,11.4,11.9];
 
if nargin==1 
number=max(size(x0));
end
n=max(size(x0)); 
x1=zeros(size(x0));
for k=1:n
for i=1:k
x1(k)=x1(k)+x0(i); 
end
end
z=zeros(size(x0));
for k=2:n
z(k)=0.5*(x1(k)+x1(k-1)); 
end
y=x0';
y(1)=[];
B(:,1)=-z';
B(:,2)=1;
B(1,:)=[];
ab=inv(B'*B)*B'*y; 
a=ab(1);
b=ab(2);
px0(1)=x0(1);
X1(1)=x0(1);
n = n + 9;
for k=1:n
X1(k+1)=(x0(1)-b/a)*exp(-(a)*k)+b/a;
end
px0(1)=x0(1);
for k=1:n
px0(k+1)=X1(k+1)-X1(k);
end
disp('1');
disp(px0(2:n+1));
n = n - 9;
for k=1:n
e0(k)=px0(k)-x0(k);
end
epsilon=e0./x0; 
epsilon=abs(epsilon);
rel_err=sum(epsilon)/(n-1);
disp(rel_err);
p=0.5;
max_err=max(abs(e0));
r=0;
for k=1:n
r=r+p*max_err/(abs(e0(k))+p*max_err);
end
r=r/n; 
str = sprintf( ' %g%% ',r*100);
disp(str);
aver_e0=sum(e0)/n; 
aver_x0=sum(x0)/n; 
s1=sqrt(sum((x0-aver_x0).^2)/n); 
s2=sqrt(sum((e0-aver_e0).^2)/n); 
c=s2/s1; 
s0=0.6745*s1;
m=0;
for k=1:n
if abs(e0(k)-aver_e0)<s0
m=m+1;
end
end
P=m/n; 
str = sprintf( ' p=%g c=%g ',P,c);
disp(str);
if P>0.95&c<0.35
disp('good');
else if P>0.8&c<0.5
disp('agree');
else if P>0.7&c<0.65
disp('pass');
else disp('don’t pass');
end
end
end
fprintf('\n');
end
问题二
function [px0,rel_err,r,e0]=gm11_A2(x0,number)
%[px0,ab,rel]=gm11(x0,number)
x11=[180229,175379,178068,192376,223579,212108,216212,234100,279804,276412,284870];% 
x22=[106040,124811,146499,157825,160257,180832,183397,216054,216312,233848,247041];% 
x33=[107308,104549,114415,123302,123569,129762,141524,157057,174511,188546,197020];% 
x44=[94515,103199,113458,115032,112698,114935,124870,127937,126143,132331];% 
x55=[94366,91107,89196,96560,100132,96509,102566,97917,95070,94530,99118];% 
x66=[63088,62949,69245,72815,75003,77771,82173,85066,88769,97699,101268];% 
x77=[57696,60312,65476,70516,73192,74715,76083,78623,78896,84289];% 
x88=[60141,59604,61709,63858,64360,64734,66947,68563,69616,73665,78042];% 
x99=[31455,34732,35497,37151,38384,41391,45116,44560,50086,52068,58915];%
x100=[38459,36005,35531,37084,36108,42825,44033,47042,45305,47987,47715];%
x111=[26222,26459,29689,29955,30167,31347,32540,33569,33574,35281];% 
for T = 1:11
 
x11=[180229,175379,178068,192376,223579,212108,216212,234100,279804,276412,284870]; 
x22=[106040,124811,146499,157825,160257,180832,183397,216054,216312,233848,247041]; 
x33=[107308,104549,114415,123302,123569,129762,141524,157057,174511,188546,197020]; 
x44=[94515,103199,113458,115032,112698,114935,124870,127937,126143,132331]; 
x55=[94366,91107,89196,96560,100132,96509,102566,97917,95070,94530,99118]; 
x66=[63088,62949,69245,72815,75003,77771,82173,85066,88769,97699,101268]; 
x77=[57696,60312,65476,70516,73192,74715,76083,78623,78896,84289]; 
x88=[60141,59604,61709,63858,64360,64734,66947,68563,69616,73665,78042];% 
x99=[31455,34732,35497,37151,38384,41391,45116,44560,50086,52068,58915];%
x100=[38459,36005,35531,37084,36108,42825,44033,47042,45305,47987,47715];%
x111=[26222,26459,29689,29955,30167,31347,32540,33569,33574,35281];% 
if T == 1
 x0=zeros(size(x11));
 fprintf('1\n');
 x0 = x11;
end
if T == 2
 x0=zeros(size(x22));
 fprintf('2\n');
 x0 = x22;
end
if T==3
 x0=zeros(size(x33));
 fprintf('3\n');
 x0 = x33;
end
if T==4
 x0=zeros(size(x44));
 fprintf('4\n');
 x0 = x44;
end
if T==5
 x0=zeros(size(x55));
 fprintf('5\n');
 x0 = x55;
end
if T==6
 x0=zeros(size(x66));
 fprintf('6\n');
 x0 = x66;
end
if T==7
 x0=zeros(size(x77));
 fprintf('7\n');
 x0 = x77;
end
if T==8
 x0=zeros(size(x88));
 fprintf('8\n');
 x0 = x88;
end
if T==9
 x0=zeros(size(x99));
 fprintf('9\n');
 x0 = x99;
end
if T==10
 x0=zeros(size(x100));
 fprintf('10\n');
 x0 = x100;
end
if T==11
 x0=zeros(size(x111));
 fprintf('11\n');
 x0 = x111;
end
 
if nargin==1 
number=max(size(x0));
end
n=max(size(x0)); 
x1=zeros(size(x0));
for k=1:n
for i=1:k
x1(k)=x1(k)+x0(i);
end
end
z=zeros(size(x0));
for k=2:n
z(k)=0.5*(x1(k)+x1(k-1)); 
end
y=x0';
y(1)=[];
B(:,1)=-z';
B(:,2)=1;
B(1,:)=[];
ab=inv(B'*B)*B'*y; 
a=ab(1);
b=ab(2);
px0(1)=x0(1);
X1(1)=x0(1);
n = n + 9;
for k=1:n
X1(k+1)=(x0(1)-b/a)*exp(-(a)*k)+b/a;
end
px0(1)=x0(1);
for k=1:n
px0(k+1)=X1(k+1)-X1(k);
end
disp(px0(2:n+1));
n = n - 9;
for k=1:n
e0(k)=px0(k)-x0(k);
end
epsilon=e0./x0; 
epsilon=abs(epsilon);
rel_err=sum(epsilon)/(n-1);
disp(rel_err);
p=0.5;
max_err=max(abs(e0));
r=0;
for k=1:n
r=r+p*max_err/(abs(e0(k))+p*max_err);
end
r=r/n; 
str = sprintf( ' %g%% ',r*100);
disp(str);
aver_e0=sum(e0)/n;
aver_x0=sum(x0)/n;
s1=sqrt(sum((x0-aver_x0).^2)/n);
s2=sqrt(sum((e0-aver_e0).^2)/n);
c=s2/s1; 
s0=0.6745*s1;
m=0;
for k=1:n
if abs(e0(k)-aver_e0)<s0
m=m+1;
end
end
P=m/n; 
str = sprintf( ' p=%g c=%g ',P,c);
disp(str);
if P>0.95&c<0.35
disp('good');
else if P>0.8&c<0.5
disp('agree');
else if P>0.7&c<0.65
disp('pass');
else disp('don’t pass');
end
end
end
fprintf('\n');
clear all;
end
clear all;
end
问题三
#include<stdio.h>
#include<math.h>
int main()
{
float arr_lambda[11];
int i;
arr_lambda[0] = 0.2; //内科到达率
float hospital[11] = {0.21,0.18,0.14,0.1,0.07,0.07,0.06,0.06,0.04,0.03,0.03};
for(i = 1;i<=10;i++){
arr_lambda[i] = (arr_lambda[0] / 0.21) * hospital[i];
printf("%f\n",arr_lambda[i]);
}
}
function[num,Lq , L , W , Wq] = A_3(s , mu , lambda)
clc;
ii =9;
ss=[1,2,3,4,5,6,7,8];
arr_lambda = 
[0.2,0.171429,0.13333,0.095238,0.066667,0.066667,0.057143,0.057143,0.038095,0.028571,0.028571];
for iii = 1:11
 lambda = arr_lambda(iii);
 fprintf(' %f',iii);
for i = 1:8
 s = ss(i);
mu=0.067; 
ro=lambda/mu;
ros=ro/s;
sum1=0;
for j=0:(s-1) 
 sum1=sum1+ro.^j/factorial(j); 
end
sum2=ro.^s/factorial(s)/(1-ros);
p0=1/(sum1+sum2);
p=ro.^s.*p0/factorial(s)/(1-ros);
Lq=p.*ros/(1-ros);
L=Lq+ro;
W=L/lambda;
Wq=Lq/lambda;
if (Wq>0) &&(Wq<5)
 
 if (s<ii)
 fprintf(' %d\n',s)
 fprintf(' %5.2f \n',L)
 fprintf(' %5.2f \n',Lq)
 fprintf(' \n',W)
 fprintf(' \n',Wq)
 end
 ii = s;
else
 fprintf(';')
end
fprintf('\n')
end 
end
程序量太大了 余下的问题程序不在这里给出了
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值