OptaPlanner:java.lang.IllegalArgumentException(OptaPlanner: java.lang.IllegalArgumentException)
目前我正在OptaPlanner中实施我的第二个项目。 我正在检索以下错误:
Exception in thread "main" java.lang.IllegalArgumentException: A planning entity is an instance of a entitySubclass (class com.company.Assignment) that is not configured as a planning entity. If that class (Assignment) (or superclass thereof) is not a entityClass ([class com.company.Car]), check your Solution implementation's annotated methods. If it is, check your solver configuration.
我的SolverConfig.xml是这样的:
<?xml version="1.0" encoding="UTF-8"?> <solver> <solutionClass>com.company.Planning</solutionClass> <entityClass>com.company.Car</entityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_SOFT</scoreDefinitionType> <easyScoreCalculatorClass>com.company.PlanningEasyScoreCalculator</easyScoreCalculatorClass> <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend> </scoreDirectorFactory> <constructionHeuristic> <constructionHeuristicType>FIRST_FIT</constructionHeuristicType> </constructionHeuristic> <localSearch> <termination> <secondsSpentLimit>10</secondsSpentLimit> </termination> <changeMoveSelector> <entitySelector> <entityClass>com.company.Car</entityClass> </entitySelector> <valueSelector> <variableName>assignment</variableName> </valueSelector> </changeMoveSelector> <acceptor> <entityTabuSize>7</entityTabuSize> </acceptor> <forager> <acceptedCountLimit>1000</acceptedCountLimit> </forager> </localSearch> </solver>
“Car”类用“@PlanningEntity”注解。 “规划”类用“@PlanningSolution”注解。 塔“分配”类是我的问题的事实。 该解决方案的“@PlanningEntityCollectionProperty”位于运行“Car”列表的getter上。
“Main”类看起来像这样:
public class Main { public static final String SOLVER_CONFIG_XML = "com/company/PlanningSolverConfig.xml"; public static ScoreDirector scoreDirector; public static void main(String[] args) { // Read data from XLS file and initialize the problem ReadDataFromXls Reader = new ReadDataFromXls(); Planning planningSituation = new Planning(Reader.ReadAssignments(),Reader.ReadCars()); // Build the solver Solver solver = SolverFactory.createFromXmlResource(SOLVER_CONFIG_XML).buildSolver(); // Solve the problem and get the best solution solver.solve(planningSituation); Planning solvedPlanning = (Planning) solver.getBestSolution(); // Display the result System.out.println("TODO"); } }
错误消息与
6.3.0.CR1
基本相同+有关SLF4J
的错误SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" java.lang.IllegalArgumentException: A planning entity is an instance of an entitySubclass (class com.company.Assignment) that is not configured as a planning entity. If that class (Assignment) (or superclass thereof) is not a entityClass ([class com.company.Car]), check your Solution implementation's annotated methods. If it is, check your solver configuration.
编辑:我在OptaPlanner的第一个项目是“一对多”的问题(一个项目有一个开发人员,一个开发人员可以有多个项目)。 这个项目是一个“一对一”的问题(一辆车需要驾驶到一个任务,一个任务由一辆汽车重新开始)。
编辑:我改变了计划问题的模型。 现在,“作业”课程是我的“计划实体”,而“汽车”课程则是“计划事实”。 错误信息仍然是一样的,除了“车”和“分配”切换位置的事实:)
currently i am implementing my second project in OptaPlanner. I am retrieving the following error:
Exception in thread "main" java.lang.IllegalArgumentException: A planning entity is an instance of a entitySubclass (class com.company.Assignment) that is not configured as a planning entity. If that class (Assignment) (or superclass thereof) is not a entityClass ([class com.company.Car]), check your Solution implementation's annotated methods. If it is, check your solver configuration.
My SolverConfig.xml is this:
<?xml version="1.0" encoding="UTF-8"?> <solver> <solutionClass>com.company.Planning</solutionClass> <entityClass>com.company.Car</entityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_SOFT</scoreDefinitionType> <easyScoreCalculatorClass>com.company.PlanningEasyScoreCalculator</easyScoreCalculatorClass> <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend> </scoreDirectorFactory> <constructionHeuristic> <constructionHeuristicType>FIRST_FIT</constructionHeuristicType> </constructionHeuristic> <localSearch> <termination> <secondsSpentLimit>10</secondsSpentLimit> </termination> <changeMoveSelector> <entitySelector> <entityClass>com.company.Car</entityClass> </entitySelector> <valueSelector> <variableName>assignment</variableName> </valueSelector> </changeMoveSelector> <acceptor> <entityTabuSize>7</entityTabuSize> </acceptor> <forager> <acceptedCountLimit>1000</acceptedCountLimit> </forager> </localSearch> </solver>
The "Car" class is annotated with "@PlanningEntity". The "Planning" class is annotated with "@PlanningSolution". Tha "Assignment" class is my problem fact. The solution's "@PlanningEntityCollectionProperty" is on a getter that runs a list of "Car".
The "Main" class looks like this:
public class Main { public static final String SOLVER_CONFIG_XML = "com/company/PlanningSolverConfig.xml"; public static ScoreDirector scoreDirector; public static void main(String[] args) { // Read data from XLS file and initialize the problem ReadDataFromXls Reader = new ReadDataFromXls(); Planning planningSituation = new Planning(Reader.ReadAssignments(),Reader.ReadCars()); // Build the solver Solver solver = SolverFactory.createFromXmlResource(SOLVER_CONFIG_XML).buildSolver(); // Solve the problem and get the best solution solver.solve(planningSituation); Planning solvedPlanning = (Planning) solver.getBestSolution(); // Display the result System.out.println("TODO"); } }
Error message with
6.3.0.CR1
is basically the same + an error concerningSLF4J
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" java.lang.IllegalArgumentException: A planning entity is an instance of an entitySubclass (class com.company.Assignment) that is not configured as a planning entity. If that class (Assignment) (or superclass thereof) is not a entityClass ([class com.company.Car]), check your Solution implementation's annotated methods. If it is, check your solver configuration.
EDIT: My first project in OptaPlanner was a "One to Many" problem (a project has a developer, a developer can have multiple projects). This project is a "One to One" problem (a car is needed to drive to an assignment, an assignment is reched by a car).
EDIT: I changed the model of my planning problem. Now the class "Assignment" is my "planning entity" and the class "Car" is the "planning fact". The error message ist still the same, besides the fact that "Car" and "Assignment" switched places :)
原文:https://stackoverflow.com/questions/31961348
最满意答案
不,它不会保留它。 这是实例变量(也称为iVar)。 它不会释放旧对象,也不会保留新对象(作为setter中的典型声明属性)。
//如果属性
self.member = aString;
//调用setter,相当于[self setMember:aString],释放旧值并将一个retain(或复制,具体取决于属性声明)消息发送到aString。如果iVar
member = aString
//没有内存管理。NO it will not retain it. This is instance varaible (also called iVar). It does not release old object and does not retain the new object (as a typical declared property in setter).
//If property
self.member = aString;
// call setter, equivalent to [self setMember:aString], the old value is released and a retain (or copy depending on property declaration) message is sent to aString.If iVar
member = aString
//No memory management.
相关问答
更多-
TCP/IP模型是一个________。[2023-10-02]
a -
下列中不属于面向对象的编程语言的是?[2022-05-30]
a -
使用obj-c访问器和使用点语法有什么区别?(What's the difference between using obj-c accessors and using dot syntax?)[2022-08-19]
它并不重要,它们是一回事。 点语法是一种便于您使用的方法,我觉得它可以使您的代码更清晰。 我发现使用点语法抛出警告或错误来自编译器的一种情况是,如果你有一个id对象,即使你知道它有该属性。 id someReturnedObject = [somethingObject someMysteryObjectAtIndex:5]; int aValue = 0; aValue = someReturnedObject.value; // warning aValue = [someReturnedObject ... -
我认为你正在努力实现这一目标。 使用如下定义的协议: @protocol MyProtocol @property (nonatomic, assign, getter = isLoading) BOOL loading; @property (nonatomic, readonly) UIExpansionStyle expansionStyle; @end 以下类符合: class Conformer : MyProtocol { var loading: Bool var exp ...
-
您不能在C / C ++程序中使用Objective-C对象或构造。 为了能够使用Objective-C对象,您可以使用pimpl-idiom(指向实现的指针)。 例如,在您的情况下,将有一个类CppSendImpl和CppSend将有它的指针。 这个CppSendImpl可以在Objective-C ++(而不是Objective-C)中实现,它实现了需要Objective-C的代码,并且可以与您想要的Objective-C对象进行交互。 在这里,您可以使用Objective-C构造。 但是,如果您的Cp ...
-
Obj-C委托代表内部(Obj-C Delegate inside Delegate)[2024-04-24]
nmh的答案是正确的。 我早些时候写了一个答案,但是他的速度更快了,所以我想我会把其他部分拿走,然后在这里添加解释。 你有这个: @interface allEventsDrillPage : UIViewController { id__weak delegate; .... } @property (weak, nonatomic) id delegate; 使用此i ... -
不,它不会保留它。 这是实例变量(也称为iVar)。 它不会释放旧对象,也不会保留新对象(作为setter中的典型声明属性)。 //如果属性self.member = aString; //调用setter,相当于[self setMember:aString],释放旧值并将一个retain(或复制,具体取决于属性声明)消息发送到aString。 如果iVar member = aString //没有内存管理。 NO it will not retain it. This is instance vara ...
-
在Obj-C中实现类似Java的ByteBuffer的最佳方式是什么?(What's the best way to implement a Java-like ByteBuffer in Obj-C?)[2023-03-11]
你可能需要NSMutableData。 You probably want NSMutableData. -
您应该为所有@property (nonatomic, weak) IBOutlet...使用@property (nonatomic, weak) IBOutlet... 如果使用strong,则视口控制器和超级视图将保留插座。 当视图消失时,视图控制器仍然具有对该出口不再可见的引用。 您可以在-viewDidUnload中将outlet属性设置为nil,或者使用弱设置,当视图消失时,指针将自动完成。 You should use @property (nonatomic, weak) IBOutlet. ...
-
如果我正确地解释所有这些,我将在Swift中执行此操作: var decelerationBehavior: UIDynamicItemBehavior? var springBehavior: UIAttachmentBehavior? // the if statement in Objective-C is checking for nil. In Objective-C nil == 0 == false if let decelerationBehavior = decelerationBeha ...