gpt4 book ai didi

optimization - 如何使用 loco 进行基本优化

转载 作者:行者123 更新时间:2023-12-03 15:52:53 24 4
gpt4 key购买 nike

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

最佳答案

这不是答案,但我希望它可以帮助指出可能有帮助的方向。听起来像是背包问题?

您可以通过以下方式找到最大值:

(def slots (for [i (range 10)] (keyword (str "slot-" i))))

(solution
(concat
(for [s slots] ($in s 0 1))
[($in :total-weight 10 60)
($in :total-value 5 5)
($knapsack [10 10 20 20 30 30 40 40 10 10]
(repeat 10 1)
slots :total-weight :total-value)]))

假设您只能有 5 个插槽。

是否可以通过查看源代码并直接使用 Choco 库来编写最小化版本?

查看loco的来源 knapsack功能。

关于optimization - 如何使用 loco 进行基本优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44954588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com