所得税交纳点选址的数学模型Word文件下载.docx
《所得税交纳点选址的数学模型Word文件下载.docx》由会员分享,可在线阅读,更多相关《所得税交纳点选址的数学模型Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
◆第一步:
模型的建立
根据假设一,每个纳税点集中在每个区的中心,可能的位置有12种,则三个纳税点的组合至多有=12*11*10/6=220个。
可将问题参数化。
参数的假定:
①i、j、k——所选纳税点的区号;
(共有=220种选择方案)
②m——区号数;
(m=1、2、3…12)
③——m区的居民数,单位为千人;
④、、——分别表示m区到i、j、k区(即所选纳税点)的最小距离;
⑤=Min[,,]即m区到三个纳税点的最小距离;
则问题可以表述为:
求目标函数:
Min[Z(i,j,k)]=
◆第二步:
模型的求解(考虑用穷举法)
一、距离矩阵的建立
1、i=1,j=2,k=3(即所选的三个纳税点为1区,2区,3区);
(1)m=1,2,3时,显然,=0;
=0;
=0(即纳税点所在居民到本区纳税的距离最小,距离为0)
(2)m=4时,由题图显然:
=55(4——3——2——1);
=40(4——3——2);
=18(4——3);
=min(,,)==18;
……
(10)m=12时,由题图显然:
=67(12——9——5——1);
=61(12——9——3——2);
=39(12——9——3);
=min(,,)==39;
2、i=1,j=2,k=4(即所选的三个纳税点为1区,2区,4区);
(1)m=1,2,4时,显然,=0;
=0(即纳税点所在居民到本区纳税的距离最小,距离为0。
(2)m=3时,由题图显然:
=37(3——2——1);
=22(3——2);
=18(3——4);
=min(,,)==18;
(10)m=12时,由题图显然(以此类推):
……
以此类推,可得距离矩阵如下:
二、距离与人数的加权
与人数加权后的距离矩阵如下:
由公式Min[Z(i,j,k)]=结合与人数加权后的距离矩阵可得结果为:
加权后的最小距离和为2438;
在1,6,和11设置纳税点为最佳。
三、将上述求解过程程序化(以Mathlab为主,C语言程序、Lingo的程序及运行结果见附录)
Mathlab思考过程及程序如下:
第一步,用标号法求出每一个顶点vi至其它各个顶点vj的最短路径长度dij(i,j=1,2,…,12),并将其写成如下距离矩阵:
ShortDistance=
第二步,以各顶点的载荷(人口数)加权,求每一个顶点至其它各个顶点的最短路径长度的加权和,并将其写成如下距离矩阵:
ShortPath=
第三部,用穷举法任选三点,求其他九点中的任意一点到该三点的加权距离的最短距离的加权和,MATLAB中可用矩阵依次求出所有可能的结果,并标记最短距离SDL及最优第三点i,j,k.
第四步,输出,shortpath,SDL及i,j,k.
M=inf;
A=[15101218524111613221920];
a=[0,15,M,M,24,M,18,M,M,M,M,M;
0,0,22,M,M,M,M,M,M,M,M,M;
zeros(1,3),18,16,M,M,M,20,M,M,M;
zeros(1,4),M,12,M,M,M,M,M,M;
zeros(1,5),M,M,12,24,M,M,M;
zeros(1,6),M,M,12,M,M,22;
zeros(1,7),15,M,22,M,M;
zeros(1,8),30,M,25,M;
zeros(1,9),M,19,19;
zeros(1,10),19,M;
zeros(1,11),21;
zeros(1,12)];
a=a+a'
;
fori=1:
length(a)
pb(1:
length(a))=0;
pb(i)=1;
d(1:
length(a))=M;
d(i)=0;
temp=i;
whilesum(pb)<
tb=find(pb==0);
d(tb)=min(d(tb),d(temp)+a(temp,tb));
tmpb=find(d(tb)==min(d(tb)));
temp=tb(tmpb
(1));
pb(temp)=1;
end;
Shortdistance(i,:
)=d;
ShortPath(i,:
)=d.*A;
%display¼
Ó
È
¨
Ç
°
Shortdistance;
ShortPath
SD=[];
SDL=10000;
k=1;
l=1;
p=1;
q=1;
x=0;
y=0;
z=0;
1:
12
forj=1:
fork=1:
if(k~=i&
k~=j&
i~=j)
SD=0;
forl=1:
12
if(l~=i&
l~=j&
l~=k)
SD=[SDmin([ShortPath(i,l)ShortPath(j,l)ShortPath(k,l)])];
end
SDL1=sum(SD);
if(SDL1<
SDL)
SDL=SDL1;
x=i;
y=j;
z=k;
end
TheShortestdistance=SDL
displayThepointchosed;
disp([xyz])
Mathlab运行结果截图如下:
模型评价
模型的优点:
思路比较简单、计算比较方便,只需用计算机软件编程辅助即可。
将问题参数化、公式化,便于理解。
(g;
e!
^(v$[(\6U8R7m
模型的缺点:
本模型是在一系列的假设中进行的,并没有充分考虑实际过程中出现的问题。
比如,首先图上的任何两点之间不可能都能以直线的路径行走;
其次,居民选择最佳纳税点的考虑因素不仅仅是距离长短,还可能和出行是否方便有关。
模型的改进:
更进一步,如果时间允许的话,我们可以到指定城市实地考察,调查该城市居民人数的稳定分布情况,道路的便捷程度等。
我们也可以编制个一个决策软件:
只要输入各条道路长,各个区的人口数,软件可以给决策者提供一个税收点选址的较优地址。
模型的推广:
此题归属于运筹学问题——线性规划选址问题。
本题是在有限个离散点中选取加权距离最短的优化问题。
例如工厂选址,机场的航班连接,物流中心的安排问题等。
以此题为基础,考虑参数个数的变化对此模型的影响(如道路难度系数,出行费用等等);
将此题的离散点连续化,建立更完备的模型体系。
附录一:
C语言程序和运行结果截图
C语言程序如下:
#include<
stdio.h>
voidfloyd(int(*dist)[13],intn)
{inti,j,k;
for(k=1;
k<
n;
k++)
{for(i=1;
i<
i++)
{for(j=1;
j<
i;
j++)
{if(((i!
=j)&
&
(dist[i][k]*dist[j][k]!
=0))&
((dist[i][k]+dist[j][k]<
dist[i][j])||(dist[i][j]==0)))
{
dist[i][j]=dist[i][k]+dist[k][j];
dist[j][i]=dist[i][j];
}
}
}
intmin(intx,inty,intz)
{intd;
if(x<
y)d=x;
elsed=y;
if(d<
z)returnd;
elsereturnz;
voidmain()
{intM=0,b[13][13]={0},
i,j,k,m,sum[1500]={0},p=1,q=1,r=1,n=0,summin,
a[13][13]={{0},
{0,0,15,M,M,24,M,18,M,M,M,M,M},
{0,15,0,22,M,M,M,M,M,M,M,M,M},
{0,M,22,0,18,16,M,M,M,20,M,M,M},
{0,M,M,18,0,M,12,M,M,M,M,M,M},
{0,24,M,16,M,0,M,M,12,24,M,M,M},
{0,M,M,M,12,M,0,M,M,12,M,M,22},
{0,18,M,M,M,M,M,0,15,M,22,M,M},
{0,M,M,M,M,12,M,15,0,30,M,25,M},
{0,M,M,20,M,24,12,M,30,0,M,19,19},
{0,M,M,M,M,M,M,22,M,M,0,19,M},
{0,M,M,M,M,M,M,M,25,19,19,0,21},
{0,M,M,M,M,M,22,M,M,19,M,21,0},
},
c[13]={0,15,10,12,18,5,24,11,16,13,22,19,20};
sum[0]=10000;
summin=sum[0];
floyd(a,13);
printf("
thedistancematrixis:
\n"
);
for(i=1;
13;
{for(j=1;
%4d"
a[i][j]);
printf("
}
for(i=1;
for(j=1;
k++)
if(i!
=j&
j!
=k&
k!
=i)
{n++;
for(m=1;
m<
m++)
sum[n]=sum[n]+c[m]*min(a