我正在尝试实施Google OR-Tools的VRPTW。但是我面临一个问题。当我传递动态时间矩阵时,解决方案对象为null,但是当我传递示例中给出的时间矩阵时,它就起作用了。
这是我的代码
class="col"
这是主要功能代码
public class DataModel
{
public long[,] DistanceMatrix { get; set; }
public long[,] TimeMatrix = {
//commented matrix is dynamic generated
// {0,5,20,10,0,5},
//{5,0,25,10,5,5},
//{20,25,0,30,20,20},
//{10,10,30,0,10,15},
//{0,5,20,10,0,5},
//{5,5,20,15,5,0},
{0, 6, 9, 8, 7, 3},
{6, 0, 8, 3, 2, 6},
{9, 8, 0, 11, 10, 6},
{8, 3, 11, 0, 1, 7},
{7, 2, 10, 1, 0, 6},
{3, 6, 6, 7, 6, 0},
};
public long[,] TimeWindows = {
{0, 5}, // depot
{7, 12}, // 1
{10, 15}, // 2
{16, 18}, // 3
{10, 13}, // 4
{0, 5}, // 5
};
public int VehicleNumber = 3;
public int Depot = 0;
};
问题似乎出在AddDimension方法中。我对此感到震惊,但找不到任何解决方案。请提出任何解决方案。
答案 0 :(得分:1)
解决方案为null表示求解器无法找到任何可行的解决方案。您的时间窗很可能太紧。
要么尝试放松时间窗口,要么
或确保节点是可选的(使用addDisjunction)。