LINGO 是专门用来求解线性规划 非线性规划 整数规划 二次规划的数学优化软件,运行核心逻辑是新建模型窗口,编写 LINGO 代码,设置求解选项,点击求解按钮,软件自动调用内置优化算法计算最优解,并且输出目标值 变量取值 约束状态 敏感性报告,新手最容易出错的地方是语法格式,比如乘号必须用星号,语句末尾加分号,变量默认非负,不需要额外声明,同时要区分 LINGO 脚本和集模型两种写法,简单小模型直接写表达式,大规模模型推荐使用集 (set) 编写,运行之后如果报错,绝大多数是语法错误或者约束矛盾,模型无可行解,需要检查模型本身。
运行前置准备
第一步 确认软件已经正常安装,打开 LINGO 主程序,等待主界面加载完成
第二步 准备好优化问题,明确目标函数 决策变量 约束条件
第三步 区分模型类型,线性规划 LP,非线性规划 NLP,整数规划 IP,软件会自动识别模型类型,不需要手动指定算法
基础运行步骤
第一步 新建模型窗口
打开软件之后,点击菜单栏 File,选择 New,弹出空白模型编辑窗口,所有代码都写在这个窗口里面
第二步 编写 LINGO 模型代码
基础简单模型结构
目标函数 例如 max=... 或者 min=...
约束条件 每行约束后面加分号
示例
max=2x+3y;
x+y<=10;
x>=0;
y>=0;
注意要点
乘号必须写 ,不能省略
每条语句结尾必须加分号
变量默认大于等于 0,非负约束可以省略
变量名不区分大小写
第三步 检查语法
点击 LINGO 菜单里面 Check,软件执行语法校验,如果有错误,底部报错窗口会提示出错行号,修改代码直到校验通过
第四步 执行求解
点击工具栏上 红色靶心图标 Solve,或者菜单 LINGO 选择 Solve,软件开始运行计算
第五步 查看运行结果
弹出 Solution Report 结果窗口,包含
Objective value 目标最优值
Variable 变量最优取值
Reduced Cost 缩减成本
Row 约束松弛量 对偶价格
如果需要敏感性分析,在求解前勾选 Options 里面 Dual & Range 选项,运行之后额外输出范围报告
集模型进阶运行方式
大规模优化问题使用 set 集合写法,运行流程和普通模型一致,只是代码结构增加集定义 数据段 生成约束段
结构组成
sets 集定义
data 数据赋值
目标函数
约束表达式
end
写完之后同样 Check 校验,再点 Solve 运行
运行常见报错对照表
| 报错现象 | 主要原因 | 处理方案 |
|---|---|---|
| No feasible solution | 约束互相冲突,没有可行解 | 检查约束不等式,放宽矛盾约束 |
| Infeasible or unbounded | 无可行解或者无界 | 补充约束,防止目标无限增大 |
| Syntax error | 语法错误,缺少分号 乘号错误 | 对照行号修改代码 |
| Variable not defined | 变量没有定义 | 检查变量名拼写 |
运行相关设置 Options
点击 LINGO Options,可以调整
求解算法选择
迭代次数上限
精度 tolerances
输出报告选项
内存相关参数
修改之后点击 Apply 保存设置,再重新运行模型
保存与导入
运行完成之后,模型文件后缀是 lg4,可以保存,下次直接打开继续运行,也可以导入外部 Excel 数据,通过 @OLE 函数调用表格数据,适合批量数据优化项目
【常见问题】
问题 1 lingo 怎么运行,点击 solve 之后提示无可行解怎么办
回答 1 lingo 怎么运行的时候出现 No feasible solution,代表模型约束互相冲突,不存在满足全部约束的解,需要核对约束条件,修改矛盾不等式之后再重新运行。
问题 2 lingo 怎么运行,简单线性规划和集模型运行操作一样吗
回答 1 lingo 怎么运行,基础点击 solve 运行的操作是一样的,差别只是代码写法,集模型适合大规模数据,基础小模型直接写表达式即可。
问题 3 lingo 怎么运行,运行之后能不能直接输出敏感性分析报告
回答 1 lingo 怎么运行,默认不输出敏感性报告,需要提前在 Options 里面勾选 Dual & Range 选项,再点击 solve 运行,才会生成范围分析结果。
问题 4 lingo 怎么运行,代码里面乘号可以省略吗
回答 1 lingo 怎么运行,语法要求乘号必须写星号 ,不能像数学手写那样省略,省略会触发语法报错,导致模型无法正常运行。
【免责申明】
本内容为 LINGO 软件基础操作学习总结,不同版本 LINGO 界面和参数选项会存在差异,操作路径以本机安装版本为准,本教程仅作为学习参考,不构成官方技术支持或者专业优化建模认证。


