lingo减少迭代次数、减少求解时间的方法

对于非线性模型求解十分困难,因此建立利于提高求解效率的模型,以增加求解速度和解的可靠性是十分必要的。 (一)为变量定界
较好地使用变量界限可以最大限度地提高LINGO 的求解效率。例如,假设一个变量的取值范围为1 到100,但是最优解不大可能在50 到75 的范围之外。这种情况下,用@BND 函数将变量的上限明确地指定为50,下限为75,可以大大节省求解的时间。另外,定界还可以使求解避开数学上有问题的区域,如无定义区域。例如,在约束条件1/X 中,给X 定一个最小界限,这样有助于使X 不会靠近0。 (二)为变量指定初值 在模型中,变量的初值会影响LINGO求解的“路线”。如果以一个接近最优解的初值开始计算,将大大地减少求解的时间,但是在很多情况下并不清楚最佳初值。不过,在可以选定比较合理的初值时,就应该在初始化域使用这些初值,这对于模型的求解很有帮助。若存在以下两种对求解结果不确定的情况,可考虑更换初值重新求解: 1)可能有比LINGO返回值更优的解; 2)即使LINGO返回的信息报告显示“未找到可行解”,但仍可能存在可行解。 (三)确定模型的合理数量级范围
为了便于求解,模型中用到的单位的数量级要尽量保持一致。如果模型中最大的数是最小数的1000 倍,LINGO就会在求解模型时遇到困难,也会影响求解的精确度。 例如下面的经济问题:利息率为8.5%(0. 085),预算的约束条件为$ 12 850 000。这两个数的数量级相差109。而在LINGO中,可以接受的最大差别为104。在这个例子中,预算可表示为百万美元的倍数,也就是说可以用$ 12.85 代替12 850 000。这样,数量级的差别就控制在104 之内了。 (四)简化关系
在实际操作中,应尽量使用线性关系,而非非线性关系。一些非线性表达式完全可以用线性关系表示。最简单的例子就是前面提到的两个变量比值的形式: X/Y< 10
这个约束条件是非线性的,因为X 被Y除。为了线性化这一约束,可以在等式两边同乘以Y,该约束就变为: X< 10 × Y 在可能的情况下要尽量回避使用非平滑关系。具有非平滑约束的模型一般来说求解十分困难。因此应尽量将非平滑关系平滑化,如使用整型变量。 (五)减少整型限制
减少整型限制的数量可明显减少求解时间。当变量值较大时,可通过求解没有整型限制的模型后取整找到可以接受的结果,其耗费的求解时间仅相当于求解整数模型的一小部分。然而,对一个解取整后,此解可能不再是可行解或最优解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值