改进变量和约束的范围

改进变量和约束的范围

有三种常用的方法可以提高目标、约束和变量的范围:

  • 使用特定问题的信息来加强界限:

    尽管presolve,特别是绑定增强,非常擅长推导隐含变量的边界,但它可能无法访问建模者已知的所有信息。将更紧密的边界直接纳入模型不仅可以改善数值行为,而且还可以加快优化过程。

  • 选择正确的单位来表达你的变量和约束:

    在定义变量和约束时,选择很重要单位与容忍度一致。举个例子,一个约束< span > < / span > 10美元^ {10}< span > < / span >美元右边的值不能很好地使用默认值< span > < / span > 10美元^ {6}< span > < / span >美元可行性宽容。通过改变单位(例如,用吨代替磅,用百万美元代替美元,或者……),通常可以显著改善问题的数值。

  • 分解多个目标:

    一个非常大范围的目标系数的常见来源是将分层目标建模为具有大乘数的目标函数的集合的实践。例如,如果用户想优化一个问题< span > < /美元跨度> P < span > < / span >美元与目标函数< span > < /美元跨度> f (x) < span > < / span >美元然后,受制于< span > < /美元跨度> f (x) < span > < / span >美元被优化,优化< span > < / span >₂美元美元(x) < span > < / span >,一个常见的技巧就是使用替代目标< span > < /美元跨度> \酒吧{f} f (x) = M (x) +₂(x) < span > < / span >美元在哪里< span > < / span >美元美元< span > < / span >是一个大常数。当你把一个大的< span > < / span >美元美元< span > < / span >由于双可行性容差相对较紧,求解器更难找到实现双可行性的解。手机万博登录我们建议你要么使用小的常数< span > < / span >美元美元< span > < / span >尽可能或重新制定您的模型使用层次目标(这是更容易通过我们的多目标优化特性)。

这些技术通常足以消除由于糟糕的伸缩性而产生的问题。