LINGO软件学习入门
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二步:在模型窗口中输入模型
max z 2x1 3x 2 4x1 3x 2 10 s.t. 3x1 5x 2 12 x ,x 0, 1 2
输入: model: max=2*x1+3*x2; 4*x1+3*x2<10; 3*x1+5*x2<12; end
第三步:求解模型
LINGO软件学习
一. 优化模型与优化软件简介 二. LINGO软件的基本使用方法 三. LINGO软件求解线性规划问题
一. 优化模型与优化软件简介
数学规划模型
实际问题中 的优化模型 x~决策变量 数 学 规 划
Min(或Max) z f ( x), x ( x1 ,x n ) s.t. g i ( x) 0, i 1,2, m
有效步数
运行程序的LINGO报告窗口(如下图)
注:LINGO不询问是否进行敏感性分析,敏感性分析需要将来通过修改系 统选项启动敏感性分析后,再调用“REPORT|RANGE”菜单命令来实现。现
在同样可以把模型和结果报告保存在文件中。
解释
Objective value: 最优目标值 Infeasibilities:不可行性 Total solver iterations:单纯形法的迭代次数 Variable:变量 Value:给出最优解中各变量的值 Reduced Cost:各个变量的检验数
max z x1 2x 2 2x1 5x 2 12 s.t. x1 2x 2 8 x ,x 0 1 2
model: max=x1+2*x2; 2*x1+5*x2>12; x1+2*x2<8; End 注意:乘法一定用*
2、求解线性规划:
min z 20x1 10x 2 5x1 4x 2 24 s.t. 2x1 5x 2 5 x ,x 0 1 2
1、选择菜单 LINGO|Solve或者按工具栏的
2、LINGO开始编译模型,如有语法错误将 返回一个错误的消息并指明错误出现的位 置;如果通过编译, LINGO将激活 Solver 运算器 寻求模型的最优解;
3、首先出现solver status 窗口,其作用是监控 solver的进展和显示模型的维数等信息;
如下的数学模型称为数学规划(Mathematical Programming, MP): m in f ( x ) s .t . g i ( x ) 0, i 1,..., p h j ( x ) 0, j 1,...,q
X x Rn
gi ( x) 0, i 1,..., p h j ( x) 0, j 1,..., q
6 、求解问题
max z x1 x 2 2 x1 x 2 2 x 2x 2 2 s.t. 1 x1 x 2 5 x1 0
♂返回
7、 求下述整数规划问题的最优解
max z 3 x1 2 x2 2 x1 3 x2 14 x1 0.5 x2 4.5 x , x 0, 且均取整数值 1 2
4、计算完成后出现Solution Report窗口显示模 型解的详细信息;
• 运行状态窗口
Variables(变量数量): 变量总数(Total)、 非线性变量数(Nonlinear)、 整数变量数(Integer)。 Constraints(约束数量): 约束总数(Total)、 非线性约束个数(Nonlinear)。 Nonzeros(非零系数数量): 总数(Total)、 非线性项系数个数(Nonlinear)。 Generator Memory Used (K) (内存使用 量) • Elapsed Runtime (hh:mm:ss) (求解花费的时间)
3、尽量使用线性模型,减少非线性约束和非线性变量的个数 (如x/y <5 改为x<5y)
4、合理设定变量上下界,尽可能给出变量初始值
5、模型中使用的参数数量级要适当
(如小于103)
二. LINGO软件的基本使用方法
§1 LINGO入门
第一步:启动LINGO
屏幕显示如下: 标记LINGO的外窗口是主框架窗口,主框架窗 口的上面包含所有的命令菜单和命令工具栏; 标记LINGO MODEL-LINGO1的子窗口是一个 新的、空白的模型窗口。
f(x)~目标函数
T
gi(x)0~约束条件
线性规划(LP) 二次规划(QP) 非线性规划(NLP) 整数规划(IP)
线性规划问题的标准形式
目标函数: max Z c1 x1 c2 x2 cn xn
①
a11 x1 a12 x2 a1n xn b1
约束条件:
释语句和TITLE语句外的其他语句都是约束条件,因此语句的 顺序并不重要 。 •限定变量取整数值的语句为“@GIN(X1)”和“@GIN(X2)”,不 可以写成“@GIN(2)”,否则LINGO将把这个模型看成没有整数 变量。 •LINGO中函数一律需要以“@”开头,其中整型变量函数 (@BIN、@GIN)和上下界限定函数(@FREE、@SUB、
model: max=20*x1+10*x2; 5*x1+4*x2<24; 2*x1+5*x2>5; end
练习
1、解线性规划
max z x1 x 2 2 x1 x 2 2 x 2x 2 2 s.t. 1 x1 x 2 5 x1 0
Baidu Nhomakorabea2、求解问题
约束集或可行域
常用优化软件
LINDO/LINGO软件 MATLAB优化工具箱/mathematica优化程序 包 EXCEL软件的优化功能 SAS(统计分析)软件的优化功能
建模时需要注意的几个基本问题
1、尽量使用实数优化,减少整数约束和整数变量 2、尽量使用光滑优化,减少非光滑约束的个数 如:尽量少使用绝对值、符号函数、多个变量求最大/最小 值、四舍五入、取整函数等
②
am1 x1 am 2 x2 amn xn bm x1 0 xn 0
③
非线性规划
设 x ( x1 ,..., xn )T R n ,
f ( x); gi ( x), i 1,..., p ; h j ( x), j 1,..., q : R n R ,
例1:加工奶制品的生产计划
1桶 牛奶 或 12小时 8小时 3公斤A1 获利24元/公斤
4公斤A2
获利16元/公斤
每天: 50桶牛奶
时间480小时 至多加工100公斤A1
制订生产计划,使每天获利最大 • 35元可买到1桶牛奶,买吗?若买,每天最多买多少? • 可聘用临时工人,付出的工资最多是每小时几元? • A1的获利增加到 30元/公斤,应否改变生产计划?
• 运行状态窗口
当前模型的类型 :LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP (以I开头表示 IP,以PI开头表示PIP)
当前解的状态 : "Global Optimum", "Local Optimum", "Feasible", "Infeasible“(不可行), "Unbounded“(无界), "Interrupted“(中断), "Undetermined“(未确定) 当前约束不满足的总量(不是不 满足的约束的个数):实数(即使 该值=0,当前解也可能不可行, 因为这个量中没有考虑用上下界 命令形式给出的约束)
求解 器 (求 解程 序 )状 态框
解的目标函数值
目前为止的 迭代次数
• 运行状态窗口
使用的特殊求解程序 : B-and-B (分枝定界算法) Global (全局最优求解程序) Multistart(用多个初始点求解的程序)
目前为止找到的可行 解的最佳目标函数值 扩展 的求 解器 (求解 程序) 状态 框 目标函数值的界 特殊求解程序当前运行步数: 分枝数(对B-and-B程序); 子问题数(对Global程序); 初始点数(对Multistart程序)
Slack or Surplus:约束条件的松驰变量或剩余变量的值
Dual Price:对偶价格或影子价格
§2 Lingo的基本用法注意事项
1、每一个模型都以model:开始, 又以end结束,也可省略此结构; 2、目标函数必须由 “min =”或“max =”开头。 3、可以用<表示<=;用>表示>=; 4、LINGO的每一语句 ; 结束;
4 、 解下列规划
min x1 x 2 x 3 3x1 x 2 x 3 1 s.t. x1 4 x 2 x 3 2 x , x , x 0 1 2 3
5 、求解问题
min z 5 x1 21x 3 x1 x 2 6 x 3 x 4 2 s.t. x1 x 2 2 x 3 x5 1 x ; j 1,2,3,4,5 j
@SLB)与LINDO中的命令类似。而且0/1变量函数是@BIN函
数。
数学函数 LINGO提供了大量的标准数学函数: @abs(x) 返回x的绝对值 @sin(x) 返回x的正弦值,x采用弧度制 @cos(x) 返回x的余弦值 @tan(x) 返回x的正切值 @exp(x) 返回常数e的x次方 @log(x) 返回x的自然对数 @lgm(x) 返回x的gamma函数的自然对数 @sign(x) 如果x<0返回-1;否则,返回1 @floor(x) 返回x的整数部分。当x>=0时,返回不超过x的最大整数; 当x<0时,返回不低于x的最大整数。 @smax(x1,x2,…,xn) 返回x1,x2,…,xn中的最大值 @smin(x1,x2,…,xn) 返回x1,x2,…,xn中的最小值
三. LINGO软件求解线性规划问题
熟悉LINGO软件的使用方法、功能; 利用LINGO软件求解一般线性规划问题。
熟悉LINGO软件的启动步骤。 熟悉LINGO软件的各菜单、命令按钮的作用。 学会如何使用LINGO的帮助文件。 学会输入线性规划模型的基本格式。
1、求解线性规划:
8小时 每天 50桶牛奶 时间480小时 至多加工100公斤A1 决策变量 x1桶牛奶生产A1 x2桶牛奶生产A2
1桶 牛奶 或
♂返回
8、如何在LINGO中求解如下的IQP问题:
2 max f ( x) 98 x1 277 x2 x12 0.3 x1 x2 2 x2
s.t. x1 x2 100 x1 2 x2 x1 , x2 0为整数
LINGO代码: max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2; x1+x2<=100; x1<2*x2; @gin(x1);@gin(x2);
5、注释以 !开始,以 ; 结束;
6、变量名:不区分大小写;由字母数字下划线组成;第一个字符 必须是字母;变量名最长为32个字符 7、变量和数字放在约束条件的左、右端均可;但最好变量在 左,数字在右。 8、Lingo 变量默认域为非负实数,可以改变默认域.
程序语句输入的备注:
•LINGO总是根据“MAX=”或“MIN=”寻找目标函数,而除注
min z x 2 2 x 3 x1 2 x 2 x 3 2 x 3x x 1 2 3 4 s.t. x 2 x3 x5 2 x j 0; j 1,2,...,5
3 、求解
min z 5 x1 21x 3 x1 x 2 6 x 3 x 4 2 s.t. x1 x 2 2 x 3 x5 1 x ; j 1,2,3,4,5 j