Optimization 有约束的桶的公平分配

Optimization 有约束的桶的公平分配,optimization,constraints,allocation,Optimization,Constraints,Allocation,我有一个有n个价格的向量(p1,p2,…,pn) 我想把这些分配到3个桶A、B、C中,这样每个桶中所有价格的平均值都尽可能接近。限制因素是每个篮子都有不同数量的价格 使用R,我试图最小化每个桶中价格的平方差,但没有得到正确的结果 我的做法正确吗 所以我接近它的方式是我有一个向量: x<-c(50,50,50,10,20,40,50,20,4,40,20) xy您可能需要一个二进制变量x(i,j)指示是否将价格i分配给bucketj。我不确定你所说的每个篮子里有不同数量的价格的确切含义,但

我有一个有n个价格的向量(p1,p2,…,pn)

我想把这些分配到3个桶A、B、C中,这样每个桶中所有价格的平均值都尽可能接近。限制因素是每个篮子都有不同数量的价格

使用R,我试图最小化每个桶中价格的平方差,但没有得到正确的结果

我的做法正确吗

所以我接近它的方式是我有一个向量:

x<-c(50,50,50,10,20,40,50,20,4,40,20)

xy您可能需要一个二进制变量
x(i,j)
指示是否将价格
i
分配给bucket
j
。我不确定你所说的
每个篮子里有不同数量的价格的确切含义,但你可能是说每个价格
I
只能放入一个桶
j
。这可以用一个简单的线性不等式来建模,二进制变量意味着您需要一个MIP(混合整数规划)解算器。如果你坚持二次目标,这将成为一个MIQP。当然,也可以使用基于线性偏差的目标。我的意思是,每个价格
I
只能进入单个桶
j
。目标函数是什么?例如,
min-maxavgprice-minavgprice
minavgprice
maxavgprice
一旦你有了每个桶的
avgprice(i)
,就很容易了。
avgprice(j)
的计算是非线性的,但可以线性化。我没有意识到将avgprice(j)
线性化是可能的。你是怎么做到的?它是基于线性化一个二进制变量与一个连续变量的乘法。这方面有标准的配方。
A<-|(0x[0]+1x[1]+0x[2]+0x[3]....)  - allocation * average price |^2
B<-|(0x[0]+1x[1]+0x[2]+0x[3]....)   - allocation * average price |^2
C<-|(0x[0]+1x[1]+0x[2]+0x[3]....)   - allocation * average price |^2