2022年LINGO软件简介 .pdf
《2022年LINGO软件简介 .pdf》由会员分享,可在线阅读,更多相关《2022年LINGO软件简介 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LINGO 软件简介LINGO 软件是一个处理优化问题的专门软件,它尤其擅长求解线性规划、非线性规划、整数规划等问题。一个简单示例有如下一个混合非线性规划问题:为整数2132121321322212121,;0,210022.15023 .027798maxxxxxxxxxxxtsxxxxxxx。LINGO 程序(模型) :max=98*x1+277*x2-x12-0.3*x1*x2-2*x22+150*x3; x1+2*x2+2*x3=100; x1=2*x2; gin (x1);gin (x2);! Lingo默认变量非负(注意 :bin(x)表示 x 是 0-1变量; gin(x)表示
2、x 是整数变量; bnd(L,x,U)表示限制 L xU;free(x)表示取消对x 的符号限制,即可正、可负。)结果: Global optimal solution found. Objective value: 9561.200 Extended solver steps: 0 Total solver iterations: 45 Variable Value Reduced Cost X1 6.000000 -76.70000 X2 31.00000 -151.2000 X3 16.00000 -150.0000 Row Slack or Surplus Dual Price 1 9
3、561.200 1.000000 2 0.000000 0.000000 3 56.00000 0.000000 非常简单!在 LINGO 中使用集合为了方便地表示大规模的规划问题,减少模型、数据表示的复杂程度,LINGO引进了“集合”的用法,实现了变量、系数的数组化(下标)表示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 例如:对.,;10)0(; 4, 3, 2, 1),()()()1()(; 4, 3, 2, 1,20
4、)(.)(20)(450)(400min4, 3,2, 1均非负INVOPRPINVIIDEMIOPIRPIINVIINVIIRPtsIINVIOPIRPI求解程序:model : sets: mark/1,2,3,4/:dem,rp,op,inv;! 也可以 vmark/1.4/:dem,rp,op,inv;endsetsmin =sum(mark:400*rp+450*op+20*inv);! 也可以mark(I):400*rp(I)+450*op(I)+20*inv(I);for (mark(I): rp(I)40); for (mark(I)|I#gt#1: inv(I)=inv(I-
5、1)+rp(I)+op(I)-dem(I); inv(1)=10+rp(1)+op(1)-dem(1); data : dem=40,60,75,35; enddataend上面程序在model end 之间有( 1)集合定义、(2)数据输入和( 3)其他三部分内容。集合定义部分(从sets:到 endsets) :定义了一个指标集合mark(可以理解为数组下标及其范围)和其4 个属性 dem、rp、op、inv(用此向量的数组变量)。数据输入部分(从data:到 enddata)依次给出常量(dem)的值。其他部分:给出优化目标及约束。一般而言, LINGO 中建立优化模型的程序可以由五部分
6、组成,或称为五段(section) :(1)集合段( SETS) :这部分以“SETS: ”开始,以“ ENDSETS ”结束,作用在于定义必要的集合变量(SET)及其元素( member,含义类似于数组的下标)和属性(attribute,含义类似于数组) 。(2)目标与约束段:这部分实际上定义了目标函数、约束条件等,但这部分没有段的开始和结束标记;该段一般常用到LINGO 内部函数,尤其是和集合相关的求和函数SUM和循环函数 FOR 等。(3)数据段( DATA ) :这部分以“DATA : ”开始,以“ENDDA TA”结束,作用在于对集合的属性(数组)输入必要的常数数据。格式为:attr
7、ibute(属性 )=value_list( 常数列表 ); 常数列表中的数据之间可以用逗号、空格或回车符分隔。如果想要在运行时才对参数赋值,可以在数据段使用输入语句,其格式为“变量名=?; ” ,但仅限对单个变量赋值,而不能用于属性变量(数组)的单个元素。(4)初始段( INIT ) :这部分以“INIT : ”开始,以“ ENDINIT ”结束,作用在于对集合的属性(数组)定义初值(因为求解算法一般是迭代算法,提供一个较好的初值,能提高计算效果)。定义初值的语句格式为:attribute(属性 )=value_list( 常数列表 ); 这与数据段中的用法类似。名师资料总结 - - -精品
8、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - (5)计算段( CALC ) :这部分以“CALC : ”开始,以“ ENDCALC ”结束,作用在于对一些原始数据进行预处理加工,使其成为模型直接需要的数据。该段中通常是计算赋值语句。基本集合与派生集合为了处理二维数组变量等有多个下标的问题,LINGO引入了“派生集”的概念。我们把直接列出元素的指标集合叫“基本集合”,而基于其他集合派生出来的二维或多维指标集合称为“派生集” 。派生集的定义格式为:派生集名(
9、原始集合1,原始集合2,原始集合n) :属性变量列表;实际上就是笛卡儿积的意思,即:派生集=(i1,i2,in)| i1集合 1, i2集合 2, in集合 n 。1)一个应用例子(布局问题):某些建筑工地的位置(用平面坐标a,b 表示)及水泥日用量 d 已知。现有A、B 两临时料场位于P(5, 1) 、Q(2,7) ,日储量20。问 A、B 两料场分别向各工地运输多少吨水泥,使总吨公里数最小?若重新安排两料场的位置,应怎样安排才能使总吨公里数最小?这样安排可节省多少吨公里?1 2 3 4 5 6 a 1.25 8.75 0.5 5.75 3 7.25 b 1.25 0.75 4.75 5 6
10、.5 7.75 d 3 5 4 7 6 11 设工地位置(ai,bi),水泥日用量为di(i=1,2,6) ;料场位置(xi,yi),日储量 ej,j=1,2;从料场 j 向工地 i 运送量为cij。该问题的数学模型为:.2, 1,6,.,1,.)()(min6121216122jecidctsbyaxcfjiijjiijjiijijijLINGO 求解程序为:MODEL: sets: Imark/1.6/:a,b,d; Jmark/1,2/:x,y,e; IJmark(Imark,Jmark):c; endsetsdata: !Location for demand(需求点位置 );a=1.
11、25,8.75,0.5,5.75,3,7.25; b=1.25,0.75,4.75,5,6.5,7.75; !Quantities of the demand and supply(供需量 );d=3,5,4,7,6,11;e=20,20; enddatainit: !Initial location for the supply(初始点 );x,y=5,1,2,7; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - endini
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年LINGO软件简介 2022 LINGO 软件 简介
限制150内