用C#在Gurobi中定义属于索引集的变量
Define variable which belongs to indexed set in Gurobi with C#
我有一个变量 v 的定义,它有两个索引:p 和 k。对于每个 m 个仓库,索引 p 属于集合 P,索引 k 属于集合 K。
我在 Gurobi 中这样定义变量:
GRBVar[,] v;
for (int m = 0; m < M; m++)
v = new GRBVar[P,K[m]]; //variable of vehicle
for (int p = 0; p < P; p++)
{
for (int m = 0; m < M; m++)
{
for (int k = 0; k < K[m]; k++)
v[p,k] = model.AddVar(0.0, 1.0, 0.0, GRB.CONTINUOUS, "v" + p + "," + k);
}
}
但它不能运行,它说Use of unassigned local variable 'v'。
我真的很感激任何帮助。谢谢
(1) 你应该确保你的 M 永远不会小于 1,否则你的程序会崩溃。
(2) 尝试将第一行替换为:
GRBVar[,] v = null;
您的程序会 运行,但我认为这没有多大意义 - 您正在替换循环中的 v,因此只有最后一辆车会在 v 中。
我有一个变量 v 的定义,它有两个索引:p 和 k。对于每个 m 个仓库,索引 p 属于集合 P,索引 k 属于集合 K。
我在 Gurobi 中这样定义变量:
GRBVar[,] v;
for (int m = 0; m < M; m++)
v = new GRBVar[P,K[m]]; //variable of vehicle
for (int p = 0; p < P; p++)
{
for (int m = 0; m < M; m++)
{
for (int k = 0; k < K[m]; k++)
v[p,k] = model.AddVar(0.0, 1.0, 0.0, GRB.CONTINUOUS, "v" + p + "," + k);
}
}
但它不能运行,它说Use of unassigned local variable 'v'。 我真的很感激任何帮助。谢谢
(1) 你应该确保你的 M 永远不会小于 1,否则你的程序会崩溃。
(2) 尝试将第一行替换为:
GRBVar[,] v = null;
您的程序会 运行,但我认为这没有多大意义 - 您正在替换循环中的 v,因此只有最后一辆车会在 v 中。