当前位置: 首页 > 知识库问答 >
问题:

Optaplanner VRP增量分数过约束规划

柴亦
2023-03-14

我想为VRP创建一个过度约束规划的增量分数。我创建了一个传统的虚拟车辆,其中包括所有计划外的客户。

示例:

Optaplanner将Customer1从Vehicle1移动到Vehicle2:

beforeVariableChanged:  previousStandstill(Customer1),  customer.GetVehicle() = Vehicle1
beforeVariableChanged:  nextCustomer(Customer0),        customer.GetVehicle() = Vehicle1
afterVariableChanged:   nextCustomer(Customer0),        customer.GetVehicle() = Vehicle1
afterVariableChanged:   previousStandstill(Customer1),  customer.GetVehicle() = Vehicle1
beforeVariableChanged:  vehicle(Customer1),             customer.GetVehicle() = Vehicle1
afterVariableChanged:   vehicle(Customer1),             customer.GetVehicle() = Vehicle2

当我得到AfterVariableChanged:previousStandstill(Customer1)时,在Customer.getVehicle()中,我有旧车辆的价值,我不知道是否需要添加软成本(对于虚拟车辆的成本被忽略)。有没有办法在AfterVariableChanged-PreviousStandstill而不是AfterVariableChanged-Vehicle中获得实际车辆。

共有1个答案

薛扬
2023-03-14

检查是否使用AnchorShadowVariable注释了vechicle字段:

@AnchorShadowVariable(sourceVariableName = "previousStandstill")
public VehicleNode getVehicleNode() {
    return vehicleNode;
}

该注释告诉Optaplanner更新vechicle字段。

 类似资料:
  • 我正试图用java的Optaplanner实现一个简单的云平衡系统,该系统具有过度约束的规划。 最喜欢的是,我正在尝试使用Optaplanner Java库实现一个简单的云平衡系统,该系统具有过度约束的规划。我将模型映射到我的问题(车辆和资产),进行变量替换cpuPower- 如果我使用这个简单的例子,我会收到一个所有进程都已签名的响应,尽管其中一些不能分配给计算机。对于这个问题,optaplan

  • 我一直试图让过度约束的计划来适应我的情况,但不断遇到一些失败的硬约束仍然被分配的问题。如果之前有人回答过这个问题,我很抱歉,但是我看到的大多数示例/解决方案都是围绕Drools展开的,我在这个项目中使用的是streams API。使用optaplanner的quarkus 1.4.2实现,如果有帮助的话。 任何关于我可能做错什么的见解都将不胜感激,并提前感谢:)

  • 我正在寻找将以下内容标记为错误的规则: 我想在正文中有多个语句时强制换行,因此这应该是正确的: 哪些规则适用于此?我好像找不到。我确实希望继续允许返回单行程序(例如,

  • 我已经搜索了ArrayList容量问题,但没有找到完整的答案。所以在这里再问一次。 我知道,我们在ArrayList中添加的元素数量和容量的大小是我们可以在默认值为10的列表中放入多少数据。 所以这里的问题是,在宣布是否有这样的能力时 然后我还可以继续将元素增加到10或20。那么,这个容量声明仅对达到容量时发生的内部重新分配有用吗? 或者,通过给出容量限制,我们可以只限制到添加元素的那一点吗?

  • 我在PostgreSQL中有类似的设置。(如果有区别的话,我使用的是运行Mojave的mac)。 我还有几个专栏,但问题是ID专栏。这被设置为连续的,所以使用Express我将其插入到DB中。 问题是,即使插入失败,它也会在每次插入时增加ID<代码>信息定义为唯一的,因此尝试插入现有的信息会返回错误。但是ID仍然是递增的。 例如,如果插入2行,则id为1 我是否可以设置Postgres,使其不会在

  • 有许多订单需要发货。对于每个订单,可能有1到3个路线选项。这里的问题是找出这些路线中订单的最佳分配(组合)。 假设: 假设每种类型卡车的全部运力和每公里运输成本为: 假设所有路线都有3次到达目的地的中转时间,那么: 假设路线的运输成本基于使用的卡车数量和运输距离,那么: //变量 目标函数: 受制于: 这是输入数据的CSV格式: 优化结果可能如下所示: 我的问题:我不知道如何编写约束2、3、5、6