Мы разместили наше решение Gurobi WCF в качестве службы Windows.GUROBI: Переключение между облачным/обычным режимом
if (useCloud)
{
this.logInfo("Environment GRB_LICENSE_FILE: " + System.Environment.GetEnvironmentVariable("GRB_LICENSE_FILE"));
return new GurobiProblemBuilder(this, new testSolver.solver.gurobi.Net.EnvironmentNet(this.settings.cloudLic, this.settings.cloudPwd));
}
else
{
this.logInfo("Environment GRB_LICENSE_FILE: " + System.Environment.GetEnvironmentVariable("GRB_LICENSE_FILE"));
return new GurobiProblemBuilder(this, new testSolver.solver.gurobi.Net.EnvironmentNet(null));
}
В интерфейсе мы предоставили возможность перейти в облако и обрабатываются флагом «useCloud». Но проблема в том, что мы должны каждый раз перезапускать службу для переключения между облачным/не облачным параметром. Даже после правильной настройки переменных среды служба не может прозрачно переключаться между облачным/не облачным.
Добавлено 01-Dec-2015
public EnvironmentNet(string logFileOrNull)
{
environment = new GRBEnv(null);
}
public EnvironmentNet(string computeServer, string password)
{
// http://www.gurobi.com/documentation/6.0/refman/cs_grbenv2.html
int port = -1; // read from app.config
int priority = 0; // read from app.config
double timeout = -1; // read from app.config
environment = new GRBEnv(null, computeServer, port, password, priority, timeout);
}
На самом деле наша GurobiProblemBuilder называет GRBEnv и в свою очередь это вызывает GRBEnv (нуль) или GRBEnv (нуль, computeServer, порт, пароль, приоритет, время ожидания) версии зависит от выбора пользователя для использования облачного или локального сервера. Но мы все еще не можем прозрачно переключаться между вычислительным сервером и локальным сервером. Это сводится к тому, что Gurobi собирает файл лицензии из переменной окружения GRB_LICENSE_FILE. Есть ли планы предоставить другой способ передачи GRB_LICENSE_FILE в решатель Gurobi?
Наше обходное решение: Наш подход заключается в использовании облака GRB_LICENSE_FILE = gurobi.lic.cloud. Если это не облако GRB_LICENSE_FILE = gurobi.lic. Возможно, нам нужно использовать общий файл gurobi.lic и перезаписывать с помощью вычислительных серверов или обычного сервера.