1、题目

题目:
某集团拟在某市东、西、南、北建立4座超市,有10个候选位置Aj(j=1, 2, 3, … ,10),考虑到各地区的消费水平及居住密度,规定如下:
(1) 东区由A1, A2, A3三个点中之多选择两个。
(2) 西区由A4, A5两个点中至少选择一个。
(3) 南区由A6, A7两个点中至少选一个。
(4) 北区由A8, A9, A10三个点中至少选两个。

试题说明:

问题1:

A j A_{j} Aj各点的设备投资及每年可获利润由于地点不同而不一样,预测情况见表1(单位:万元),总投资额不能超过720万元,问应该选择哪几个位置建立超市,可使年利润最大?

表格1 A j A_{j} Aj各点投资与利润情况

项目 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
投资额 100 120 150 80 10 90 80 140 160 180
利润 35 40 50 22 20 30 25 48 58 61

问题2:

现在需要建立一个仓库给四个超市供货,为简化问题,假设仓库到每个超市是单独供货,即送完某个超市即返程,不再接着送下一个超市 (即仅考虑路程,不考虑图论),且从仓库到各超市的运费单价一致,问该仓库建立在何处才能使超市的运输成本最低?

表格 2 A j A_{j} Aj各点的位置情况

项目 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10
x 67 -120 72 163 49 103 73 -30 29 -79
y 89 -115 -107 -81 -294 143 33 -75 137 -171

2、解析

问题1:

该集团拟定东南西北四个方向建立四座超市,从候选的10个位置中又根据各地区的消费水平和居住密度设定了一系列规则,在满足规则的同时使超市收益的年利率最大,由此我们构建了一个优化方程,最终通过matlab中的非线性规划fmincon函数求解,得出最终结果 A = ( A 4 , A 6 , A 9 , A 10 ) A = ({A_4},{A_6},{A_9},{A_{10}}) A=(A4,A6,A9,A10)

根据规定:
(1) 东区由A1, A2, A3三个点中之多选择两个。
(2) 西区由A4, A5两个点中至少选择一个。
(3) 南区由A6, A7两个点中至少选一个。
(4) 北区由A8, A9, A10三个点中至少选两个。
可得规划方程:
{ A 1 + A 2 + A 3 ≤ 2 A 4 + A 5 ≥ 1 A 6 + A 7 ≥ 1 A 8 + A 9 + A 10 ≥ 2 \left\{ \begin{array}{l} {A_1} + {A_2} + {A_3} \le 2\\ {A_4} + {A_5} \ge 1\\ {A_6} + {A_7} \ge 1\\ {A_8} + {A_9} + {A_{10}} \ge 2 \end{array} \right. A1+A2+A32A4+A51A6+A71A8+A9+A102
A j A_{j} Aj各点的设备投资及每年可获利润由于地点不同而不一样,总投资额不能超过720万元,可得规划方程:
100 ∗ A 1 + 120 ∗ A 2 + 150 ∗ A 3 + 80 ∗ A 4 + 10 ∗ A 5 + 90 ∗ A 6 + ⋯ 80 ∗ A 7 + 140 ∗ A 8 + 160 ∗ A 9 + 180 ∗ A 10 ≤ 720 \begin{array}{l} 100*{A_1} + 120*{A_2} + 150*{A_3} + 80*{A_4} + 10*{A_5} + 90*{A_6} + \cdots \\ 80*{A_7} + 140*{A_8} + 160*{A_9} + 180*{A_{10}} \le 720 \end{array} 100A1+120A2+150A3+80A4+10A5+90A6+80A7+140A8+160A9+180A10720
要使年利润最大,则可得优化方程为:
max ⁡ ( 35 ∗ A 1 + 40 ∗ A 2 + 50 A 3 + 22 ∗ A 4 + 20 ∗ A 5 + ⋯ 30 ∗ A 6 + 25 ∗ A 7 + 48 ∗ A 8 + 58 ∗ A 9 + 61 ∗ A 10 ) \begin{array}{l} \max (35*{A_1} + 40*{A_2} + 50{A_3} + 22*{A_4} + 20*{A_5} + \cdots \\ 30*{A_6} + 25*{A_7} + 48*{A_8} + 58*{A_9} + 61*{A_{10}}) \end{array} max(35A1+40A2+50A3+22A4+20A5+30A6+25A7+48A8+58A9+61A10)
通过matlab中的fmincon函数求解该非线性规划方程(代码见3代码求解):输出结果
最终可得 A = ( A 4 , A 6 , A 9 , A 10 ) A = ({A_4},{A_6},{A_9},{A_{10}}) A=(A4,A6,A9,A10),且最大收益为 f v a l = 171.0 fval = 171.0 fval=171.0

问题2:

根据问题一中所得的四个超市坐标,选取配送成本最低的仓库坐标。考虑到本题中的超市是单独供货、送完即回,且运费单价一致,要使成本最低,只需要保证去往每个超市的路程的总和最小,则可以保证成本最低(这里假设每个超市配送的概率相同)。由此我们构建了路程的优化方程,使用与第一问相同的fmincon函数求解,得出最终结果 ( x , y ) = ( 105.5779 , 133.3760 ) (x,y) = (105.5779,133.3760) (x,y)=(105.5779,133.3760)

需要建立一个仓库给四个超市供货,由于是送完某个超市即返程,不再接着送下一个超市 (即仅考虑路程,不考虑图论),且从仓库到各超市的运费单价一致,所以该问题求解达到每个超市的最短距离问题,可转换成求送往各个超市的距离的和最小问题,于是构建优化方程:
min ⁡ ( ∑ i = 1 4 ( x − x i ) 2 + ( y − y i ) 2 ) \min (\sum\limits_{i = 1}^4 {\sqrt {{{(x - {x_i})}^2} + {{(y - {y_i})}^2}} } ) min(i=14(xxi)2+(yyi)2 )

通过matlab求解fmincon函数求解该非线性规划方程(代码见附页8.1.2):
输出结果
最终可得最优位置为 ( x , y ) = ( 105.5779 , 133.3760 ) (x,y) = (105.5779,133.3760) (x,y)=(105.5779,133.3760),各超市配送距离总和最小为 f v a l = 633.0362 fval = 633.0362 fval=633.0362

3、代码求解

问题1:

mycode1.m

% 优化方程
function f = mycode1(x)
f = -(35*x(1)+40*x(2)+50*x(3)+22*x(4)+20*x(5)+30*x(6)+25*x(7)+48*x(8)+58*x(9)+61*x(10));

work1.m

%% 非线性规划方程
% A1、A2...、A10
x0 = zeros(10,1);

% 对应方程12的左边
A = [1,1,1,1,1,1,1,1,1,1
    1,1,1,0,0,0,0,0,0,0
    0,0,0,-1,-1,0,0,0,0,0
    0,0,0,0,0,-1,-1,0,0,0
    0,0,0,0,0,0,0,-1,-1,-1
    100,120,150,80,10,90,80,140,160,180];
    
% 对应方程12的右边,注意fmincon是求小于,所以如果是大于的话就取负数就行(两边同时取负,不等式取反,基本常识)
b = [4;2;-1;-1;-2;720];

% 方程中的恒等关系,没有就像我这样取
Aeq = [];beq = [];

% x0的限制关系,0-1规划就需要取最小值为0,最大值为1
VLB = zeros(1,10);
VUB = ones(1,10);

% x为取值,fval为优化方程的最优解
[x, fval] = fmincon('mycode1',x0,A,b,Aeq,beq,VLB,VUB)

问题2:

mycode2.m

% 优化方程
function f = mycode2(x)

% 迭代的xi和yi
a = [163,103,129,-79];
b =  [-81,143,172,-171];
f1 = 0;

for i=1:4
    tmp = sqrt((x(1)-a(i))^2 + (x(2)-b(i))^2);
    f1 = tmp + f1;
end

f = f1;

work2.m

x0 = zeros(1,2);
A = [];
b = [];
Aeq = [];beq = [];
[x, fval] = fmincon('mycode2',x0,A,b,Aeq,beq)
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐