我正在IBM沃森Cloud上使用Complex solver(Docplex)解决决策优化问题。但是,我在尝试调整输出格式时遇到了问题。
可用文档提供了以下函数,可将其包含在主文件中,以便将输出检索为**.csv文件**:
def write_all_outputs(outputs):
'''Write all dataframes in ``outputs`` as .csv.
Args:
outputs: The map of outputs 'outputname' -> 'output df'
'''
for (name, df) in iteritems(outputs):
csv_file = '%s.csv' % name
print(csv_file)
with get_environment().get_output_stream(csv_file) as fp:
if sys.version_info[0] < 3:
fp.write(df.to_csv(index=False, encoding='utf8'))
else:
fp.write(df.to_csv(index=False).encode(encoding='utf8'))
if len(outputs) == 0:
print("Warning: no outputs written")
然后在部署中,指定文件类型:
solve_payload = {
client.deployments.DecisionOptimizationMetaNames.OUTPUT_DATA: [
{
"id" : ".*\.csv"
}
]
}
对于.csv文件,一切正常。
但是,我希望得到一个**.json文件**,因此我创建了相应的字典并修改了函数如下:
def write_all_outputs(outputs):
for (name, content) in iteritems(outputs):
json_file = '%s.json' % name
with get_environment().get_output_stream(json_file) as fp:
fp.write(json.dumps({name: content}).encode('utf-8'))
if len(outputs) == 0:
print("Warning: no outputs written")
在部署方面:
solve_payload = {
client.deployments.DecisionOptimizationMetaNames.OUTPUT_DATA: [
{
"id" : ".*\.json"
}
]
}
该问题已正常解决(达到最优)。问题是我得到了一个奇怪的.JSON文件内容,其中包含随机字母。我怀疑write_all_outputs函数有问题。请注意,本地运行会生成一个正确的.JSON文件,没有任何问题。
我真的很感激任何关于我的问题的帮助。
1条答案
按热度按时间fnvucqvd1#
对于那些遇到同样问题的人。我在IBM论坛上得到了答案。