8.1.3. IO 管理

此文件用于声明与模型控制相关的所有 API I/O 函数,包括

  • 从文件中读取模型并将加载的模型写入文件。

  • 重定向求解器日志。

支持的模型文件包括

  • MPS:文件扩展名必须为 .mps.mps.gz.mps.bz2

  • LP:文件扩展名必须为 .lp.lp.gzlp.bz2

  • .dat-s 格式。

  • .nl 格式,可在 MindOpt 对接建模语言的模块 mindoptampl 来调用,也支持命令行运行,详见 确认安装 mindoptampl 应用

与之相关的所有 API 函数。

示例

MdoMdl * model = NULL;
Mdo_createMdl(&model);

/* Set log */
Mdo_setLogToConsole(model, flag_LogToConsole);
Mdo_setLogFile(model, "logfile.log");

/* Read/write problem */
Mdo_readProb(model, "problem.mps");
Mdo_writeProb(model, "copy_problem.lp");

/* Solve */
Mdo_solveProb(model);

/* Write solution and basis */
Mdo_writeSoln(model, MY_FOLDER "basis.bas");
Mdo_writeSoln(model, MY_FOLDER "solution.sol");

/* Write/read optimization task */
const char * model_file = "./my_model.mdo";
const char * param_file = "./my_param.mdo";
const char * soln_file = "./my_soln.mdo";

Mdo_writeTask(model, model_file, MDO_YES, MDO_NO, MDO_NO);
Mdo_writeTask(model, param_file, MDO_NO, MDO_YES, MDO_NO);
Mdo_writeTask(model, soln_file, MDO_NO, MDO_NO, MDO_YES);

Mdo_readTask(model, model_file, MDO_YES, MDO_NO, MDO_NO);
Mdo_readTask(model, param_file, MDO_NO, MDO_YES, MDO_NO);
Mdo_readTask(model, soln_file, MDO_NO, MDO_NO, MDO_YES);

函数

MdoResult Mdo_readProb(MdoMdlPtr mdl, const char *filename)

此函数会从文件中读取优化问题。

Parameters
  • mdl – 指向模型的指针。

  • filename – 一个可指定文件名的字符数组。

Return

一个可指定函数状态的响应代码。

See

Mdo_writeProb()

Note

  • 在该函数被调用后,之前加载的问题将被丢弃。

  • 请注意,已输入模型的类型由文件后缀决定。有效后缀为 .mps(.bz2/.gz).lp(.bz2/.gz).dat-s

MdoResult Mdo_writeProb(const MdoMdlPtr mdl, const char *filename)

此函数会向文件写入优化问题。

Parameters
  • mdl – 指向模型的指针。

  • filename – 一个可指定文件名的字符数组。

Return

一个可指定函数状态的响应代码。

See

Mdo_readProb()

Note

请注意,写的优化问题文件类型由文件后缀决定。有效后缀为 .mps(.bz2/.gz).lp(.bz2/.gz)

MdoResult Mdo_writeSoln(const MdoMdlPtr mdl, const char *filename)

此函数会向文件写入最优解。

Parameters
  • mdl – 指向模型的指针。

  • filename – 一个可指定文件名的字符数组。

Return

一个可指定函数状态的响应代码。

Note

请注意,最优解的类型由文件后缀决定。有效后缀为 .sol.bas

MdoResult Mdo_readTask(MdoMdlPtr mdl, const char *filename, MdoBool read_model, MdoBool read_param, MdoBool read_soln)

此函数会从文件中加载优化模型任务。

Parameters
  • mdl – 指向模型的指针。

  • filename – 一个可指定模型的字符数组。

  • read_model – 一个可指定是否应加载模型的布尔标志。

  • read_param – 一个可指定是否应加载参数的布尔标志。

  • read_soln – 一个可指定是否应加载解的布尔标志。

Return

一个可指定函数状态的响应代码。

See

Mdo_writeTask()

Note

  • 在该函数被调用后,之前加载的问题将被丢弃。

  • 模型任务文件包括问题数据、参数设置和二进制格式的解。

MdoResult Mdo_writeTask(const MdoMdlPtr mdl, const char *filename, MdoBool write_model, MdoBool write_param, MdoBool write_soln)

此函数会向文件写入优化模型任务。

Parameters
  • mdl – 指向模型的指针。

  • filename – 一个可指定文件名的字符数组。

  • write_model – 一个可指定是否应输出模型的布尔标志。

  • write_param – 一个可指定是否应输出参数的布尔标志。

  • write_soln – 一个可指定是否应输出解的布尔标志。

Return

一个可指定函数状态的响应代码。

See

Mdo_readTask()

Note

模型任务文件包括问题数据、参数设置和二进制格式的解。

MdoResult Mdo_setLogToConsole(MdoMdlPtr mdl, MdoBool flag)

此函数指定了是否应将日志打印到屏幕上。

Parameters
  • mdl – 指向模型的指针。

  • flag – 一个可指定是否应将日志打印到屏幕上的标志。

MdoResult Mdo_setLogFile(MdoMdlPtr mdl, const char *filename)

此函数会将输出日志重定向到文件。

Parameters
  • mdl – 指向模型的指针。

  • filename – 日志文件的路径。

MdoResult Mdo_setLogCallback(MdoMdlPtr mdl, void (*logcb)(const char *msg, void *userdata), void *userdata)

此函数会将输出日志重定向到用户定义的回调函数。

param mdl

指向模型的指针。

param logcb

用户定义的回调函数。

param userdata

将传递到回调函数的用户定义数据。