Reasons for unassigned Jobs

Hello to all to you!

I am working now quite a while with jsprit and i am questioning myself something, and i want to talk with you about it too.

I think it would be helpfull, if for the unnasigned jobs would me behind some data structure that stores information, why the job isn´t used in the optimization. For example:

Too long distance(20)
Wrong timewindow(4)

So someone can see, that the reason for this job is, that it was in a lot recreation rounds too far away to play(20 times) and also it could not be reached in the given timewindow(4 times).

The problem is, that in own build constrains i can build something like this in. But in the given constraints for timewindows, skills, distance etc i should change the core code. How do you think would this make sence to make an feature issue for that?

My idea would be to to give each job/service a extra structure, for example a list with pairs (Reason, counter). If a reason encounters, and the reason is not in the list it would be added to it. If the reason is already in the list, the counter would be added +1.

Thank you


related to #180?


should not be so hard to implement with the idea that i had. Before one of the standartconstraints is set to NOT_FULLFILLED and its a hardconstraint, there can be an update on the reasons pair <String,Integer> list. If the reason is already in the list, the counter would be set +1 and if not, the list will be updated. The list don´t has to be sorted by the counter.


is there any news on this feature? It would be very helpfull to know, why jsprit hasn´t took this or that job. It would be better for accepting some solutions. My idea was to make it like in my post before. It should not be very hard to implement it but this would need some general discussion, how the reasons can be saved.

No, unfortunately, there is no progress. I do not think it is that easy since there might be several reasons why the insertion of a job is rejected. For example, even if the actual reason for an unassigned job i is its time window, insertion might be sometimes rejected because of limited capacity. Thus, we need some sort of frequency distribution to conclude from there.