1、第一步:模型的建立根据假设一,每个纳税点集中在每个区的中心,可能的位置有12种,则三个纳税点的组合至多有=12*11*10/6=220个。可将问题参数化。参数的假定: i、j、k所选纳税点的区号;(共有=220种选择方案) m区号数;(m=1、2、312)m区的居民数,单位为千人;、分别表示m区到i、j、k区(即所选纳税点)的最小距离;=Min,即m区到三个纳税点的最小距离;则问题可以表述为:求目标函数:MinZ(i,j,k)= 第二步:模型的求解(考虑用穷举法)一、距离矩阵的建立1、i=1,j=2,k=3(即所选的三个纳税点为1区,2区,3区);(1)m=1,2,3时,显然, =0; =0;
2、 =0(即纳税点所在居民到本区纳税的距离最小,距离为0)(2)m=4时,由题图显然:=55(4321);=40(432);=18(43);=min(,)=18;(10) m=12时,由题图显然: =67(12951); =61(12932); =39(1293); =min(,)=39; 2、 i=1,j=2,k=4 (即所选的三个纳税点为1区,2区,4区);(1) m=1,2,4时,显然, =0; =0(即纳税点所在居民到本区纳税的距离最小,距离为0。(2)m=3时,由题图显然:=37(321); =22(32); =18(34); =min(,)=18;(10) m=12时,由题图显然(以
3、此类推): 以此类推,可得距离矩阵如下:二、距离与人数的加权与人数加权后的距离矩阵如下:由公式MinZ(i,j,k)=结合与人数加权后的距离矩阵可得结果为:加权后的最小距离和为2438;在1,6,和11 设置纳税点为最佳。三、 将上述求解过程程序化(以Math lab为主,C语言程序、Lingo 的程序及运行结果见附录)Math lab思考过程及程序如下:第一步,用标号法求出每一个顶点vi至其它各个顶点vj的最短路径长度dij(i,j 1,2,12),并将其写成如下距离矩阵:ShortDistance= 第二步,以各顶点的载荷(人口数)加权,求每一个顶点至其它各个顶点的最短路径长度的加权和,并
4、将其写成如下距离矩阵:ShortPath=第三部,用穷举法任选三点,求其他九点中的任意一点到该三点的加权距离的最短距离的加权和,MATLAB中可用矩阵依次求出所有可能的结果,并标记最短距离SDL及最优第三点i,j,k.第四步,输出,shortpath,SDL及i,j,k.M=inf;A=15 10 12 18 5 24 11 16 13 22 19 20;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、,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;for i=1:length(a)pb(1:length(a)=0;pb(i)=1; d(1:length(a)=M;d(i)=0;temp=i;while sum(pb) tb=find(pb=0); d(tb)=min(d(tb),d(temp)+a(temp,tb); tmpb
6、=find(d(tb)=min(d(tb); temp=tb(tmpb(1); pb(temp)=1;end;Shortdistance(i,:)=d;ShortPath(i,:)=d.*A;%display Shortdistance;ShortPathSD=;SDL=10000;k=1;l=1;p=1;q=1;x=0;y=0;z=0;1:12 for j=1: for k=1: if(k=i&k=j&i=j) SD=0; for l=1:12 if(l=i&l=j&l=k) SD=SD min(ShortPath(i,l) ShortPath(j,l) ShortPath(k,l); en
7、d SDL1=sum(SD); if(SDL1SDL) SDL=SDL1; x=i;y=j;z=k;endTheShortestdistance=SDLdisplay Thepointchosed;disp(x y z)Math lab运行结果截图如下:模型评价模型的优点:思路比较简单、计算比较方便,只需用计算机软件编程辅助即可。将问题参数化、公式化,便于理解。( g; e! ( v$ ( 6 U8 R7 m 模型的缺点:本模型是在一系列的假设中进行的,并没有充分考虑实际过程中出现的问题。比如,首先图上的任何两点之间不可能都能以直线的路径行走;其次,居民选择最佳纳税点的考虑因素不仅仅是距离长短
8、,还可能和出行是否方便有关。模型的改进:更进一步,如果时间允许的话,我们可以到指定城市实地考察,调查该城市居民人数的稳定分布情况,道路的便捷程度等。我们也可以编制个一个决策软件:只要输入各条道路长,各个区的人口数,软件可以给决策者提供一个税收点选址的较优地址。模型的推广:此题归属于运筹学问题线性规划选址问题。本题是在有限个离散点中选取加权距离最短的优化问题。例如工厂选址,机场的航班连接,物流中心的安排问题等。以此题为基础,考虑参数个数的变化对此模型的影响(如道路难度系数,出行费用等等);将此题的离散点连续化,建立更完备的模型体系。附录一:C语言程序和运行结果截图C语言程序如下:#include
9、void floyd(int (*dist)13,int n) int i,j,k; for(k=1;kn;k+) for(i=1;ii+) for(j=1;ji;j+) if(i!=j)&(distik*distjk!=0)& (distik+distjkdistij)|(distij = 0) distij = distik + distkj; distji = distij; int min(int x,int y,int z) int d; if(xy) d=x; else d=y; if(dz) return d; else return z;void main() int M=0,
10、b1313=0, i,j,k,m,sum1500=0,p=1,q=1,r=1,n=0,summin, a1313=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,
11、 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, , c13=0,15,10,12,18,5,24,11,16,13,22,19,20; sum0=10000; summin=sum0; floyd(a,13); printf(the distance matrix is:n); for( i=1;13; for( j=1;%4d,aij); printf( for(i=1; for(j=1;k+) if(i!=j&j!=k&k!=i) n+; for(m=1;mm+) sumn=sumn+cm*min(a
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1