私はOptaPlannerを使用して、車両によるサービスの要件が大きく異なる車両ルーティングの問題を解決しています。私はいくつかの最も一般的な顧客タイプを持ち、異なるエンティティクラスを使用してそれらをモデル化したいと考えています。単一のドライバーが異なるタイプに出席することが可能であるため、それらはすべてのクラスのインスタンスと異種のチェーンを形成することができます。OptaPlanner複数のエンティティクラス(チェーン付き変数あり)
VRPの例を変更して概念の証明を試みました。私はICustomer
を抽出し、私のすべての顧客のためのインターフェイスであり、getNextCustomer
がICustomer
を返すようにStandstill
を変更しました。 私は顧客とそれを実行しようとCustomer2(顧客クラスのコピー)は、両方のICustomerを実装し、私はこのエラーを取得する場合:最悪の場合
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.
、私はちょうどで別の顧客のタイプをモデル化します列挙型と "ifs"を単一の計画エンティティで使用して、同じ動作を取得します。それでも、APIの制限に遭遇したか、誰かがこれを達成するためのよりよい方法を知っているかどうかを知ることは素晴らしいことです。ありがとう:)