我正在尝试使用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