运输问题的案例及求解
运输问题的Lingo多段式编程
- 决策变量
X i j : A i → B j i = 1 , 2 , … , 6 j = 1 , 2 , … , 8 \begin{array}{} X_{ij}:A_{i}\to B_{j} \\ i=1,2,\dots,6 \\ j=1,2,\dots,8 \end{array} Xij:Ai→Bji=1,2,…,6j=1,2,…,8 - 目标函数
假设单线运费 C i j C_{ij} Cij
A i j → B i j : C i j X i j A_{ij}\to B_{ij}:C_{ij}X_{ij} Aij→Bij:CijXij
总运费:
m i n z = ∑ i = 1 6 ∑ j = 1 8 C i j X i j min\ z=\sum_{i=1}^{6}\sum_{j=1}^{8}C_{ij}X_{ij} min z=i=1∑6j=1∑8CijXij - 约束条件
每个产地的产量限制
s . t ∑ j 8 x i j ≤ a i i = 1 , 2 , … , 6 s.t\ \sum_{j}^{8}x_{ij}\le a_{i}\quad i=1,2,\dots,6 s.t j∑8xij≤aii=1,2,…,6
每个销地的需求的限制
∑ i = 1 6 x i j = b j j = 1 , 2 , … , 8 \sum_{i=1}^{6}x_{ij}=b_{j}\quad j=1,2,\dots,8 i=1∑6xij=bjj=1,2,…,8
决策变量的非负约束
x i j ≥ 0 i = 1 , 2 , … , 6 ; j = 1 , 2 , … , 8 x_{ij}\ge 0\quad i=1,2,\dots,6;\quad j=1,2,\dots,8 xij≥0i=1,2,…,6;j=1,2,…,8 - 用
x i j x_{ij} xij:表示 A i A_{i} Ai到 B j B_{j} Bj的运量, i = 1 , 2 , … , 6 j = 1 , 2 , … , 8 i=1,2,\dots,6\quad j=1,2,\dots,8 i=1,2,…,6j=1,2,…,8
c i j c_{ij} cij:表示 A i A_{i} Ai到 B j B_{j} Bj的单位运费, i = 1 , 2 , … , 6 j = 1 , 2 , … , 8 i=1,2,\dots,6\quad j=1,2,\dots,8 i=1,2,…,6j=1,2,…,8
a i a_{i} ai:表示产地 A i A_{i} Ai的生产量, i = 1 , 2 , … , 6 i=1,2,\dots,6 i=1,2,…,6
b j b_{j} bj:表示需求地 B j B_{j} Bj的需求量, j = 1 , 2 , … , 8 j=1,2,\dots,8 j=1,2,…,8
Lingo多段式编程
model:
sets:
warehouses/1..6/:capacity;
vendors/1..8/:demand;
links(warehouses,vendors):cost,volume;
endsets
min=@sum(links:cost*volume);
@for(vendors(J):@sum(warehouses(I):volume(I,J))=demand(J));
@for(warehouses(I):@sum(vendors(J):volume(I,J))<capacity(I));
data:
capacity=60 55 51 43 41 52;
demand=35 37 22 32 41 32 43 38;
cost=6 2 6 7 4 2 9 5
4 9 5 3 8 5 8 2
5 2 1 9 7 4 3 3
7 6 7 3 9 2 7 1
2 3 9 5 7 2 6 5
5 5 2 2 8 1 4 3;
enddata
end
- warehouses和vendors是两个集合,分别表示产地和需求地
- links是派生集,是w和v两个的集合派生出来的集合,相当于之间的连线,有单位费用cost和决策变量volume,也就是运量
- 目标函数就是产地和需求地连线上所产生的费用的总和,对所有线条的集合,就是48条,用sum求和
- vendors(J):表示对每个需求地,
j
=
1
,
2
,
…
,
8
j=1,2,\dots,8
j=1,2,…,8,@for对这八家进行循环
- 对每一个需求地来说,所有产地给他的总量的求和要等于需求量
- warehouses(I):表示每个产地,对六个产地进行循环
- 对每个产地来说,给所有需求地的销售总量要小于等于产量
- 对每个产地来说,给所有需求地的销售总量要小于等于产量
运输问题的数学模型
运输问题的描述
产销平衡问题
设
x
i
j
x_{ij}
xij表示产地
A
i
A_{i}
Ai运往销地
B
j
B_{j}
Bj的运量
即
∑
i
=
1
m
a
i
=
∑
j
=
1
n
b
j
\sum_{i=1}^{m}a_{i}=\sum_{j=1}^{n}b_{j}
i=1∑mai=j=1∑nbj
m
i
n
z
=
∑
i
=
1
m
∑
j
=
1
n
c
i
j
x
i
j
min\ z=\sum_{i=1}^{m}\sum_{j=1}^{n}c_{ij}x_{ij}
min z=i=1∑mj=1∑ncijxij
s
.
t
.
∑
j
=
1
n
x
i
j
=
a
i
i
=
1
,
2
,
…
,
m
s.t.\quad \sum_{j=1}^{n}x_{ij}=a_{i}\quad i=1,2,\dots,m
s.t.j=1∑nxij=aii=1,2,…,m
∑
i
=
1
m
x
i
j
=
b
j
j
=
1
,
2
,
…
,
n
\sum_{i=1}^{m}x_{ij}=b_{j}\quad j=1,2,\dots,n
i=1∑mxij=bjj=1,2,…,n
x
i
j
≥
0
i
=
1
,
2
,
…
,
m
j
=
1
,
2
,
…
,
n
x_{ij}\ge 0\quad i=1,2,\dots,m\quad j=1,2,\dots,n
xij≥0i=1,2,…,mj=1,2,…,n
产销不平衡问题
- 供大于求
∑
i
=
1
m
a
i
>
∑
j
=
1
n
b
j
\sum_{i=1}^{m}a_{i}>\sum_{j=1}^{n}b_{j}
i=1∑mai>j=1∑nbj
m
i
n
z
=
∑
i
=
1
m
∑
j
=
1
n
c
i
j
x
i
j
min\ z=\sum_{i=1}^{m}\sum_{j=1}^{n}c_{ij}x_{ij}
min z=i=1∑mj=1∑ncijxij
s
.
t
.
∑
j
=
1
n
x
i
j
≤
a
i
i
=
1
,
2
,
…
,
m
s.t.\quad \sum_{j=1}^{n}x_{ij}\le a_{i}\quad i=1,2,\dots,m
s.t.j=1∑nxij≤aii=1,2,…,m
∑
i
=
1
m
x
i
j
=
b
j
j
=
1
,
2
,
…
,
n
\sum_{i=1}^{m}x_{ij}=b_{j}\quad j=1,2,\dots,n
i=1∑mxij=bjj=1,2,…,n
x
i
j
≥
0
i
=
1
,
2
,
…
,
m
j
=
1
,
2
,
…
,
n
x_{ij}\ge 0\quad i=1,2,\dots,m\quad j=1,2,\dots,n
xij≥0i=1,2,…,mj=1,2,…,n
2. 供不应求
∑
i
=
1
m
a
i
<
∑
j
=
1
n
b
j
\sum_{i=1}^{m}a_{i}<\sum_{j=1}^{n}b_{j}
i=1∑mai<j=1∑nbj
m
i
n
z
=
∑
i
=
1
m
∑
j
=
1
n
c
i
j
x
i
j
min\ z=\sum_{i=1}^{m}\sum_{j=1}^{n}c_{ij}x_{ij}
min z=i=1∑mj=1∑ncijxij
s
.
t
.
∑
j
=
1
n
x
i
j
=
a
i
i
=
1
,
2
,
…
,
m
s.t.\quad \sum_{j=1}^{n}x_{ij}=a_{i}\quad i=1,2,\dots,m
s.t.j=1∑nxij=aii=1,2,…,m
∑
i
=
1
m
x
i
j
≤
b
j
j
=
1
,
2
,
…
,
n
\sum_{i=1}^{m}x_{ij}\le b_{j}\quad j=1,2,\dots,n
i=1∑mxij≤bjj=1,2,…,n
x
i
j
≥
0
i
=
1
,
2
,
…
,
m
j
=
1
,
2
,
…
,
n
x_{ij}\ge 0\quad i=1,2,\dots,m\quad j=1,2,\dots,n
xij≥0i=1,2,…,mj=1,2,…,n
经典的线性规划模型
运输问题(同上)
生产组织与计划问题
m
i
n
z
=
∑
i
=
1
m
∑
j
=
1
n
c
i
j
x
i
j
min\ z=\sum_{i=1}^{m}\sum_{j=1}^{n}c_{ij}x_{ij}
min z=i=1∑mj=1∑ncijxij
s
.
t
.
∑
j
=
1
n
t
i
j
x
i
j
≤
a
i
i
=
1
,
2
,
…
,
m
s.t.\quad \sum_{j=1}^{n}t_{ij}x_{ij}\le a_{i}\quad i=1,2,\dots,m
s.t.j=1∑ntijxij≤aii=1,2,…,m
∑
i
=
1
m
x
i
j
≥
b
j
j
=
1
,
2
,
…
,
n
\sum_{i=1}^{m}x_{ij}\ge b_{j}\quad j=1,2,\dots,n
i=1∑mxij≥bjj=1,2,…,n
x
i
j
≥
0
,
x
i
j
∈
I
i
=
1
,
2
,
…
,
m
j
=
1
,
2
,
…
,
n
x_{ij}\ge 0,x_{ij}\in I \quad i=1,2,\dots,m\quad j=1,2,\dots,n
xij≥0,xij∈Ii=1,2,…,mj=1,2,…,n
工场选址问题
m
i
n
z
=
∑
i
=
1
m
∑
j
=
1
n
c
i
j
x
i
j
+
∑
i
=
1
m
a
i
y
i
min\ z=\sum_{i=1}^{m}\sum_{j=1}^{n}c_{ij}x_{ij}+\sum_{i=1}^{m}a_{i}y_{i}
min z=i=1∑mj=1∑ncijxij+i=1∑maiyi
s
.
t
.
∑
j
=
1
n
x
i
j
≤
D
i
y
i
i
=
1
,
2
,
…
,
m
s.t.\quad \sum_{j=1}^{n}x_{ij}\le D_{i}y_{i}\quad i=1,2,\dots,m
s.t.j=1∑nxij≤Diyii=1,2,…,m
∑
i
=
1
m
x
i
j
≥
b
j
j
=
1
,
2
,
…
,
n
\sum_{i=1}^{m}x_{ij}\ge b_{j}\quad j=1,2,\dots,n
i=1∑mxij≥bjj=1,2,…,n
x
i
j
≥
0
y
i
=
{
0
,
1
}
.
x_{ij}\ge 0 \quad y_{i}=\left\{0,1\right\}.
xij≥0yi={0,1}.
上式中
y
i
的意义是
y
i
=
{
1
在地址
i
建厂
0
不在地址
i
建厂
\begin{array}{} 上式中y_{i}的意义是 \\ y_{i}=\left\{\begin{matrix} 1\ 在地址i建厂 \\ 0\ 不在地址i建厂 \end{matrix}\right. \end{array}
上式中yi的意义是yi={1 在地址i建厂0 不在地址i建厂
设备购置和安装问题
m
a
x
z
=
∑
i
=
1
m
∑
j
=
1
n
c
i
j
x
i
j
max\ z=\sum_{i=1}^{m}\sum_{j=1}^{n}c_{ij}x_{ij}
max z=i=1∑mj=1∑ncijxij
s
.
t
.
∑
j
=
1
n
x
i
j
≤
y
i
+
a
i
i
=
1
,
2
,
…
,
m
s.t.\quad \sum_{j=1}^{n}x_{ij}\le y_{i}+a_{i}\quad i=1,2,\dots,m
s.t.j=1∑nxij≤yi+aii=1,2,…,m
∑
i
=
1
m
x
i
j
≤
b
j
j
=
1
,
2
,
…
,
n
\sum_{i=1}^{m}x_{ij}\le b_{j}\quad j=1,2,\dots,n
i=1∑mxij≤bjj=1,2,…,n
∑
i
=
1
m
p
i
y
i
≤
M
\sum_{i=1}^{m}p_{i}y_{i}\le M
i=1∑mpiyi≤M
x
i
j
≥
0
,
x
i
j
∈
I
x_{ij}\ge 0,\quad x_{ij}\in I
xij≥0,xij∈I
旅行商问题
定义
x
i
j
=
{
1
货郎选择的路线包含从
A
i
到
A
j
的路径
0
否则
x_{ij}=\left\{\begin{matrix} 1\quad 货郎选择的路线包含从A_{i}到A_{j}的路径 \\ 0\quad 否则 \end{matrix}\right.
xij={1货郎选择的路线包含从Ai到Aj的路径0否则
则相应的模型为
$$
min\ z=\sum_{i=1}{n}\sum_{j=1}{n}d_{ij}x_{ij}
s.t.\left{\begin{matrix}
\sum_{j=1}^{n}x_{ij}=1,\qquad i=1,2,\dots,n \
\sum_{i=1}^{n}x_{ij}=1,\qquad j=1,2,\dots,n \
\sum_{i,j\in S}^{n}x_{ij}\le |S|-1,2\le |S|\le n-1,S\subset\left{1,2,\dots,n\right}
\end{matrix}\right.
x_{ij}\in \left{0,1\right},\quad i,j=1,2,\dots,n,\quad i\ne j
$$
|S|表示的是集合S中点的总数,表示每S个元素之间路径的个数不超过S-1
当S取3时,三个元素之间最多只有两条路
可以回避掉自回路
多目标规划模型及主要解法
多目标规划模型
在许多实际问题中,衡量一个方案的好坏标准往往不止一个。这一类问题统称为多目标最优化问题或多目标规划问题
设该厂每周生产布料
A
1
,
A
2
,
A
3
A_{1},A_{2},A_{3}
A1,A2,A3的小时数为
x
1
,
x
2
,
x
3
x_{1},x_{2},x_{3}
x1,x2,x3,总利润为
y
1
=
f
1
(
x
)
y_{1}=f_{1}(x)
y1=f1(x),总能耗为
y
2
=
f
2
(
x
)
y_{2}=f_{2}(x)
y2=f2(x),其中
x
=
(
x
1
,
x
2
,
x
3
)
T
x=(x_{1},x_{2},x_{3})^{T}
x=(x1,x2,x3)T,则上述问题的数学模型为:
m
i
n
y
1
=
−
f
1
(
x
)
m
i
n
y
2
=
f
2
(
x
)
s
.
t
.
{
x
1
+
x
2
+
x
3
≤
80
1.2
×
0.4
x
1
+
1.3
×
0.5
x
2
+
1.4
×
0.36
x
3
≤
160
0
≤
x
1
≤
100
,
0
≤
x
2
≤
100
,
0
≤
x
3
≤
100
y
1
=
−
f
1
(
x
)
=
0.15
×
400
x
1
+
0.13
×
510
x
2
+
0.20
×
360
x
3
y
2
=
f
2
(
x
)
=
1.2
×
0.4
x
1
+
1.3
×
0.51
x
2
+
1.4
×
0.36
x
3
\begin{array}{} min\quad y_{1}=-f_{1}(x) \\ min\quad y_{2}=f_{2}(x) \\ s.t.\left\{\begin{matrix} x_{1}+x_{2}+x_{3}\le 80 \\ 1.2\times 0.4x_{1}+1.3\times 0.5x_{2}+1.4\times 0.36x_{3}\le 160 \\ 0\le x_{1}\le 100,0\le x_{2}\le 100,0\le x_{3}\le 100 \end{matrix}\right. \\ y_{1}=-f_{1}(x)=0.15\times 400x_{1}+0.13\times 510x_{2}+0.20\times 360x_{3} \\ y_{2}=f_{2}(x)=1.2\times 0.4x_{1}+1.3\times 0.51x_{2}+1.4\times 0.36x_{3} \end{array}
miny1=−f1(x)miny2=f2(x)s.t.⎩
⎨
⎧x1+x2+x3≤801.2×0.4x1+1.3×0.5x2+1.4×0.36x3≤1600≤x1≤100,0≤x2≤100,0≤x3≤100y1=−f1(x)=0.15×400x1+0.13×510x2+0.20×360x3y2=f2(x)=1.2×0.4x1+1.3×0.51x2+1.4×0.36x3
多目标规划模型解法
直接解法和间接解法
常用的多为间接解法,根据问题的实际背景和特征,设法将多目标优化问题转化为单目标优化问题
主要目标法
在多目标优化问题中,若能从p个目标中,确定一个目标为主要目标,例如
f
1
(
x
)
f_{1}(x)
f1(x),而把其余目标作为次要目标,并根据实际情况,确定适当的界限值,这样就可以把次要目标作为约束处理,而将多目标优化问题转化为求解线性或非线性规划问题
m
i
n
f
1
(
x
)
s
.
t
.
{
g
i
(
x
)
≤
0
,
i
=
1
,
2
,
…
,
m
f
j
(
x
)
≤
a
j
,
j
=
2
,
3
,
…
,
p
\begin{array}{} min\ f_{1}(x) \\ s.t.\left\{\begin{matrix} g_{i}(x)\le 0,i=1,2,\dots,m \\ f_{j}(x)\le a_{j},j=2,3,\dots,p \end{matrix}\right. \end{array}
min f1(x)s.t.{gi(x)≤0,i=1,2,…,mfj(x)≤aj,j=2,3,…,p
此规划问题的最优解必为原问题的弱有效解。
主要目标法求得的解必是原问题的弱有效解或有效解
分层序列法
把多目标规划问题中的p个目标的重要性进行排序
先以主要目标为目标函数,约束条件不变,求出最优解与最优值
第二次,以次要目标为目标函数,这次在约束条件中,在不牺牲主要目标的最优值的情况下,寻找次要目标的最优值
在第一次主要目标有多个最优解的情况下,第二次来寻找次要目标的最优解
如果第一次的最优解是唯一的,第二次就没有意义了
为防止这种情况出现,第二次主要目标进入约束条件后,会放松一点条件,加上一个宽容值
加权求和法
给两个目标设计权重
0
≤
w
1
,
w
2
≤
1
,
w
1
+
w
2
=
1
0\le w_{1},w_{2}\le 1,\qquad w_{1}+w_{2}=1
0≤w1,w2≤1,w1+w2=1
目标函数变为
m
i
n
w
1
f
1
(
x
)
+
w
2
f
2
(
x
)
min\quad w_{1}f_{1}(x)+w_{2}f_{2}(x)
minw1f1(x)+w2f2(x)
约束条件不变