【发布时间】:2017-12-06 06:08:42
【问题描述】:
例如,如果我想最大化returns函数的期望 E[r]= w1r1+w2r2 求解权重 w1 和 w2 的优化值。
【问题讨论】:
-
你试过什么?输入和预期输出的示例是什么?
-
我只想写一个优化函数。最大化函数y=w1r1+w2r2,输入r1和r2,给出w1+w2=1的约束,我想知道w1和w2的值
标签: j
例如,如果我想最大化returns函数的期望 E[r]= w1r1+w2r2 求解权重 w1 和 w2 的优化值。
【问题讨论】:
标签: j
您真正给出的唯一约束是 w1+w2=1
w1 =.0.25
(,~ -.)w1
0.25 0.75
考虑到 w1 的值,这会同时处理 w1 和 w2。
r1 r2 +/@:* w1 w2 计算 r1w1 + r2w2
r1 =. 5
r2 =.10
(r1,r2) (+/@:* (,-.))w1
8.75
(r1,r2) (+/@:* (,-.))0.9
5.5
(r1,r2) (+/@:* (,-.))0.01
9.95
如果您真的想最大化,您需要为 r1 和 r2 的值添加方程并将其考虑在内,但也许我不明白您的问题?
回复下面的评论:如果w1+w2=1的约束还在起作用,那么问题就变成了将r1和r2中的值相加,那么哪个更大的应该得到w值1和另一个将得到 w 值 0
r1=.2 4 6 3 2
r2=.2.1 4 6 3 2
r3=.2 4 6 3 2.3
r1 (,-.)@:>/@:(+/@:,.) r2
0 1
r2 (,-.)@:>/@:(+/@:,.) r1
1 0
r3 (,-.)@:>/@:(+/@:,.) r2
1 0
'w1 w2'=.r3 (,-.)@:>/@:(+/@:,.) r2
w1
1
w2
0
'w1 w2'=.r1 (,-.)@:>/@:(+/@:,.) r2
w1
0
w2
1
(r1,.r2) +/@:,@:(+ . *) (0 1) NB. w1=.0 w2=.1
17.1
(r1,.r2) +/@:,@:(+ . *) (1 0) NB. w1=.1 w2=.0
17
(r1,.r2) +/@:,@:(+ . *) (0.5 0.5) NB. w1=.0.5 w2=.0.5
17.05
根据下面的后续评论,我会以两种方式之一来处理它。我可以从 1980 年代挖掘出我所有的线性规划文本,并提出最终的数学解决方案(包括退化情况和局部最大值/最小值),或者使用与上述相同的技术,但对于比 n=2 更大的情况。我会选择第二个选项。
让我们首先看一下 r 矩阵,它是一组常量。在这个例子中,我采用一个随机的 5 X 10 矩阵,其值从 1 到 10。
r=. >: ? 5 10 $ 10
r
4 4 8 1 4 3 6 9 6 2
2 6 5 4 4 7 5 10 4 6
2 4 9 10 1 1 9 8 2 7
5 6 5 4 7 9 2 6 10 6
10 3 6 2 10 2 7 10 4 2
现在我要使用的技巧是,我想找到平均值最高的列,然后乘以 w 的最大值。使用 (+/ % #) 轻松处理 J
(+/ % #) r
4.6 4.6 6.6 4.2 5.2 4.4 5.8 8.6 5.2 4.6
然后找到列表的排名以便能够对原始r矩阵的列进行重新排序。领先的7 表示7 { r 是最大的平均值等。
\:@:(+/ % #) r
7 2 6 4 8 0 1 9 5 3
我使用它依次使用 {"1 重新排序矩阵 r 的列,因为我正在处理列。结果是我重新排序了 r 的列,以便具有最大平均值的列位于左侧,并且右边最小。
(\:@:(+/ % #) {"1 ]) r
9 8 6 4 6 4 4 2 3 1
10 5 5 4 4 2 6 6 7 4
8 9 9 1 2 2 4 7 1 10
6 5 2 7 10 5 6 6 9 4
10 6 7 10 4 10 3 2 2 2
一旦我有了它,接下来的事情就是开发 w 向量。由于我现在在左侧拥有所有最大的平均值,因此我将最大化 w 左侧的值,使其在所指出的约束范围内尽可能大。
w=. 0.2 0.2 0.2 0.2 0.15 0.01 0.01 0.01 0.01 0.01
#w NB. w1 through w10
10
+/w NB. sum of the values in w
1
>./w NB. largest value in w
0.2
<./w NB. smallest value in w
0.01
因为 r 矩阵已使用 + . * 重新排序,所以点积给出了 w1r1 , w2r2 , w3r3 ... w10r10 的值
(({"1~ \:@: (+/ % #))r) + . * w
1.8 1.6 1.2 0.8 0.9 0.04 0.04 0.02 0.03 0.01
2 1 1 0.8 0.6 0.02 0.06 0.06 0.07 0.04
1.6 1.8 1.8 0.2 0.3 0.02 0.04 0.07 0.01 0.1
1.2 1 0.4 1.4 1.5 0.05 0.06 0.06 0.09 0.04
2 1.2 1.4 2 0.6 0.1 0.03 0.02 0.02 0.02
要实际得到矩阵的权重,将所有值求和
+/ , (({"1~ \:@: (+/ % #))r) + . * w
31.22
【讨论】: