用julia JUMP求解优化问题结果有奇怪的问题


#1

我用julia JUMP求解微电网中的机组组合问题(本质上是一个混合整数线性规划问题),调用CPLEX解法器,优化出的结果(储能功率)有时候会出现无意义的锯齿波,分析目标函数和约束条件,这样的结果是不应该出现的。并且我用两台不同电脑使用julia运行完全相同的代码,优化出的结果也有区别,如下图。


我是真的很困惑了。。两台电脑上的julia版本均为0.6.4,貌似只有几个package的版本不同,如下图。
蓝曲线 image
橙曲线 image
这个问题困扰我挺久了,希望专家们可以帮帮忙。如有需要我可以附上我的代码。


#2

这个比较难回答,没有模型,不太好说。
可以从这几个角度看下:
1.两个优化目标的结果是否一样?一般在solution里会给出来有几个solution,可能多个solution.
2.JuMP的约束很严谨,不太可能出现solution不符合约束的,逐条对比下,看看得到的variables结果哪个与constraint不一致,然后核对下constraint写的对不对。


#3

感谢您的回复!
两台电脑是优化出的目标函数结果是相同的。我想了一下这两种情况确实都符合约束条件,目标函数的值也是相同的。显示solutions = 8,是不是说明有8种解?但我觉得这两种解都可以的话那应该还会有无数个最优解,应该是不止8种的。
以下是优化结果,劳烦您帮忙看下有没有说明问题。(有一个warning:No solution found from 1 MIP starts. 这个warning影响大吗?)

image

image


#4

这个没影响。参数里有个PreCut,可以设置下,这样就会提前去掉一部分假设。不过我看你这模型计算很快,就没必要PreCut了。
有8种结果,得到的解如果取得不一样,图就不一样了。


#5

如何才能得到这八种结果的解呢?我用getvalue只能得到一种情况的解。


#6

这个就不太清楚了。
我不太清楚cplex的,我用的其他求解器,对多个解有解释,我也没找到获取的方式。官方文档有个解释是只是知道那个地方有一个潜在的最优解,但是并没有去搜索,我就没再去关注。
刚看了下JuMP的solutions一节,里面也没说,估计是没办法。
这是关于solution的接口,如果有什么获取的办法,可以交流下:
https://www.juliaopt.org/JuMP.jl/latest/solutions/#Termination-statuses-1