我正在嘗試使用loco做一個基本的優化示例。如何使用loco進行基本優化
我有一個成本向量,它的索引對應於多個時隙的整數值,並且希望最小化不同子集的時隙的總和。
請參閱下面的我的嘗試,因爲沒有選擇的插槽和成本之間的「鏈接」,這失敗了。
(def costs [10 10 20 20 30 30 40 40 10 10])
(let [slot-vars (for [i (range 5)] ($in [:slot i] 1 10))
cost-vars (for [i (range 10)] ($in [:cost i] 10 40))]
(solution
(concat
slot-vars
cost-vars
[($distinct (for [i (range 5)] [:slot i]))]
(for [i (range 5)]
($= [:cost i] (get costs i))))
:minimize (apply $+ (for [i (range 5)] [:slot i]))))
這聽起來像一個減少揹包問題。 你可以做一個最大化,但不是最小化。可能需要直接處理choco庫才能做到這一點。 – Mike