第3讲LINGO基本使用方法.pptVIP

  • 51
  • 0
  • 约9.17千字
  • 约 46页
  • 2015-09-02 发布于重庆
  • 举报
第3讲LINGO基本使用方法.ppt

(1) 习题 1 利用LINGO软件中的集合求解下列规划问题 (2)目标与约束段:目标函数、约束条件等,没有段的开始和结束标记,因此实际上就是除其它四个段(都有明确的段标记)外的LINGO模型。 这里一般要用到LINGO的内部函数,尤其是与集合相关的求和函数@SUM和循环函数@FOR等。 上例中定义的目标函数与quarters的元素数目是 4或 1000并无具体的关系。约束的表示也类似。 (3)数据段(DATA):以 “DATA:” 开始, “ENDDATA”结束,对集合的属性(数组)输入必要的常数数据。 格式为:“attribute(属性) = value_list(常数列表);” 常数列表(value_list)中数据之间可以用逗号“,”分开,也可以用空格分开(回车等价于一个空格),如上面对DEM的赋值也可以写成“DEM=40 60 75 25;”。 在LINGO模型中,如果想在运行时才对参数赋值,可以在数据段使用输入语句。但这仅能用于对单个变量赋值,输入语句格式为:“变量名 = ?;”。例如,上例中如果需要在求解模型时才给出初始库存量(记为A),则可以在模型中数据段写上语句:”A = ?;” 在求解时LINDO系统给出提示界面,等待用户输入变量A的数值。当然,此时的约束语句 INV(1)=10+RP(1)+OP(1)-DEM(1); 也应该改写成 INV(1)=A+RP(1)+OP(1)-DEM(1); 这样,模型就可以计算任意初始库存量(而不仅仅只能计算初始库存量为10)的情况了。 (4)初始段(INIT):以“INIT: ”开始, “ENDINIT”结束,对集合的属性(数组)定义初值(因为求解算法一般是迭代算法,所以用户如果能给出一个比较好的迭代初值,对提高算法的计算效果是有益的)。 如果有一个接近最优解的初值,对LINGO求解模型是有帮助的。定义初值的格式为: “attribute(属性) = value_list(常数列表);” 这与数据段中的用法是类似的。 上例中没有初始化部分,我们将在下一个例子中举例说明。 (5)计算段(CALC):以“CALC: ”开始, “ENDCALC”结束,对一些原始数据进行计算处理。 在实际问题中,输入的数据通常是原始数据,不一定能在模型中直接使用,可以在这个段对这些原始数据进行一定的“预处理”,得到模型中真正需要的数据。 例如上例,如果希望得到全年的总需求和季度平均需求,可以增加这个段: CALC: T_DEM = @SUM(quarters: DEM); !总需求; A_DEM = T_DEM / @size(quarters); !平均需求; ENDCALC 在计算段中也可以使用集合函数(其中函数@size(quarters)表示集合quarters的元素个数,这里也就是4)。这时,变量T_DEM的值就是总需求,A_DEM的值就是平均需求(如果需要的话,这两个变量就可以在程序的其它地方作为常数使用了)。 注:上面的两个语句不能交换顺序,因为计算A_DEM必须要用到T_DEM的值。此外,在计算段中只能直接使用赋值语句,而不能包含需要经过解方程或经过求解优化问题以后才能决定的变量。 2.3.2 定义派生集合 例5 建筑工地的位置(用平面坐标a, b表示,距离单位:公里)及水泥日用量d(吨)下表给出。有两个临时料场位于P (5,1), Q (2, 7),日储量各有20吨。从A, B两料场分别向各工地运送多少吨水泥,使总的吨公里数最小。两个新的料场应建在何处,节省的吨公里数有多大? 11 6 7 4 5 3 d 7.75 6.5 5 4.75 0.75 1.25 b 7.25 3 5.75 0.5 8.75 1.25 a 6 5 4 3 2 1 建立模型 记工地的位置为 ,水泥日用量为 ;料场位置为 ,日储量为 ;从料场 向工地 的运送量为 。 使用现有临时料场时,决策变量只有 (非负),所以这是LP模型;当为新建料场选址时决策变量为 和 ,由于目标函数 对 是非线性的,所以在新建料场时是NLP模型。先解NLP模型,而把现有临时料场的位置作为初始解告诉LINGO。 本例中集合的概念 利用集合的概念,可以定义需求点DEMAND和供应点SUPPLY两个集合,分别有6个和2个元素(下标)。但决策变量(运送量) 与集合DEMAND和集合SUPPLY都有关系的。该如何定义这样的属性? 集合的属性相当于以集合的元素为下标的数组。这里的 相当于二维数组。它的两个下标分别来自集

文档评论(0)

1亿VIP精品文档

相关文档