【发布时间】:2017-09-12 15:28:00
【问题描述】:
我有一个(相当)简单的 Pyomo 模型,它有 5 个参数和一组大小为 48(代表时间间隔)的集合。如果我使用特定的数据文件,GLPK 绝对可以正常工作:
# Data file
param : n := 48;
param : E_demand :=
1 231.674545
2 223.328638
3 218.047274
4 212.285910
5 214.539544
6 213.940455
7 216.871637
8 205.824183
9 208.905001
(以类似的方式继续到索引 48 和另外 4 个参数)。
但是,如果我使用另一个(只是略有不同)数据文件,则解决问题需要更长的时间(从不到一秒到超过 20 分钟,我懒得知道要多长时间)。如果我只是将其中两个参数更改为它们值的大约 1/3(如下所示),则问题需要更长的时间才能解决。
param : E_demand :=
1 76.464996
2 69.815002
3 71.355003
4 75.004997
5 72.360001
6 71.065002
7 70.669998
8 71.809998
9 72.309998
我认为问题一定与缩放有关,因为如果我逐渐将较小的值从一个数据文件替换到另一个数据文件,则问题需要更多时间,直到它变得非常缓慢。有没有办法使用 Pyomo 改变 glpk 缩放比例?使用不同的求解器可能会解决这个问题吗?
【问题讨论】:
-
(fairly) simple Pyomo model没有告诉我们任何事情。是 MIP 吗?唱片?对于 MIP,这可能是正常行为(毕竟通常是 NP-hard;所有方法都有些启发式)。我们也不知道您使用的是哪种求解器。 GLPK 似乎实现了 Simplex 和 IPM。后者可能对缩放敏感,但前者不应该。
标签: python optimization scaling glpk pyomo