- 在线时间
- 769 小时
- 最后登录
- 2018-4-27
- 注册时间
- 2011-9-29
- 听众数
- 9
- 收听数
- 0
- 能力
- 0 分
- 体力
- 9768 点
- 威望
- 0 点
- 阅读权限
- 100
- 积分
- 3480
- 相册
- 0
- 日志
- 0
- 记录
- 7
- 帖子
- 1046
- 主题
- 3
- 精华
- 0
- 分享
- 0
- 好友
- 195
升级   49.33% TA的每日心情 | 奋斗 2018-4-27 20:25 |
---|
签到天数: 969 天 [LV.10]以坛为家III
- 自我介绍
- 男
群组: LINGO |
4#
发表于 2012-11-22 19:07
|只看该作者
|
|邮箱已经成功绑定
本帖最后由 qlb061 于 2012-11-22 19:17 编辑
事实上取决于你的程序设定!默认情况下在模型生成时,Lingo自动选择线性化程度(有些数学表达式可以通过添加额外的0-1变量进行线性化处理,其中@min,@max就是如此)。应当注意,最大最小函数的出现会导致模型非线性,@IF函数更是如此。
对于有@min,@max约束的模型,Lingo可以添加0-1整数变量将其线性化,从而使用高效的LP Solver求解问题,但是这也会产生相应的代价,额外引入了0-1变量从而使得LP问题变为ILP问题,这在求解大规模优化问题时可能会显著增加程序运行时间。
建模者可以通过以下方式设置线性化选项:Lingo->Option->Model Generator->Linearization->Degree:
Solver Decides/ None / Low / High.
同样对于你的实例,以下显示了高度线性化处理后,Lingo对模型的统计结果:
Rows= 86 Vars= 128 ( all are linear)
Integer vars= 42 Binary vars= 0
Nonzeros= 339 Const nonz= 338( 296 are +- 1) Density= 0.030
Smallest and largest elements in abs value= 0.100000+308 0.00000
No. < : 42 No. =: 2 No. > : 42, Obj= N/A, GUBs <= 75
Single cols= 1
注意红色部分,显然,变量数目要比85大得多,而且所有变量都是线性的,同时出现了整数变量。这些变化都是Lingo模型生成器处理后的结果。
以下是不进行线性化处理的统计结果:
Rows= 2 Vars= 85
Integer vars= 0 Binary vars= 0
Nonl rows= 1 Nonl vars= 84Nonl constraints= 1
Nonzeros= 85 Constraint nonz= 85 Density=0.494
Smallest and largest elements in abs value= 0.100000+308 0.00000
No. < : 0 No. =: 1 No. > : 0, Obj= N/A Single cols= 85
Nonl vars = 84表明非线性变量的数目! |
|