子流程:gekko软件包中的“执行格式错误”

时间:2019-09-17 18:23:56

标签: python optimization gekko

我正在尝试在python 2或3中运行gekko。我只是简单地按照教程中的参数更改进行操作,并且利用scipy.integrate来模拟我的MPC。它可以在我的一台计算机上运行,​​但不能在NVIDIA Jetson TX2上运行。并在运行m.solve(disp = False)时出现“ Exec格式错误”。

两台计算机都同时具有python2和python3。由于我也正在运行ROS,因此我想使用python2来运行脚本。最初我以为可能是使用python2解释导致了问题,所以我写了另一个脚本,利用子过程将我的mpc和模拟器解释为python3。但是,此问题仍然存在。问题似乎在gekko包装内。我确信这是环境错误,因为脚本在我的个人计算机上运行良好。目前,我正在运行Ubuntu 16.04。

def example_MPC(t_init, x, u_init):
    m = GEKKO(remote=False)
    dt = 0.5
    m.time = np.linspace(t_init,10+t_init,21)
    #...
    m.solve(disp=False)       # <-- The error appears on this line
    #...
    return p.value[1]

这是来自终端的错误消息:

  Traceback (most recent call last):
  File "ode_solver.py", line 53, in <module>
    simulation()
  File "ode_solver.py", line 34, in simulation
    u[i] = example_MPC(t[i-1], v0, u[i-1])
  File ".../src/MPC_test.py", line 34, in example_MPC
    m.solve(disp=False)
  File "/home/nvidia/.local/lib/python3.5/site-packages/gekko/gekko.py", line 1880, in solve
    env = {"PATH" : self._path }, universal_newlines=True)
  File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
  OSError: [Errno 8] Exec format error

编辑:

我找到了apm文件夹位置。当我尝试使用

运行 apm
./apm

命令给了我这个

-bash: ./apm: cannot execute binary file: Exec format error

我假设这意味着我的TX2上apm运行不正常。

如果我设置了m = GEKKO(remote=True),它将起作用。但是,MPC无法实时运行,这绝对是我的问题。

我现在正在尝试在本地桌面上解决此问题。服务器参数只是本地ip地址吗?我设置:

m = GEKKO(remote=True, server="192.168.1.136")

它返回:

Traceback (most recent call last):
File ".../src/ode_solver.py", line 53, in <module>
    simulation()
  File ".../src/ode_solver.py", line 34, in simulation
    u[i] = example_MPC(t[i-1], v0, u[i-1])
  File ".../src/MPC_test.py", line 34, in example_MPC
    m.solve(disp=False)
  File ".../.local/lib/python2.7/site-packages/gekko/gekko.py", line 1992, in solve
    raise ImportError('Results files not found. APM did not find a solution or the server is unreachable.')
ImportError: Results files not found. APM did not find a solution or the server is unreachable.

设置m = GEKKO(remote=True, server="http://192.168.1.136")会产生相同的问题。

1 个答案:

答案 0 :(得分:0)

您可以远程解决(需要Internet连接):

m = GEKKO(remote=True)

否则设置一个Windows APMonitor ServerLinux APMonitor Server并使用以下命令在该服务器(例如IP地址10.0.0.10)上求解:

m = GEKKO(remote=True,server='http://10.0.0.10')

问题是NVIDIA Jetson TX2六核ARMv8 64位CPU没有兼容的可执行文件,否则Python无法选择正确的可执行文件。您可以通过在Lib / site-packages / gekko / bin中找到apm_arm可执行文件,或者从local executables下载当前受支持的文件来查看其是否将在您的计算机上运行:

  • Windows(32或64位):apm.exe
  • Linux(64位):apm
  • MacOS(64位):apm_mac
  • Linux ARM(Raspberry Pi):apm_arm

如果它没有运行或不在此列表中,那么我建议将remote=True与本地服务器或公用服务器一起使用。我将NVIDIA Jetson TX2本地可执行文件添加为feature request in the GEKKO repository on GitHub