各位opatplanner用户,
我的规划问题是:获取遥感卫星星座的有效时间表。
@PlanningEntity:
ImageStrip (String taskCode,
int stripIndex,
String satellite,
Timestamp timeSlot,
boolean selected (planning variable))
@PlanningVariable:
boolean selected
我的问题数据主要是这样的:
Image_Strip:
D1 Sat2 22-12-2015 11:02:24.051
D1 Sat1 22-12-2015 11:04:24.122
A2 Sat3 22-12-2015 11:06:24.172
B2 Sat3 22-12-2015 11:07:24.197
B2 Sat2 22-12-2015 11:08:24.284
D1 Sat3 22-12-2015 11:10:24.042
A2 Sat2 22-12-2015 11:10:24.395
A2 Sat2 22-12-2015 11:10:24.441
A1 Sat2 22-12-2015 11:10:24.441
A1Sat3 22-12-2015 11:16:24.642
C 2 Sat3 22-12-2015 11:17:24.648
C 1 Sat3 22-12-2015 11:18:24.738
A 1 Sat3 22-12-2015 11:19:00.469
A 1 Sat1 22-12-2015 11:20:24.1223
C 1 Sat1 22-12-2015 11:21:24.916
B 2 Sat1 22-12-2015 11:30:24.373
A 3 Sat2 22-12-2015 11:40:50.750
A 1 Sat3 22-12-2015
@planningsolution:Schedule
拜托,问题是我如何才能为一个布尔规划变量定义值范围提供程序?此外,我还想为我的规划变量使用@planningvariable(nullable=true)。
例如,对于计划中定义的计划变量(选择了布尔值),使用@ValueRangeProvider。并使用过度约束的规划条件(nullable=true)。
我的规则如下:
规则“过渡时间规则”
when
$leftImageStrip:ImageStrip($selected : selected,
$satellite : satellite,
selected != null,
$timeslot : timeslot)
$sumTime : Number () from accumulate (
$rightImageStrip : ImageStrip(selected == $selected,
satellite == $satellite,
Math.abs(timeslot.getTime() - $timeslot.getTime()) <= 180000,
this != $leftImageStrip),
sum($rightImageStrip.gain))
then
System.out.println(" SUM = " + $sumTime );
scoreHolder.addHardConstraintMatch(kcontext, -$sumTime.intValue());
我在规划实体做了以下工作:
@PlanningVariable(nullable=true,valueRangeProviderRefs={“SelectedRange”})
公共布尔getSelected(){return selected;}
在规划解决方案中,我提出了以下内容:
@ValueRangeProvider(id=“SelectedRange”)
List getValueRange(){return Arrays.AsList(Boolean.False,Boolean.True);}
公共列表getBooleanList(){return SelectedList;}
public void setBooleanList(List selectedList){This.selectedList=selectedList;}
但我收到了以下错误:
线程“Awt-EventQueue-0”java.lang.IllegalArgumentException中出现异常:entityClass(类org.tasking.domain.ImageStrip)有一个PlanningVariable)带注释的属性(selected),其valueRangeProviderRef(selectedRange)在注册的PlanningSolution或PlanningEntity上不存在。
我无法识别错误原因。提前致谢!!!
使用boolean
(而不是boolean
),因此null
可以表示未初始化的变量(这使得实体也未初始化)。
关于您的解决方案:
@ValueRangeProvider(...)
List<Boolean> getValueRange() {
return Arrays.asList(Boolean.FALSE, Boolean.TRUE);
}
我用增量java解决了optaPlanner的一个问题,其中有一个规划变量和一个规划实体,但是现在在我们的项目中有很多规划变量的需求,比如我们要找到最好的房间(容量,isAC等),汽车(totalSeatsLeft,isAC等),我们不知道有多少资源,因为我们每天都需要根据用户的需求增加更多的资源,比如会议室设施等,所以给我一些想法,这样我们就可以为optaPlanner做一个域。多谢了。
我正在研究来自OptaPlanner的示例用例。我也找不到任何类似的例子,可以在一个规划实体中求解多个规划变量。例如,在护士名册中,一个轮班的每个可能需要多个分配的。在这种情况下,如何利用planner和编写规则呢?
在制定时间表时,你必须遵守法律(硬性要求),该法律规定,作为一名员工,你每七天只能工作一定的时间。它没有说日历周的原因是在创建时间表时为雇主提供一些回旋空间(通常是提前4-16周)。一旦设置了此计划期的开始日期,在您想要进行完整的重新规划之前,该日期无法更改,但您需要通知员工。所以它可以被视为一个变量,直到你接受了时间表,然后它就变成了一个常数。当然,这是每个员工的个人情况。该开始日期将由您的第一
我是Optaplanner的新手,我一直在考虑将VRP扩展到一个不同的问题空间。我用的是6.1.0-final。这是一个很难计算的问题,但下面是: 规划实体-装运(扩展Standstill),由运输商(即货船)锚定规划变量-终端(货物目的地),当然隐含运输商(作为VRP示例中的Vehicle这样的影子变量) 在这个路径问题中,货物直接运输到一个终端,然后再运回工厂。即一个运输机服务于一个终点站,然
首先,对于我的分数计算,我使用Java EasyScoreCalculator接口,并使用Java API创建我的求解器(因为我在Java OSGI插件中从xml或drl文件加载配置/约束时遇到了问题) 我的问题: 我想解决的,一个多技术工人任务调度问题。 任务的开始日期和结束日期应在给定的日期范围内计划。 解决方案:我要优化所有工人的总体工作量(分钟)。 目前我确实有三个规划变量: null 在
我想为VRP创建一个过度约束规划的增量分数。我创建了一个传统的虚拟车辆,其中包括所有计划外的客户。 示例: Optaplanner将Customer1从Vehicle1移动到Vehicle2: 当我得到AfterVariableChanged:previousStandstill(Customer1)时,在Customer.getVehicle()中,我有旧车辆的价值,我不知道是否需要添加软成本(