第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

克隆鏈式規(guī)劃實體

克隆鏈式規(guī)劃實體

躍然一笑 2023-04-26 17:07:36
我正在為 vrp 問題實施自定義克隆器。該文檔概述了以下內容:使用鏈接變量克隆實體是不正當的:實體 A 的變量可能指向另一個實體 B。如果 A 被克隆,那么它的變量必須指向 B 的克隆,而不是原始 B。因此,如果我們要克隆一個Customer帶有計劃變量的變量,previousStandstill我們需要執(zhí)行以下操作:public Customer safeClone() {  Customer clonedCustomer = new Customer(<CONSTRUCTOR_ARGS>);  if (previousStandstill != null) {   if (previousStandstill instanceof Vehicle) {      clonedCustomer.setPreviousStandstill( ((Vehicle)previousStandstill).safeClone();    } else if (previousStandstill instanceof Customer) {      clonedCustomer.setPreviousStandstill( ((Customer)previousStandstill).safeClone();    }  }  // What to do with shadow variables ?  return clonedCustomer;}和Vehicle.safeClone()Vehicle clonedVehicle = new Vehicle(<CONSTRUCTOR_ARGS>);// clone shadow variables ?clonedVehicle.setNextCustomer(customer.safeClone);但是,上面的示例不起作用,因為克隆的解決方案不再相同。有關如何安全克隆鏈式規(guī)劃實體的任何指示?我需要深度克隆它的規(guī)劃變量嗎?以及如何處理影子變量?這些是否也需要深度克???
查看完整描述

1 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

在類方面,您需要計劃克隆具有或繼承@PlanningEntity(無論它是真實實體還是影子實體)或@PlanningSolution類注釋的類的每個實例。目標是在工作解決方案發(fā)生變化時記住最佳解決方案的狀態(tài)。通常所有其他類不需要正常計劃克隆(但也有例外)。

所以在 VRP 中,這意味著計劃克隆 VehicleRoutingSolution、Standstill、Vehicle 和 Customer。但不是 Depot 或 Location。

然后考慮到關系的兩個陷阱:

  • 不要計劃將同一個實例克隆兩次。因此,如果您計劃克隆 A - 并且 B 和 C 都指向它 - 那么之后 B' 和 C' 應該都指向同一個 A'。不能有 A' 和 A''。例如:A、B、C 是 Customer 的一個實例,那么如果 B.previous = A 和 C.next = A,則 B'.previous = A' 和 C'.next = A'。

  • 計劃克隆絕不能指向原始工作解決方案的實例,該實例必須是計劃克隆的類。所以你不能留下一個Customer C'.next = A,它必須也是A'。

驗證這些陷阱的最佳方法是在克隆程序的末尾放置一個斷點,并比較每個客戶、車輛等的工作解決方案與其計劃克隆之間的內存地址編號。IntelliJ 在調試中以灰色顯示內存地址碼頭的變量窗口。

也就是說,不要進行自定義計劃克隆@DeepPlanningClone如果您出于正確性而這樣做,請使用。如果您是為了提高性能或 Graal,請等待 OptaPlanner-Kogito 生成自定義克隆器。


查看完整回答
反對 回復 2023-04-26
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號