[英]Console Output to a File not using SetOut
我從C#打電話給Gurobi(好幾次)。 因此,控制台輸出是我的和Gurobi日志記錄的混合。 如果我覆蓋Console.Out,則僅重定向我的輸出,但是Gurobi(顯然包裝了非托管dll)仍然寫入屏幕。
有什么方法可以從控制台獲取每一行(作為字符串或文件)?
您可以使用回調對象捕獲Gurobi的控制台輸出。 回調對象有一個Callback()
方法,該方法被調用的原因有很多,其中之一是告訴您要寫入控制台的文本。 您可以使用此文本執行任何操作。 在下面的示例中,我將文本編寫為調試輸出:
class MyGRBCallback : GRBCallback
{
protected override void Callback()
{
if (this.where == GRB.Callback.MESSAGE)
{
String text = this.GetStringInfo(GRB.Callback.MSG_STRING);
Debug.WriteLine(text);
}
}
}
您可以使用GRBModel的SetCallback
方法向Gurobi告知您的回調對象。
var env = new GRBEnv();
var m = new GRBModel(env);
var callback = new MyGRBCallback();
m.SetCallback(callback);
此時,Gurobi將調用您的回調並寫入控制台。 您可以告訴Gurobi不要寫入控制台:
env.Set(GRB.IntParam.LogToConsole, 0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.