0

作为我研究项目的一部分,我编写了一个实现模拟退火的 Java 搜索程序。但是,这种搜索不仅仅发生在 Java 程序中,因为我应该使用另一个用 C 编写的程序来计算总成本函数。所以基本上搜索例程是这样的:

示例成本函数:最小化 {A + B} 其中表达式的第一部分 A 将在我的程序中完成,第二部分 B 将是从 C 程序计算的正则化项。我知道我必须这样做似乎很奇怪,但我没有时间/资源/适当的背景来重新实现该正则化程序作为我的 Java 程序的一部分。基本上我正在尝试通过两部分搜索来搜索最佳值向量。

我希望从 Java 输出当前的解决方案(作为 C 程序理解的格式化文件)并将其提供给 C 程序以进行正则化(我已经完成了这部分)。这就是我坚持的地方:当 C 程序运行时,我希望让我的 Java 程序等到它接收到来自 C 程序的输入(以文件的形式)。所以基本上我的程序向另一个程序提供输入,然后停止它的执行(暂时),直到那个 C 程序完成它的工作并返回一个值文件,用于重新计算要在下一次退火迭代中使用的值搜索。

我猜我应该使用某种线程方法,例如等待和通知,但我真的不确定。如果程序依赖于用户输入,那将非常简单。但是,就目前而言,该程序仅在接收到文件输入时才执行。

请指教!如果这个问题冗长且令人困惑,我提前道歉。我愿意澄清任何问题。谢谢你。

4

1 回答 1

0

基本上是这样的:

java runtime.getruntime() 从执行命令行程序获取输出

当你准备好 C 部分时,你通过 Runtime.exec() 生成 Process,打开输入和输出流,以它识别的格式输入数据,然后从它的输出流中读回最终结果,然后解析它。

于 2013-11-02T15:50:43.440 回答