第八章:CPLEX在ITS中应用
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运筹学中求解方法:
1.Dijkstra算法 它是用于解决非负权网络中寻找一个指定点到其他 点的最短路的最好方法。 基本思想是:采用标号法 2.PDM算法 能够解决有负权的网络 3.逐次逼近法 4.Floyd算法
4
优化数学模型的建立
分析
1.已知是什么? 2.目标是什么? 3.约束有哪些? 4.决策变量应该如何选择?结合决策变量如何用 数学语言表示目标函数和约束条件?
11
模型文件(2): int C[arcs]=...; //弧长或权重
dvar boolean x[arcs];//以每条弧的选择与否为决策变量 minimize sum(a in arcs) C[a]*x[a];//起始点 subject to{ sum(a in st_arcs)x[a]==1; forall(j in md_nod) sum(<k,j>in arcs:k!=j)x[<k,j>]-sum(<j,k>in arcs:k!=j)x[<j,k>]==0; //中间点的流入量与流出量相等 sum(a in en_arcs)x[a]==1;}
min Z= Wij X ij
i 1 j 1 n n
s.t.
X
j=2 n-1
n
1j
=1 =1
n
1
(2ຫໍສະໝຸດ Baidu =0 (k j,j 1, j n) (3)
9
X
j=1 n k=1
jn
X - X
kj k=1
jk
第三节、最短路问题在CPLEX中建模与求解
OPL模型构建时的几个关键性问题:
7
优化数学模型的建立
4.决策变量应该如何选择?结合决策变量如
何用数学语言表示目标函数和约束条件?
思路一:以每条路为决策变量,需要定义 每条路。(不推荐) 思路二:以每条弧是否选择为决策变量; 目标函数则令所有选择的弧长最小;约束 需要是所有选择的弧要连成一条路径。
8
优化数学模型的建立:
n:有n个节点;(其中1表示起点,n表示终点) Wij:弧ij的权重; Xij:决策变量弧ij选择与否,为1表示选择,为0表 示不选或者是不存在这条弧。
14
最短路问题延伸练习题: 1.最大流问题; 2.最小费用最大流问题(最小费用流问题); 3.中国邮路问题;
15
补充几个问题: 1.设置问题; (解池) 2.后处理语言问题; (脚本日志输出)如: execute output{ for(var a in arcs) if(x[a]==1) writeln("x[",a,"]=",x[a]); }
CPLEX在ITS中的应用
一、智能交通中最短路问题的概述
最短路问题是网络理论解决的典型问题之一, 可用来解决配送路径选择、管路铺设、线路安装、 厂区布局和设备更新等实际问题。 定义:给定一个赋权有向图,即给了一个有向 图G=(V,A,W),对A中每一个弧aij =(vi, vj)相应地在W中有权w(aij)=wij,又给定G中 两个顶点vs,vt。设P是G中从vs到vt的一条路, 定义路P的权是P中所有弧的权之和,记为W(P)。 最短路问题就是要在所有从vs到vt的路中,求一 条权最小的路,即求一条从vs到vt的路P*,,使: W(P*)=min W(P),称P*是从vs到vt的最短路。
1
例1. 在纵横交错的公路网中,货车司机希 望找到一条从一个城市到另一个城市的最 短路。假设下面的图表示的是该公路网, 节点表示货车可以停靠的城市,弧上的权 表示两个城市之间的距离(百公里)。那 么,货车从城市A出发到达城市I,如何选 择行驶路线,使所经过的路程最短?
2
3
第二节、最短路问题的数学模型
16
3.作业要求: (1)问题的描述; (2)数学模型的建立; (3)计算机模型的建立及求解(模型文件,数据 文件代码,如果有设置文件需说明,并对求解的 结果进行一下说明); (4)需要对小组成员的贡献进行一个排序。
17
5
优化数学模型的建立
1.已知是什么? 一个有向的网络图,具体来说就是: 节点:数量; 弧:节点到节点间的弧; 弧长:每条弧的弧长; 起始点; 目的点。
6
优化数学模型的建立
2. 目标是什么? 目标:起点到终点的距离最短。 3.约束有哪些? 需要找的从起点到终点的一条路。
12
数据文件:
nodes={A B C D E F G H I}; md_nod={B C D E F G H}; st_nod={A}; en_nod={I}; arcs={<A,B>,<A,C>,<A,D>,<B,E>,<B,F>,<C,E>,<C,F>,<D,E>,<D,F>,<E,G>,<E, H>,<F,G>,<F,H>,<G,I>,<H,I>}; st_arcs={<A,B>,<A,C>,<A,D>}; en_arcs={<G,I>,<H,I>}; C=[6,3,3,6,5,8,6,7,4,6,7,8,9,5,6];
弧如何表示?
(单独用字符串表示?如何与节点联系上?)
如何让节点和弧建立起联系? 最后一个约束条件如何用OPL语言表示?
10
模型文件(1): {string} nodes=...;//节点 {string} md_nod=...;//中间点 {string}st_nod=...;//起始点 {string}en_nod=...; //目的点 tuple Arc{string o; string d; } {Arc}arcs=...; //弧 {Arc}st_arcs=...; //起始弧 {Arc}en_arcs=...;//终止弧 assert forall(i in md_nod) i in nodes; assert forall(i in st_nod) i in nodes; assert forall(i in en_nod) i in nodes; assert forall(i in st_arcs) i in arcs; assert forall(i in en_arcs) i in arcs; assert forall(<i,j> in arcs) i in nodes; assert forall(<i,j> in arcs) j in nodes;
13
求解结果为: // solution (all reachable solutions enumerated, integer optimal) with objective 20 x = [0 0 1 0 0 0 0 0 1 0 0 1 0 1 0]; 即选择了弧有: <"A" "D">、<"D" "F"> 、<"F" "G"> 、<"G" "I"> 因此行驶路径为:A-D-F-G-I,行驶路程为20(百 公里)
1.Dijkstra算法 它是用于解决非负权网络中寻找一个指定点到其他 点的最短路的最好方法。 基本思想是:采用标号法 2.PDM算法 能够解决有负权的网络 3.逐次逼近法 4.Floyd算法
4
优化数学模型的建立
分析
1.已知是什么? 2.目标是什么? 3.约束有哪些? 4.决策变量应该如何选择?结合决策变量如何用 数学语言表示目标函数和约束条件?
11
模型文件(2): int C[arcs]=...; //弧长或权重
dvar boolean x[arcs];//以每条弧的选择与否为决策变量 minimize sum(a in arcs) C[a]*x[a];//起始点 subject to{ sum(a in st_arcs)x[a]==1; forall(j in md_nod) sum(<k,j>in arcs:k!=j)x[<k,j>]-sum(<j,k>in arcs:k!=j)x[<j,k>]==0; //中间点的流入量与流出量相等 sum(a in en_arcs)x[a]==1;}
min Z= Wij X ij
i 1 j 1 n n
s.t.
X
j=2 n-1
n
1j
=1 =1
n
1
(2ຫໍສະໝຸດ Baidu =0 (k j,j 1, j n) (3)
9
X
j=1 n k=1
jn
X - X
kj k=1
jk
第三节、最短路问题在CPLEX中建模与求解
OPL模型构建时的几个关键性问题:
7
优化数学模型的建立
4.决策变量应该如何选择?结合决策变量如
何用数学语言表示目标函数和约束条件?
思路一:以每条路为决策变量,需要定义 每条路。(不推荐) 思路二:以每条弧是否选择为决策变量; 目标函数则令所有选择的弧长最小;约束 需要是所有选择的弧要连成一条路径。
8
优化数学模型的建立:
n:有n个节点;(其中1表示起点,n表示终点) Wij:弧ij的权重; Xij:决策变量弧ij选择与否,为1表示选择,为0表 示不选或者是不存在这条弧。
14
最短路问题延伸练习题: 1.最大流问题; 2.最小费用最大流问题(最小费用流问题); 3.中国邮路问题;
15
补充几个问题: 1.设置问题; (解池) 2.后处理语言问题; (脚本日志输出)如: execute output{ for(var a in arcs) if(x[a]==1) writeln("x[",a,"]=",x[a]); }
CPLEX在ITS中的应用
一、智能交通中最短路问题的概述
最短路问题是网络理论解决的典型问题之一, 可用来解决配送路径选择、管路铺设、线路安装、 厂区布局和设备更新等实际问题。 定义:给定一个赋权有向图,即给了一个有向 图G=(V,A,W),对A中每一个弧aij =(vi, vj)相应地在W中有权w(aij)=wij,又给定G中 两个顶点vs,vt。设P是G中从vs到vt的一条路, 定义路P的权是P中所有弧的权之和,记为W(P)。 最短路问题就是要在所有从vs到vt的路中,求一 条权最小的路,即求一条从vs到vt的路P*,,使: W(P*)=min W(P),称P*是从vs到vt的最短路。
1
例1. 在纵横交错的公路网中,货车司机希 望找到一条从一个城市到另一个城市的最 短路。假设下面的图表示的是该公路网, 节点表示货车可以停靠的城市,弧上的权 表示两个城市之间的距离(百公里)。那 么,货车从城市A出发到达城市I,如何选 择行驶路线,使所经过的路程最短?
2
3
第二节、最短路问题的数学模型
16
3.作业要求: (1)问题的描述; (2)数学模型的建立; (3)计算机模型的建立及求解(模型文件,数据 文件代码,如果有设置文件需说明,并对求解的 结果进行一下说明); (4)需要对小组成员的贡献进行一个排序。
17
5
优化数学模型的建立
1.已知是什么? 一个有向的网络图,具体来说就是: 节点:数量; 弧:节点到节点间的弧; 弧长:每条弧的弧长; 起始点; 目的点。
6
优化数学模型的建立
2. 目标是什么? 目标:起点到终点的距离最短。 3.约束有哪些? 需要找的从起点到终点的一条路。
12
数据文件:
nodes={A B C D E F G H I}; md_nod={B C D E F G H}; st_nod={A}; en_nod={I}; arcs={<A,B>,<A,C>,<A,D>,<B,E>,<B,F>,<C,E>,<C,F>,<D,E>,<D,F>,<E,G>,<E, H>,<F,G>,<F,H>,<G,I>,<H,I>}; st_arcs={<A,B>,<A,C>,<A,D>}; en_arcs={<G,I>,<H,I>}; C=[6,3,3,6,5,8,6,7,4,6,7,8,9,5,6];
弧如何表示?
(单独用字符串表示?如何与节点联系上?)
如何让节点和弧建立起联系? 最后一个约束条件如何用OPL语言表示?
10
模型文件(1): {string} nodes=...;//节点 {string} md_nod=...;//中间点 {string}st_nod=...;//起始点 {string}en_nod=...; //目的点 tuple Arc{string o; string d; } {Arc}arcs=...; //弧 {Arc}st_arcs=...; //起始弧 {Arc}en_arcs=...;//终止弧 assert forall(i in md_nod) i in nodes; assert forall(i in st_nod) i in nodes; assert forall(i in en_nod) i in nodes; assert forall(i in st_arcs) i in arcs; assert forall(i in en_arcs) i in arcs; assert forall(<i,j> in arcs) i in nodes; assert forall(<i,j> in arcs) j in nodes;
13
求解结果为: // solution (all reachable solutions enumerated, integer optimal) with objective 20 x = [0 0 1 0 0 0 0 0 1 0 0 1 0 1 0]; 即选择了弧有: <"A" "D">、<"D" "F"> 、<"F" "G"> 、<"G" "I"> 因此行驶路径为:A-D-F-G-I,行驶路程为20(百 公里)