学校选址问题.doc

学校选址问题.doc

ID:57612209

大小:55.50 KB

页数:6页

时间:2020-08-29

学校选址问题.doc_第1页
学校选址问题.doc_第2页
学校选址问题.doc_第3页
学校选址问题.doc_第4页
学校选址问题.doc_第5页
资源描述:

《学校选址问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数学建模(学校选址问题) 选址问题 背景     现如今,教育普及,学校的建设问题也就成为了一个需要考虑的问题。现在,某地新开发的20个小区需要建设配套的小学,设备选的校址共有16个,各校址覆盖的小区情况如下表所示:备选校址12345678覆盖小区1,2,3,4,62,3,5,8,11,203,5,11,201,4,6,7,121,4,8,7,9,11,13,145,8,9,10,11,16,2010,11,15,16,19,206,7,12,13,17,18备选校址910111213141516覆盖小区7,

2、9,13,14,15,17,18,19 9,10,14,15,16,18,191,2,4,6,75,10,11,16,20, 12,13,14,17,189,10,14,152,3,,5,11,202,3,4,5,8现在要用最少的校区,包含全部的小区,这问题关系到土地问题,应此,先建立以下模型。本模型先建立矩阵,由于一个小区只需在一个校址内即可,所以再编程求解出所选校址。 模型假设    一、假设校区可以建得很大,也可以建的很小,不影响其他校区的建立。                    二、假设任意小区到

3、可选择的任意校区都一样,距离不考虑。 模型建立    建立矩阵,行表示备选校址,列表示小区号。若某校址能覆盖某小区,则在矩阵的相应位置上添“1”,否则添“0”,为了使矩阵成为方阵,故在矩阵的行最后添加四行全为“0”的行。最终,建立了一下矩阵:A=[1111010000000000000001101001001000000001001010000010000000011001011000010000000010010011101011000000000010011110000100010000000001100

4、01100110000011000011000110000000010100011101110000000001100011101101101011000000000000000001000011000010001000000000001110011000000000011000110000001101000001000000001011110010000000000000000000000000000000000000000000000000000000000000000000000000000000000

5、0000000000] 模型求解    对于以上方阵,可先将它与一个20行1列的矩阵B=[1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1]相乘,所得的结果就是各个小区所覆盖的小区数。由于本题是要求最少的校区,因此可先选择出覆盖最多的校区,然后将该校区所覆盖的小区全部删去,所以在矩阵里,只需将含“1”最多的行里面,反是“1”的位置的列的所有元素都变成“0”。如此反复,就会在最后一步发现只有矩阵的每一行最多只有1个“1”,且这个“1”在同一列。这样,只要记录下以上用来处理数据使列变

6、零的行的行数,就是所需选出的校区。这里,对于含“1”数相同,且都是最多的情况,采用矩阵变换后,变后的矩阵各行含一数较大的方式进行变换。如:若某一次变换可有两种选择,则将两种都分别变换,比较变换后的矩阵,看这两个矩阵中含“1”最多的行,哪个行含“1”多,则采用哪种变换。(以上都是用MATLAB编程实现,具体程序见附录)最后可以根据MATLAB里所得到的数据,再综合实际情况,加以选址。计算的结果是,校区选择961三个,然后再在4813中任选一个,一般选择包含小区最多的校址。所以本方法选出的最少校区为4个。因此可选

7、用1689四个校区,就可将20个小区都包含在内。对于一个小区,去两个或三个校区都可以的问题,可以根据建校离小区的距离来决定到底去哪个校区。 模型推广和分析      本模型可以教方便的找出结果,且很容易推广到其他的选址问题,但是,未考虑到一些的实际问题,比如交通问题,小学生从家到校的安全问题,校区建成的成本,各小区人数等问题。就本题而言,本程序所求出的个数4个,用很多其他方法程序也可求出,但本程序有个优点,就是本程序对于更多的数据,也可处理,且程序不用变。 附录     先编写函数f0,用来计算哪一行所包含的

8、“1”最多(其中C=A*B):functiony=f0(C)s=0;fori=1:20   ifC(i)>s       s=C(i);       j=i;   end;endy=s; 再编写函数f1,用来计算哪几行都包含了最多的相同数目的“1”,输出的是该行的行数:functiony=f1(A,C)s=f0(C);k=1;fori=1:20   ifC(i)==s       t(k)=i;  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。