2015-12-10 5 views
0

При попытке открыть проблему линейного программирования из текста с помощью Gurobi + C# он выдает ошибку: 10012 Не удается открыть файл «Максимизировать» для ввода. Максимизация является первым словом текста и при использованииGurobi не распознает файл LP

foreach (string s in args) 
{ 
    Console.WriteLine(s); 
} 

я получить правильный вывод из текстового файла. Пожалуйста помоги!

using System; 
using Gurobi; 

class lp_cs 
{ 
static void Main(string[] args) 
{ 
    args = System.IO.File.ReadAllLines(@"C:\Users\Ben\Documents\Visual  Studio 2015\Projects\ConsoleApplication5\ConsoleApplication5\mps.lp"); 
    foreach (string s in args) 
    { 
     Console.WriteLine(s); 
    } 
    if (args.Length < 1) 
    { 
     Console.Out.WriteLine("Please Wait.."); 
     return; 
    } 

    try 
    { 
     GRBEnv env = new GRBEnv(); 
     GRBModel model = new GRBModel(env, args[0]); 

     model.Optimize(); 

     int optimstatus = model.Get(GRB.IntAttr.Status); 

     if (optimstatus == GRB.Status.INF_OR_UNBD) 
     { 
      model.GetEnv().Set(GRB.IntParam.Presolve, 0); 
      model.Optimize(); 
      optimstatus = model.Get(GRB.IntAttr.Status); 
     } 

     if (optimstatus == GRB.Status.OPTIMAL) 
     { 
      double objval = model.Get(GRB.DoubleAttr.ObjVal); 
      Console.WriteLine("Optimal objective: " + objval); 
     } 
     else if (optimstatus == GRB.Status.INFEASIBLE) 
     { 
      Console.WriteLine("Model is infeasible"); 

      model.ComputeIIS(); 
      model.Write("model.ilp"); 
     } 
     else if (optimstatus == GRB.Status.UNBOUNDED) 
     { 
      Console.WriteLine("Model is unbounded"); 
     } 
     else 
     { 
      Console.WriteLine("Optimization was stopped with status = " 
           + optimstatus); 
     } 

     model.Dispose(); 
     env.Dispose(); 

    } 
    catch (GRBException e) 
    { 
     Console.WriteLine("Hibakód: " + e.ErrorCode + ". " + e.Message); 
     Console.WriteLine("Press any key to exit."); 
     Console.ReadKey(); 
    } 
} 

}

ответ

0

С

args = System.IO.File.ReadAllLines(@"C:\Users\Ben\Documents\Visual Studio 2015\Projects\ConsoleApplication5\ConsoleApplication5\mps.lp"); 

вы перезаписать параметр вашего метода main()args с массивом всех строк входного файла. Вот почему в

GRBModel model = new GRBModel(env, args[0]); 

args[0] содержит строку с первой строкой файла LP вместо имени файла.