我正在尝试在 R 中进行最大化,这是我之前在 Excel 中使用求解器所做的。问题是我不知道如何处理它(我在 R 中没有很好的水平)。
让我们谈谈我的数据。我有 26 个瑞士州和瑞士政府(这是 26 个州的价值之和)及其人口和“财富”。所以我有 27 个变量观察值。我不确定以下描述是否有用,但我还是把它们放在了上面。由此,我用 while 循环计算了一些变量。对于每个州 [i]:
- 资源潜力 = 平均值(wealth2011 [i],wealth2012 [i],wealth2013 [i])
- 人口平均数 = 平均数(人口 2011 [i],人口 2012 [i],人口 2013 [i])
- 人均资源潜力 = 1000*资源潜力 [i]/人口 [i]
- 资源指数 = 100*资源潜在人均[i]/资源潜在人均[瑞士政府]
这是我使用的那种循环的一个小例子:
RI=0
i = 1
while(i<28){
RI[i]=resource potential capita [i]/resource potential capita [27]*100
i = i+1
}
瑞士政府 (i = 27)的资源指数 (RI)为 100,因为我们将瑞士政府的资源潜在资本(当 i = 27)除以自身并乘以 100。因此,所有具有 RI> 的州100 是富裕州,其他 (IR<100) 是贫穷州。到这里为止,没有任何问题。我刚刚解释了我是如何构建我的数据集的。
现在我面临的问题是:我必须创建变量加权差 (wd)。它取值:
- 0如果 RI>100(富州)
- (100-RI[i])^(1+P)*Pop[i] if RI<100(可怜的州)
我这样创建这个变量:(对不起代码的弱点,我尽力了)。
wd=-1
i = 1
a = 0
c = 0
tot = 0
while(i<28){
if(i == 27) {
wd[i] = a
} else if (RI[i] < 100) {
wd[i] = (100-RI[i])^(1+P)*Pop[i]
c = wd[i]
a = a+c
} else {
wd[i]= 0
}
i = i+1
}
但是,我现在没有“p”的值。它是一个介于 0 和 1 之间的值。要找到 p 的值,我必须使用以下特征进行最大化:
- RI_26 = 65.9,这是我数据中 RI 的最小值
- RI_min = 100-((x*wd [27])/((1+p)*z*100))^(1/p),其中 x 和 z 是固定值 (x = 8'677, z = 4 '075'977'077) 和 wd [27] 每个州的 wd 总和。
我们在两个等式中有p:RI_min 和 wd。为了在 Excel 中求解,我使用了具有以下功能的 Excel 求解器:
- p_dot = RI_26/RI_min* p ==> p_dot =[65.9/100-((x* wd [27])/((1+p)*z*100))^(1/p)]*p
- RI_26 = RI_min ==>65.9 =100-((x*wd [27])/((1+p)*z*100))^(1/p)
在 Excel 中,p是我的变量单元格(唯一允许更改的值),p_dot是我要定义的目标,RI_26 = RI_min是我的约束条件。
所以我想最大化p,但我不知道如何在 R 中做到这一点。我的主要问题是RI_min和wd中存在p。我们需要进行迭代来解决它,但这离我的技能太远了。
有人可以帮助我提供我提供的信息吗?