J'utilise OptaPlanner pour résoudre une variante d'un problème de routage de véhicule dans lequel les exigences des clients à servir par les véhicules varient considérablement. J'ai quelques types de clients les plus communs et je veux les modéliser en utilisant différentes classes d'entités. Comme il est possible pour un seul conducteur d'assister à différents types, ils devraient être capables de former des chaînes hétérogènes avec des instances de toutes les classes sur eux.OptaPlanner classes d'entités multiples avec des variables chaînées
J'ai essayé de faire une preuve de concept en modifiant l'exemple VRP. J'ai extrait ICustomer
, une interface pour tous mes clients et j'ai changé le Standstill
pour que getNextCustomer
renvoie un ICustomer
. Lorsque je tente de l'exécuter avec le client et Customer2 (une copie de la classe client), à la fois la mise en œuvre Iaide, je reçois cette erreur:
Exception in thread "main" java.lang.IllegalArgumentException: The entityClass
(interface org.optaplanner.examples.vehiclerouting.domain.Standstill) has a
InverseRelationShadowVariable annotated property (nextCustomer) with a masterClass
(interface org.optaplanner.examples.vehiclerouting.domain.ICustomer) which is not a
valid planning entity.
Dans le pire des cas, je vais modéliser simplement différents types de clients avec Enums et "ifs" dans une seule entité de planification pour obtenir le même comportement. Encore, serait génial de savoir si j'ai rencontré une limitation de l'API ou quelqu'un connaît un meilleur moyen d'y parvenir. Merci :)