找到最小可能的术语x通过尝试各种组合的其他条款,一个已知的总和
2视图(30天)
显示旧的评论
你好!
这将是一个两部分的问题。
- 假设我有一个已知的总和,例如s = 12。我还有很多方面都可以和——的一部分,b, c, d等等,每一个都有一个恒定的数值分配给他们(例如,一个= 2;b = 3.5;c = 1.79等)。有一项x是这笔钱的一部分,但它是未知的,我需要尽可能低。所以,从本质上讲,我需要一个代码将尝试不同的组合,b, c等为了找到一个x是最小的可能值,假设之和保持不变。应该注意的是,一个学期也应该能够多次使用的总和如果这样做是有意义的(例如s = + + +……+ x)。
- 现在,每个学期将有一个定义的数量的时候可以使用(例如,可以使用128次,b可以使用64次等等)。当最优的组合已经使用时间的最大数量的一个条款,第二个最优组合条件需要被发现,这个词,已经耗尽了忽略。我需要这个被重复,直到耗尽所有的条款。另外,如果出现情况,最优的组合是s = + + +……+ x,但只剩下2倍,然后结合必须适应,这样没有任何剩菜(如每学期总是应该使用所有可用的数量的次)。
我需要每个组合和使用的时候对我显示按时间顺序作为回报。我怎么使这样的一个脚本呢?我不熟悉编码,它对我来说有点困难来包装我的头,所以任何帮助将不胜感激。
0评论
接受的答案
布鲁诺陈德良
2022年4月4日
你需要首先制定你的问题由明确的数学问题。
所以我unstand数组
时(在你的情况中= [,,……,a, b, b…b)与重复128次,64次)。
你想要的是找到一个子集S和x这样的
总和(S) + x = S, x(> = 0 ?)你想要尽可能小。
这个问题可以被制定为线性规划浮点数值用。找到
数组大小相同的w w值0或1的元素,这样
x (w): = abs (s - w。*)是最小的。
答案(1)
大卫。马塞罗说道
2022年4月4日
编辑:大卫。马塞罗说道
2022年4月4日
这可能是一个方法
= 2;%可以重复max 128倍
b = 3.5;%可以重复max 64倍
c = 1.79;%可以重复最多32倍
S = 50;%之和
一个= combntns (1:128 3);% 3的所有可能的combintations编号1 - 128
((:,2)> 64 & (:,3)> 32:)= [];如果# %规则重复的b和c在允许的最大数量
x =年代* (a, b, c);%发现x
x (x < 0) = +正;%排除所有x < 0
[xmin, idx] = min (x);%发现saml x
流(最佳组合是我x + % % + %我x c。x的值如果% f。\ n”,((idx:), xmin])