习题2.2
某市为方便小学生上学,拟在新建的8个居民小区
A
1
,
A
2
,
.
.
.
,
A
8
A_1,A_2,...,A_8
A1,A2,...,A8增设若干小学,备选校址有
B
1
,
B
2
,
.
.
.
,
B
6
B_1,B_2,...,B_6
B1,B2,...,B6,他们能够覆盖的居民小区如下表所示:
备选校址 | B 1 B_1 B1 | B 2 B_2 B2 | B 3 B_3 B3 | B 4 B_4 B4 | B 5 B_5 B5 | B 6 B_6 B6 |
---|---|---|---|---|---|---|
覆盖的居民小区 | A 1 , A 5 , A 7 A_1,A_5,A_7 A1,A5,A7 | A 1 , A 2 , A 5 , A 8 A_1,A_2,A_5,A_8 A1,A2,A5,A8 | A 1 , A 3 , A 5 A_1,A_3,A_5 A1,A3,A5 | A 2 , A 4 , A 8 A_2,A_4,A_8 A2,A4,A8 | A 3 , A 6 A_3,A_6 A3,A6 | A 4 , A 6 , A 8 A_4,A_6,A_8 A4,A6,A8 |
试着建立一个数学模型,确定出最小个数的建校地址,使其能够覆盖所有的居民小区。
代码求解:
%% 本程序是针对数学建模书中习题2.2
clear,clc;
f=ones(6,1);
intcon=1:6;
a=[1 1 1 0 0 0
0 1 0 1 0 0
0 0 1 0 1 0
0 0 0 1 0 1
1 1 1 0 0 0
0 0 0 0 1 1
1 0 0 0 0 0
0 1 0 1 0 1 ];
a=-a;
b=-ones(8,1);
aeq=[];
beq=[];
lb=zeros(6,1);
ub=ones(6,1);
x=intlinprog(f,intcon,a,b,aeq,beq,lb,ub)
求解结果
x =
1
0
0
1
1
0
最后求得结果为:选取备用校址为1,4,5。