在 python GEKKO 或 matlab APM 中指定解决方案文件的输出目录

Specify output directory of solution file in python GEKKO or matlab APM

我正在使用 python GEKKO and/or APM Matlab 接口解决一个最优控制问题(它们是两种语言的相同包)。我可以成功解决我的问题,但我不知道如何指定解决方案文件的输出位置。

加载我的文件并使用

解决我的问题后
% server
s = 'http://byu.apmonitor.com';
% application name
a = 'test';
% load model and data file
apm_load(s,a,'test.apm')
csv_load(s,a,'test.csv')
output = apm(s,a,'solve');

一个名为 'solution_test.csv' 的文件被创建在文件 运行 的目录中。我如何更改此输出目录?

如果我对你的理解正确的话,你想将文件从一个目录移动到新目录。尝试将其合并到您的代码中。

#dirpath = path of current file
#fname = file name

import os
import shutil

dest_dir = 'some new directory path'

shutil.copy(os.path.join(dirpath, fname), dest_dir)

您可以通过更改 m._path 来指定 运行 文件夹。如果将其保留为默认临时目录,则可以使用 print(m._path) 查看该文件夹或使用 m.open_folder() 打开临时文件夹。下面是一个简单应用指定运行目录的例子:

from gekko import GEKKO
m = GEKKO()
m._path = r'C:\test'
x = m.Var()
m.Obj(x**2)
m.solve(disp=False)
print(x.value[0])

您需要确保可以写入此文件夹,在本例中为 C:\test。如果该文件夹不存在或您无权写入该文件夹,它将引发错误。此外,如果您使用锁定文件的程序(例如 Microsoft Excel)打开该文件夹中的其中一个文件,那么当您尝试打开并锁定写入文件时,您将收到错误消息再次 运行 Python 程序。