数学建模中lingo的使用说课.pptVIP

  • 7
  • 0
  • 约1.19万字
  • 约 40页
  • 2016-10-24 发布于湖北
  • 举报
sets: set1/A,B,C/: X,Y; endsets data: X=1,2,3; Y=4,5,6; enddata 也可以写成下面的形式: sets: set1/A,B,C/: X,Y; endsets data: X,Y=1 4 2 5 3 6; enddata 注意:LINGO在为对象指定值时,首先在n个对象的第1个索引处依次分配数值列中的前n个对象,然后在n个对象的第2个索引处依次分配数值列中紧接着的n个对象,……,以此类推。 把上面的代码在lingo中运行,可得到下面的结果: Variable Value X( A) 1.000000 X( B) 2.000000 X( C) 3.000000 Y( A) 4.000000 Y( B) 5.000000 Y( C) 6.000000 在初始部分中,可以输入初始声明(initialization statement),和数据部分中的数据声明相同。对实际问题的建模时,初始部分并不起到描述模型的作用,在初始部分输入的值仅被LINGO求解器当作初始点来用,并且仅仅对非线性模型有用。和数据部分指定变量的值不同,LINGO求解器可以自由改变初始部分初始化的变量的值。 初始部分 初始部分的定义方法: 一个初始部分以“init:”开始,以“endinit”结束。初始部分的初始声明规则和数据部分的数据声明规则相同。 例如(在lingo中所有变量是不分大小写的): init: X, Y = 2,0.1; endinit max=x+y; Y=@log(X); X^2+Y^2=1; 函数: 函数运算前必须加@号 @abs(x) @sin(x) @cos(x) @tan(x) @exp(x) 绝对值 正弦 余弦 正切 e为底指数 @log(x) @sign(x) @smax @smin @floop(x) e为底对数 符号函数 最大数 最小数 取整 循环: @FOR(集名 [ (循环字母) [ | 循环条件]]: 表达式列表) 最大: @MAX(集名 [ (循环字母) [ | 循环条件]]: 表达式) 最小: @MIN(集名 [ (循环字母) [ | 循环条件]]: 表达式) 取和: @SUM(集名 [ (循环字母) [ | 循环条件]]: 表达式) 运输问题的lingo程序 sets: w/1..6/:capacity; v/1..8/:demand; links(w,v):c,x; endsets data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; c=6 2 6 7 4 2 5 9 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 min=@sum(links(i,j):c(i,j)*x(i,j)); @for(w(i):@sum(v(j):x(i,j))=capacity(i)); @for(v(j):@sum(w(i):x(i,j))=demand(j)); Matlab求解此线性规划(代码): f=[6;2;6;7;4;2;5;9;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]; A=[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

文档评论(0)

1亿VIP精品文档

相关文档