所以我有一个相当复杂的matlab函数(它调用模拟,然后调用外部优化套件(cplex或gurobi))。对于某些设置和输入,MATLAB函数和从Matlab调用的python函数给出相同的结果,但对于其他人他们不同(正确的答案是~4500)python有时会返回0.015 ...或162381,所以结果差异很大我不能发现一种模式或相关性。
我的猜测可能是int / float / double变量转换,或某种形式的内存问题。结果直接来自CPLEX,所以我很困惑它为什么会改变。
另一方面,如果我返回一个包含数组结构的结构,则会杀死python内核。这使得python的调试变得更难(我安装了pymatbridge和metakernel)
有没有人,在python中有类似的不可靠的matlab函数问题?解决方案的想法,从控制台执行matlab和读取结果文件?
答案 0 :(得分:0)
事实证明,如果某些变量未被指定为double,则有时会运行代码,而在其他情况下,整数除法或不是,会导致错误结果。我不知道这是如何与输入相关的,因为它确实不应该但我只是去指定代码的相关部分中的所有变量是双倍的并修复它。所以
tl; dr:即使它运行,只要强制执行所有变量都是双倍的,问题就解决了。
Mathworks应该修复他们的python api