--
You received this message because you are subscribed to the Google Groups "or-tools-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to or-tools-discu...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Hi Vincent, thanks for the reply!The Cost callbacks etc are implemented as Java inherited classes of the NodeEvaluator2 class, and passed to the routing.setCost(costs) function. The parameter passed is also already kept referenced in a separate variable in the Java code, so I'm not sure if GC is the problem. Can you elaborate on what the C++ crash points to?
Forbidden paths are removed by calling the .removeValue() function on the IntPtr nodes as appropriate.I realise that having removed paths makes the route problem and solution constrained by definition, is or-tools better possibly at solving totally unconstrained problems? Would be it be better to return a very high cost for missing links rather than explicitly removing them?
Hi Vincent,
Scala is a statically typed JVM-based language that ultimately compiles down to Java byte-code, the same as vanilla Java. Being typed means that it also makes quick direct calls via vtable lookup the same as C++, versus a slower dynamic dispatch based mechanism (e.g. Groovy, Ruby etc).request.edges.find() is a simple linear search of an List/Sequence looking for a match based on the supplied condition, i.e. a quick lookup. I would be surprised if this is the cause of any problems.
It's a great pity that these problems are present in the current or-tools implementation. It would appear that or-tools is not currently as mature as other similar offerings, e.g. OptaPlanner.or-tools currently seems to have stability issues (lots of failures and general protection faults), and also doesn't seem very quick either. I haven't been able to obtain a result of a constrained (via missing links) graph of e.g. 40 locations using or-tools, whereas OptaPlanner can quickly solve problems containing hundreds of nodes/locations.
{
"edges":[
{
"from":0,
"to":1,
"distance":20
},
{
"from":0,
"to":2,
"distance":34
},
{
"from":0,
"to":3,
"distance":68
},
{
"from":0,
"to":4,
"distance":137
},
{
"from":0,
"to":5,
"distance":173
},
{
"from":0,
"to":6,
"distance":170
},
{
"from":0,
"to":7,
"distance":192
},
{
"from":0,
"to":8,
"distance":197
},
{
"from":0,
"to":9,
"distance":241
},
{
"from":0,
"to":10,
"distance":246
},
{
"from":0,
"to":11,
"distance":268
},
{
"from":0,
"to":12,
"distance":238
},
{
"from":1,
"to":2,
"distance":36
},
{
"from":0,
"to":13,
"distance":187
},
{
"from":0,
"to":14,
"distance":218
},
{
"from":0,
"to":15,
"distance":292
},
{
"from":0,
"to":16,
"distance":267
},
{
"from":0,
"to":17,
"distance":284
},
{
"from":0,
"to":18,
"distance":210
},
{
"from":0,
"to":19,
"distance":231
},
{
"from":0,
"to":20,
"distance":209
},
{
"from":0,
"to":21,
"distance":134
},
{
"from":0,
"to":22,
"distance":124
},
{
"from":2,
"to":3,
"distance":33
},
{
"from":0,
"to":23,
"distance":98
},
{
"from":0,
"to":24,
"distance":121
},
{
"from":0,
"to":25,
"distance":177
},
{
"from":0,
"to":26,
"distance":186
},
{
"from":0,
"to":27,
"distance":257
},
{
"from":0,
"to":28,
"distance":243
},
{
"from":0,
"to":29,
"distance":237
},
{
"from":0,
"to":30,
"distance":181
},
{
"from":0,
"to":31,
"distance":71
},
{
"from":0,
"to":32,
"distance":13
},
{
"from":1,
"to":22,
"distance":104
},
{
"from":0,
"to":33,
"distance":15
},
{
"from":3,
"to":4,
"distance":83
},
{
"from":0,
"to":34,
"distance":158
},
{
"from":0,
"to":35,
"distance":267
},
{
"from":0,
"to":36,
"distance":293
},
{
"from":0,
"to":37,
"distance":267
},
{
"from":0,
"to":38,
"distance":293
},
{
"from":1,
"to":32,
"distance":23
},
{
"from":4,
"to":2,
"distance":96
},
{
"from":4,
"to":5,
"distance":83
},
{
"from":5,
"to":3,
"distance":121
},
{
"from":5,
"to":7,
"distance":52
},
{
"from":6,
"to":1,
"distance":151
},
{
"from":3,
"to":32,
"distance":80
},
{
"from":3,
"to":33,
"distance":89
},
{
"from":6,
"to":5,
"distance":32
},
{
"from":6,
"to":8,
"distance":64
},
{
"from":5,
"to":22,
"distance":78
},
{
"from":4,
"to":33,
"distance":124
},
{
"from":4,
"to":34,
"distance":25
},
{
"from":7,
"to":6,
"distance":40
},
{
"from":6,
"to":21,
"distance":121
},
{
"from":6,
"to":22,
"distance":73
},
{
"from":7,
"to":12,
"distance":65
},
{
"from":8,
"to":4,
"distance":84
},
{
"from":8,
"to":5,
"distance":58
},
{
"from":8,
"to":7,
"distance":32
},
{
"from":8,
"to":9,
"distance":61
},
{
"from":8,
"to":10,
"distance":66
},
{
"from":8,
"to":12,
"distance":88
},
{
"from":6,
"to":34,
"distance":101
},
{
"from":9,
"to":6,
"distance":92
},
{
"from":9,
"to":7,
"distance":52
},
{
"from":9,
"to":10,
"distance":31
},
{
"from":7,
"to":34,
"distance":112
},
{
"from":10,
"to":7,
"distance":53
},
{
"from":10,
"to":11,
"distance":63
},
{
"from":11,
"to":7,
"distance":93
},
{
"from":11,
"to":9,
"distance":84
},
{
"from":9,
"to":37,
"distance":128
},
{
"from":12,
"to":9,
"distance":58
},
{
"from":12,
"to":11,
"distance":27
},
{
"from":10,
"to":35,
"distance":99
},
{
"from":10,
"to":36,
"distance":82
},
{
"from":10,
"to":38,
"distance":119
},
{
"from":13,
"to":16,
"distance":96
},
{
"from":13,
"to":20,
"distance":81
},
{
"from":13,
"to":21,
"distance":83
},
{
"from":14,
"to":13,
"distance":38
},
{
"from":14,
"to":17,
"distance":87
},
{
"from":14,
"to":18,
"distance":54
},
{
"from":15,
"to":11,
"distance":177
},
{
"from":14,
"to":21,
"distance":97
},
{
"from":15,
"to":14,
"distance":99
},
{
"from":15,
"to":16,
"distance":69
},
{
"from":16,
"to":14,
"distance":64
},
{
"from":16,
"to":17,
"distance":38
},
{
"from":17,
"to":15,
"distance":65
},
{
"from":16,
"to":26,
"distance":225
},
{
"from":17,
"to":19,
"distance":83
},
{
"from":17,
"to":26,
"distance":223
},
{
"from":18,
"to":17,
"distance":66
},
{
"from":18,
"to":19,
"distance":38
},
{
"from":18,
"to":20,
"distance":51
},
{
"from":18,
"to":21,
"distance":97
},
{
"from":18,
"to":26,
"distance":172
},
{
"from":21,
"to":1,
"distance":144
},
{
"from":20,
"to":14,
"distance":46
},
{
"from":19,
"to":25,
"distance":83
},
{
"from":20,
"to":16,
"distance":66
},
{
"from":20,
"to":17,
"distance":83
},
{
"from":19,
"to":27,
"distance":214
},
{
"from":20,
"to":19,
"distance":68
},
{
"from":20,
"to":23,
"distance":107
},
{
"from":22,
"to":7,
"distance":112
},
{
"from":21,
"to":20,
"distance":64
},
{
"from":21,
"to":24,
"distance":78
},
{
"from":22,
"to":20,
"distance":148
},
{
"from":22,
"to":21,
"distance":98
},
{
"from":22,
"to":23,
"distance":94
},
{
"from":23,
"to":21,
"distance":57
},
{
"from":24,
"to":19,
"distance":145
},
{
"from":24,
"to":23,
"distance":49
},
{
"from":24,
"to":26,
"distance":122
},
{
"from":25,
"to":21,
"distance":79
},
{
"from":25,
"to":23,
"distance":77
},
{
"from":25,
"to":24,
"distance":60
},
{
"from":26,
"to":15,
"distance":288
},
{
"from":25,
"to":26,
"distance":126
},
{
"from":26,
"to":19,
"distance":166
},
{
"from":26,
"to":27,
"distance":91
},
{
"from":26,
"to":29,
"distance":111
},
{
"from":27,
"to":28,
"distance":68
},
{
"from":28,
"to":19,
"distance":259
},
{
"from":28,
"to":30,
"distance":85
},
{
"from":31,
"to":1,
"distance":75
},
{
"from":29,
"to":27,
"distance":96
},
{
"from":29,
"to":28,
"distance":60
},
{
"from":30,
"to":19,
"distance":185
},
{
"from":29,
"to":30,
"distance":70
},
{
"from":29,
"to":31,
"distance":162
},
{
"from":32,
"to":2,
"distance":47
},
{
"from":30,
"to":26,
"distance":58
},
{
"from":30,
"to":27,
"distance":86
},
{
"from":33,
"to":1,
"distance":34
},
{
"from":31,
"to":21,
"distance":77
},
{
"from":33,
"to":2,
"distance":44
},
{
"from":31,
"to":23,
"distance":44
},
{
"from":31,
"to":24,
"distance":60
},
{
"from":31,
"to":25,
"distance":101
},
{
"from":31,
"to":28,
"distance":192
},
{
"from":31,
"to":30,
"distance":130
},
{
"from":31,
"to":32,
"distance":59
},
{
"from":32,
"to":23,
"distance":85
},
{
"from":34,
"to":3,
"distance":111
},
{
"from":32,
"to":24,
"distance":107
},
{
"from":34,
"to":5,
"distance":67
},
{
"from":34,
"to":8,
"distance":60
},
{
"from":33,
"to":23,
"distance":112
},
{
"from":35,
"to":8,
"distance":75
},
{
"from":35,
"to":9,
"distance":116
},
{
"from":33,
"to":31,
"distance":84
},
{
"from":33,
"to":32,
"distance":27
},
{
"from":36,
"to":9,
"distance":108
},
{
"from":36,
"to":11,
"distance":44
},
{
"from":36,
"to":15,
"distance":204
},
{
"from":37,
"to":11,
"distance":55
},
{
"from":37,
"to":12,
"distance":79
},
{
"from":37,
"to":15,
"distance":207
},
{
"from":35,
"to":36,
"distance":158
},
{
"from":38,
"to":11,
"distance":77
},
{
"from":38,
"to":15,
"distance":201
},
{
"from":36,
"to":37,
"distance":50
},
{
"from":37,
"to":38,
"distance":26
},
{
"from":38,
"to":36,
"distance":73
}
]
}