精华内容
下载资源
问答
  • lingo 最短路径
    千次阅读
    2020-02-07 14:07:42

    在这里插入图片描述

    model:
    sets:
    cities/A,B1,B2,C1,C2,C3,D/;
    roads(cities,cities) /A B1,A B2,B1 C1,B1 C2,B1 C3,B2 C1,
    B2 C2,B2 C3,C1 D,C2 D,C3 D/:w,x;
    endsets
    data:
    w=2 4 3 3 1 2 3 1 1 3 4;
    enddata
    n=@size(cities); !终点,可修改
    min=@sum(roads:w*x);
    @for(cities(i)|i #ne#1 #and# i #ne#n:@sum(roads(i,j):x(i,j))=@sum(roads(j,i):x(j,i)));
    !除了起点和重点,出入度相同;
    @sum(roads(i,j)|i #eq#1:x(i,j))=1;!启动只有1个出度;
    @sum(roads(i,j)|j #eq#n:x(i,j))=1;!终点只有1个入度;
    end
    
    更多相关内容
  • lingo最短路径问题

    2018-08-09 12:07:15
    lingo最短路径问题。城市之间线路及距离已知。从某个城市出发,到达目的城市,通过lingo编程选取最短路径
  • 最短路程问题,Lingo语言实现,代码与结果文档
  • 利用lingo软件编程求,最短路径问题。
  • 本文以最短路径问题为例,在给出佛洛伊德算法的基础上,设计了求解该算法的计算程序,这样可大大提 高最短路径计算的效率。 [关键词]最短路径;动态规划;程序设计
  • lingo解决“最短路径问题”

    万次阅读 多人点赞 2014-04-08 16:41:57
    求城市A到城市D的最短路径? 用

    求城市A到城市D的最短路径?

    用ligno解决的代码,如下:

    --------------------------------------------------------------------------------------------------------------

    model:
    !A到D的最短路径;
    !We hava a network of 7 cities.
     we want to find the length of the shortest route form city 1 to city 7;

    sets:
     !Here is our primitive set of seven cities;
     cities /A,B1,B2,C1,C2,C3,D/ ;
     !The Derived set "roads" lists the roads that
       exist between the cities ;
     roads(cities,cities)/
       A,B1 A,B2 B1,C1 B1,C2 B1,C3 B2,C1 B2,C2 B2,C3
       C1,D C2,D C3,D/: w,x;
    endsets

    data:
     !Here are  the distances that correspond to above links;
     w= 2 4 3 3 1 2 3 1 1 3 4;
    enddata

    n= @size(cities); !The number of cities;
    min= @sum(roads: w*x);
    @for(cities(i)|i #ne# 1 #and# i #ne# n:
       @sum(roads(i,j): x(i,j))= @sum(roads(j,i): x(j,i)));
    @sum(roads(i,j)|i #eq# 1: x(i,j))=1;
    end

    ------------------------------------------------------------------------------------------------------

    结果如下:

    解释如下:

       即最短路径为A→B1→C1→D,最短路长为6个单位。

     

    展开全文
  • 动态规划(A到E的最短路径,单个目的地)
  • 怎么用lingo编写每个节点互相之间的最短路啊 <p style="text-align:center"><img alt="" src="https://img-ask.csdnimg.cn/upload/1608999252753.vsdx" /></p>  </p>
  • 100个城市最短路径

    2018-10-13 00:21:17
    100个城市最短路径
  • Lingo与最短路问题

    千次阅读 2018-08-16 16:10:44
    Lingo与最短路问题 代码如下: !最短路问题; model: data: n=10; enddata sets: cities/1..n/: F; !10个城市; 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...

    Lingo与最短路问题

    这里写图片描述

    代码如下:

    !最短路问题;
    model:
    data:
      n=10;
    enddata
    sets:
      cities/1..n/: F;  !10个城市;
      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;
    endsets
    data:
      D=
        6  5
        3  6  9
        7  5  11
        9  1
        8  7  5
        4  10
        5
        7
        9;
    enddata
      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
    
    展开全文
  • 最短路径dijkstra算法精品代码(超详解)

    万次阅读 多人点赞 2018-08-13 14:22:05
    这个算法用于解决图中单源最短路径问题。所谓单源节点是指给定源节点,求图中其它节点到此源节点的最短路径。如下图所示:给定源节点a,求节点b到a的最短距离。 (图来自于参考资料2) 那么如何寻找?还是...

    还有:Floyd 算法最短路径问题精品(超详解)

    先看一个视频,如果无法播放:点这里

    【计算机科学速成课】Dijkstra算法视频讲解

    一:简介

    这个算法用于解决图中单源最短路径问题。所谓单源节点是指给定源节点,求图中其它节点到此源节点的最短路径。如下图所示:给定源节点a,求节点b到a的最短距离。

    这里写图片描述
    (图来自于参考资料2)

    那么如何寻找?还是以上图为例:

    1)初始化:设定除源节点以外的其它所有节点到源节点的距离为INFINITE(一个很大的数),且这些节点都没被处理过。

    2)从源节点出发,更新相邻节点(图中为2,3,6)到源节点的距离。然后在所有节点中选择一个最短距离的点作为当前节点。

    3)标记当前节点为done(表示已经被处理过),与步骤2类似,更新其相邻节点的距离。(这些相邻节点的距离更新也叫松弛,目的是让它们与源节点的距离最小。因为你是在当前最小距离的基础上进行更新的,由于当前节点到源节点的距离已经是最小的了,那么如果这些节点之前得到的距离比这个距离大的话,我们就更新它)。

    4)步骤3做完以后,设置这个当前节点已被done,然后寻找下一个具有最小代价(cost)的点,作为新的当前节点,重复步骤3.

    5)如果最后检测到目标节点时,其周围所有的节点都已被处理,那么目标节点与源节点的距离就是最小距离了。如果想看这个最小距离所经过的路径,可以回溯,前提是你在步骤3里面加入了当前节点的最优路径前驱节点信息。

    看文字描述显得苍白无力,你可以结合上图,看下这个视频:http://v.youku.com/v_show/id_XMjQyOTY1NDQw.html
    (dijkstra演示),然后就清楚了。
    我比较懒不想打字所以以上文字来源:
    代码原创
    http://www.cnblogs.com/wb-DarkHorse/archive/2013/03/12/2948467.html
    下面代码是带路径的,其他的自己可以修改。

    #include <iostream>
    #include <cstring>
    #include <stack>
    using namespace std;
    #define MAX 100
    #define INF 0x3f3f3f3f
    int dist[MAX], path[MAX];
    struct MGraph
    {
    	int edges[MAX][MAX];//邻接矩阵,记录的是两点之间的距离,也就是权值 
    	int n,e;//顶点数和边数
    }G;
    void init() {
        memset(G.edges, INF, sizeof(G.edges));//默认为INF
    }
    void insert(int u, int v, int w) {
        G.edges[u][v] = w;//
    }
    void printfPath(int path[], int a){
    	stack<int> s;
    	//这个循环以由叶子结点到根结点的顺序将其入栈
    	while(path[a] != -1){
    		s.push(a);
    		a = path[a];
    	} 
    	s.push(a);
    	while(!s.empty()){
    		cout << s.top() << " ";//打印栈顶元素,实现了顶点的逆序打印
    		s.pop(); 
    	}
    	cout << endl;
    } 
    void Dijkstra(MGraph g, int v, int dist[], int path[]){ //顶点默认从0到n 
    	int set[MAX], min, i, j, u;
    	//对各个数组进行初始化
    	for(i = 0; i < g.n; i++){
    		dist[i] = g.edges[v][i];
    		set[i] = 0;
    		if(g.edges[v][i] < INF){
    			path[i] = v;
    		}else{
    			path[i] = -1;
    		}
    	} 
    	set[v] = 1; 
    	path[v] = -1;
    	//初始化结束,关键操作开始
    	for(i = 0; i < g.n - 1; i++)
    	{
    		min = INF;//找到的点   目前最小 
    		//这个循环每次从剩余顶点中选出一个顶点,通往这个顶点的路径在通往所有剩余顶点的路径中是长度最短的
    		for(j = 0; j < g.n; j++){
    			if(set[j] == 0 && dist[j] < min){
    				u = j;
    				min = dist[j];
    			}
    		} 
    		set[u] = 1;//将选出的顶点并入最短路径中
    		//这个循环以刚并入的顶点作为中间点,对所有通往剩余顶点的路径进行检测
    		for(j = 0; j < g.n; j++) {
    			//这个if判断顶点u的加入是否会出现通往顶点j的更短的路径,如果出现,则改变原来路径及其长度,否则什么都不做
    			if(set[j] == 0 && dist[u] + g.edges[u][j] < dist[j]){
    				dist[j] = dist[u] + g.edges[u][j];//更新路径长度 
    				path[j] = u;//更新路径顶点 
    			} 
    		} 
    	} 
    }
    int main() {
    	init();
        int n, m;//n个点,m条边
        int a, x, y, w;
        cin >> m >> n;
        G.e = m;
        G.n = n;
         
        for(int i = 0; i < m; i++){
    		cin >> x >> y >> w;
            insert(x, y, w);
        }
        Dijkstra(G, 0, dist, path);
        printfPath(path, 5);
        for(int i = 0; i < n; i++) {
        	cout << dist[i] << " ";
    	} 
        return 0;
    }
    /*测试数据
    12 7 
    0 1 4
    0 2 6
    0 3 6
    1 4 7
    1 2 1
    2 4 6
    2 5 4
    3 2 2
    3 5 5
    4 6 6
    5 4 1
    5 6 8
    */
    
    展开全文
  • 运用lingo计算Floyd算法最短路径
  • 运筹学实验_最短路径

    2021-06-28 00:55:03
    运筹学实验四实验目的:实验要求:报告内容:Python实现:代码:Lingo实现:代码: 实验目的: python实现Dijkstra算法,lingo解决最短路问题 实验要求: 报告内容: Python实现: 代码: def startwith(start: int,...
  • 最短路径是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。3、在路径优化问题还包括节约里程法,遗传算法,神经
  • 对多目标规划+最短路径+最小生成树思想的简单理解
  • 最短路径问题

    2014-11-13 22:58:48
    1.在网图(带权值的图)和非网图,最短路径的含义是不同的。由于非网图它边上没有权值,所谓的最短路径,其实就是指 两顶点之间边数最少的路径 ;而对于网图来说,最短路径是指 两顶点之间经过的边上的权值之和最少 ...
  • 矩阵path用来存放每对顶点之间最短路径上所经过的顶点的序号。Floyd算法的 Matlab程序如下: clear;clc; n=6; a=zeros(n); a(1,2)=50;a(1,4)=40;a(1,5)=25;a(1,6)=10; a(2,3)=15;a(2,4)=20;a(2,6)=25;a...
  • 最短路径问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 19990 Accepted Submission(s): 5947 Problem Description 给你n个点,m条无向边,每...
  • 如果已经明白了迪杰斯特拉算法而想知道花费问题、城市之间的物资问题、最短路径条数问题的朋友可以往下翻。。。。 一、迪杰斯特拉算法讲解 算法思想是从起点开始,找到一条起点能到达顶点中的边权最小的那个点,...
  • 用Floyd算法求解最短路径问题 迪克斯特拉(Dijkstra)算法 Floyd算法的 Matlab程序 使用LINGO9.0编写的FLOYD算法 Floyd 算法的基本思想 计算赋权图中各对顶点之间短路径,显然可以调用 Dijkstra 算法。具体方法...
  • tsp问题俗称旅行商问题,一个商人从一个城市出发,经过所有的城市一次且仅一次回到出发的城市,问旅行商应当如何选择路径使总路径最短。本程序是用lingo软件编写的,只需要更改城市的数目以及距离矩阵即可。
  • lingo最短路问题代码

    千次阅读 2018-08-07 16:29:00
    MODEL: ! We have a network of 7 cities. We want to find the length of the shortest route from city 1 to city 7; sets: ! Here is our primitive set of seven cities; cities/A, B1...
  • 最短路径---弗洛伊德算法】  本算法以无向网为例,存储方式采用邻接矩阵  1)将该网以邻接矩阵的方式存储,由于这里的示例采用无向图,因此它是一个对称阵  2)弗洛伊德算法的优势在于,它在求任意顶点到其他...
  • n)的最短路径,而迪杰斯特拉算法求得是某一点到其它顶点(1->n)的最短路径 所以第一种方法就是将迪杰斯特拉算法循环n次。 第二种就是直接运用弗洛伊德算法: 原图: 一,大致过程演示解释 这里只说所有...
  • 奇点需要配合LINGO进行去除,有需要请联系1822285076@qq.com,需要一定费用。总程序:奇点消除lingo代码:
  • 求得的最短路径为 1→2→5→6→3→7→10→9→11,最短路径长度为 13。
  • 算法笔记--最短路径之dijkstra算法

    千次阅读 2014-08-25 20:15:55
    1 最短路径算法 在日常生活中,我们如果需要常常往返A地区和B地区之间,我们最希望知道的可能是从A地区到B地区间的众多路径中,那一条路径的路途最短。最短路径问题是图论研究中的一个经典算法问题,旨在寻找图...
  • 利 用 数理规划软件 LINGO 求解多点之间距离问 题 的 研 究 方 法, 计 算 出 该 方 案 距 离 最 短 的 配 送 路 径, 该研究结果也在一定程度上验证了该算法研究理论及研究方法的可行性。
  • LINGO求解最短路径问题,此方法为0-1规划,只适用于简单的ILP问题。

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 360
精华内容 144
关键字:

lingo 最短路径