1、运行速度快、计算能力强;,一、LINGO介绍,6,LINGO的主要功能特色为:内置建模语言,提供几十个内部函数,从 而能以较少的语句,较直观的方式描述较大规 模的优化模型;将集合的概念引入编程语言,很容易将实 际问题转换为LINGO模型;能方便地与Excel、数据库等其他软件交换 数据。,二、用LINGO解决基本的线性规划问题,例1求解如下的线性规划模型:,7,二、用LINGO解决基本的线性规划问题,8,我们编辑一个LINGO程序:,MAX=50*X1+70*X2;X1+3*X2=18;,!目标函数;!X1,X2为决策变量;,2*X1+X2=16;4*X2=20;第二到四行均为约束条件,二、用
2、LINGO解决基本的线性规划问题,我们编辑程序并求解后,得到LINGO Model窗口、Solution report窗口和Solver status窗口如下:,9,二、用LINGO解决基本的线性规划问题,10,通过此例我们对LINGO有了一个基本的认识,下 面我们来总结一下LINGO语法规定:求目标函数的最大值或最小值分别用MAX=或MIN=来表示;每个语句必须以分号“;”结束,每行可以有 多个语句,语句可以跨行;变量名称必须以字母(A-Z)开头,由字母、数 字(0-9)和下划线所组成,长度不超过32个字符,不 区分大小写;,二、用LINGO解决基本的线性规划问题,11,可以给语句加上标号,
3、例如OBJ MAX=50*X1+70*X2(乘号*不能省略);以!开头,以“;”结束的语句是注释语句,显示为绿色;如果对变量的取值范围没有做特殊说明,则所 有默认的决策变量均为非负数;LINGO模型以语句一般以“MODEL:”开头,以“END”结束,对于比较简单的模型,这两语句可 以省略变量界定函数(见下页),二、用LINGO解决基本的线性规划问题,12,8.变量界定函数:BND(L,x,U),即L=x=U;注意:没有想象中的的SLB函数与SUB函数;BIN(x),限制x仅取整数0或1;不是INT(x)函数;FREE(x),取消对x的符号限制;GIN(x),限制x仅取非负整数。,三、用LING
4、O解决非线性规划问题,例2求解二次规划问题:,MODEL:MIN=x2+y2-2*x-4*y;,13,!x,y为决策变量;第二、三行均为约束条件;,x+y=1;y=0.5;end,三、用LINGO解决非线性规划问题,14,三、用LINGO解决非线性规划问题,结果是:当x=0.5,y=0.5时取得最小值,最 小值为-2.5注意比较:当去掉第二个约束条件y=0.5时,最小 值为-3(当x=0,y=1时);当去掉所有约束条件(无条件最值)时,最 小值为-5(当x=1,y=2时);,15,三、用LINGO解决非线性规划问题,例3求解非线性规划问题:,16,三、用LINGO解决非线性规划问题,17,三、
5、用LINGO解决非线性规划问题,18,三、用LINGO解决非线性规划问题,例4求解二次规划问题:,直接使用LINGO最大化过程:max=98*x1+277*x2-x12-0.3*x1*x2-2*x22;x1+x2=100;x1=2*x2;gin(x1);gin(x2);,19,三、用LINGO解决非线性规划问题,20,三、用LINGO解决非线性规划问题,21,结果是:当x1=35,x2=65时最大利润为11077.50,【说明:在LINGO11版本中执行上述同样程序 后,其结果是:当 x1=36,x2=64取得最大 利润11076.80,怀疑是旧版本的算法在数值不 均衡时引起的计算错误。不过当采用最小化目 标函数时,却并不出错!】,