最短路程问题(lingo)代码与结果文档
"最短路程问题(Lingo 代码与结果文档)" 本文档旨在解决最短路程问题,使用 Lingo 语言实现,并提供了代码和结果文档。该问题的定义是:给定 N 个点,计算从每个点到达终点 Np 的最短路线。这里我们使用动态规划方法来解决该问题。 我们定义状态 space 为所有点的集合,决策集合为除了当前点以外的所有点。我们选择一个点 jp,计算从当前点 ip 到 jp 的距离 ijc,并转入新状态 jp。 repeat 这个过程直到达到终点 Np。 定义函数 f(ip) 为从 ip 点出发至终点 Np 的最短路程。根据最优化原理,我们可以得到递归方程: f(ip) = min {ijc + f(jp)},其中 jp 是除了 ip 以外的所有点。 这个递归方程可以使用 Lingo 语言方便地解决。下面是 Lingo 代码: model: data: n=10; end datasets: cities/1..n/: F; roads(cities,cities)/ 1,2 1,3 2,4 2,5 2,6 3,4 3,5 3,6 4,7 4,8 5,7 5,8 5,9 6,8 6,9 7,10 8,10 9,10 /: D, P; end sets data: D= 6 5 3 6 9 7 5 11 9 1 8 7 5 4 10 5 7 9; end data F(n)=0; @for(cities(i) | i #lt# n: F(i)=@min(roads(i,j): D(i,j)+F(j)); ); !如果 P(i,j)=1,则点 i 到点 n 的最短路径的第一步是 i --> j,否则就不是。 @for(roads(i,j): P(i,j)=@if(F(i) #eq# D(i,j)+F(j),1,0) ); end 计算的部分结果为: Feasible solution found at iteration: 0 Variable Value N 10.00000 F( 1) 17.00000 F( 2) 11.00000 F( 3) 15.00000 F( 4) 8.000000 F( 5) 13.00000 F( 6) 11.00000 F( 7) 5.000000 F( 8) 7.000000 F( 9) 9.000000 F( 10) 0.000000 P( 1, 2) 1.000000 P( 1, 3) 0.000000 P( 2, 4) 1.000000 P( 2, 5) 从结果可以看出,F(i) 是从点 i 到达终点 Np 的最短路程,P(i,j) 表示从点 i 到点 j 是否是最短路径的第一步。 本文档提供了使用 Lingo 语言解决最短路程问题的代码和结果文档。该问题的定义、解决方法和结果都得到了详细的解释。
剩余6页未读,继续阅读
- 粉丝: 112
- 资源: 37
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Java语言的CH34xUART通信模块设计源码
- 基于Python实现的zbus Python客户端设计源码
- 基于SpringBoot+Shiro认证的学生教师成绩管理系统设计源码
- 基于Java的贵阳人民大道项目后端设计源码
- Prius2004永磁同步电机设 计 报.告: 磁路法、maxwell有限元法、MotorCAD温仿真、应力分析 内容::
- FDTD算法仿真超透镜,包括单元参数扫描和选择,聚焦建模设计,近场计算远场,相位计算及离散,对不同材料 不同波长只需修改相关周期
- 基于Java平台的hcl_oa办公自动化系统设计源码
- 基于深度学习的城市叫车需求预测模型设计源码
- 基于Vue框架的Python、JavaScript、HTML多语言交互设计源码——cch毕业设计作品
- 某大厂量产三相光伏并网逆变器资料,规格16-20KW,两路MPPT,T型三电平逆变拓扑,完整电路图和控制板PCB,双DSP平台
- 1
- 2
前往页