zoukankan      html  css  js  c++  java
  • lingo最小生成树问题代码

    最小生成树:
    MODEL:
    sets:
    cities/1..10/:level; !level(i)= the level of city;
    link(cities, cities):
    distance, !The distance matrix;
    x; ! x(i,j)=1 if we use link i,j;
    endsets
    data: !Distance matrix, it need not be symmetirc;
    distance = 0 8 5 9 12 14 12 16 17 22
    8 0 9 15 16 8 11 18 14 22
    5 9 0 7 9 11 7 12 12 17
    9 15 7 0 3 17 10 7 15 15
    12 16 9 3 0 8 10 6 15 15
    14 8 11 17 8 0 9 14 8 16
    12 11 7 10 10 9 0 8 6 11
    16 18 12 7 6 14 8 0 11 11
    17 14 12 15 15 8 6 11 0 10
    22 22 17 15 15 16 11 11 10 0;
    enddata
    n=@size(cities); !The model size;
    ! Minimize total distance of the links;
    min=@sum(link(i,j)|i #ne# j: distance(i,j)*x(i,j));
    !There must be an arc out of city 1;
    @sum(cities(i)|i #gt# 1: x(1,i))>=1;
    !For city i, except the base (city 1);
    @for(cities(i) | i #gt# 1 :
    ! It must be entered;
    @sum(cities(j)| j #ne# i: x(j,i))=1;
    ! level(j)=levle(i)+1, if we link j and i;
    @for(cities(j)| j #gt# 1 #and# j #ne# i :
    level(j) >= level(i) + x(i,j)
    - (n-2)*(1-x(i,j)) + (n-3)*x(j,i);
    );
    ! The level of city is at least 1 but no more n-1,
    and is 1 if it links to base (city 1);
    @bnd(1,level(i),999999);
    level(i)<=n-1-(n-2)*x(1,i);
    );
    ! Make the x's 0/1;
    @for(link : @bin(x));
    END

  • 相关阅读:
    每日思考(2020/08/19)
    每日思考(2020/08/18)
    每日思考(2020/08/17)
    每日思考(2020/08/16)
    每日思考(2020/08/14)
    每日思考(2020/08/13)
    每日思考(2020/08/12)
    每日思考(2020/08/11)
    每日思考(2020/08/10)
    Hibernate入门第一讲——Hibernate框架的快速入门
  • 原文地址:https://www.cnblogs.com/francischeng/p/9437815.html
Copyright © 2011-2022 走看看