约束优化 - 价值不在可行区域的内部

时间:2015-07-09 17:28:53

标签: r optimization error-handling minimization

我试图在R-中复制Excel Solver,这基本上是一个约束优化问题

我试图最大限度地降低每次操作的费用,即总费用/总操作数等于以下功能但有一些约束条件。

CPA功能:

(a+b+c+d)/((consta+(Ba*ln(a)))+ (constb+(Bb*ln(b)))+(constc+(Bc*ln(c)))+(constd+(Bd*ln(d)))

其中未知变量是a,b,c,d和const *代表回归的常数,B *代表回归的系数(因此它们是我所拥有的值)。

以下是我试图最小化的简化填写函数:

(a+b+c+d)/ (((69.31*ln(a))+(14.885*ln(b))+(21.089*ln(c))+(9.934*ln(d))-(852.93))

约束:

a+b+c+d>=0    
a+b+c+d<=130000(total spend)
a<=119000 (maxa)
a>=272.56(mina)
b<=11000(maxb)
b>=2.04(minb)
c<=2900(maxc)
c>=408.16(minc)
d<=136800(maxd)
d>=55.02(mind)

我正在使用约束优化功能这样做。我的代码如下:

g<-function(a,b,c,d) { (a+b+c+d)/((consta+(Ba*log(a)))+ (constb+(Bb*log(b)))+ (constc+(Bc*log(c)))+ (constd+(Bd*log(d)))) }

gr<-function(a,b,c,d) {

c((1/((consta+(Ba*log(a)))+ (constb+(Bb*log(b)))+(constc+(Bc*log(c)))+  (constd+(Bd*log(d)))))-((Ba*(a+b+c+d))/(a*((consta+(Ba*log(a)))+ (constb+(Bb*log(b)))+(constc+(Bc*log(c)))+(constd+(Bd*log(d))))**2)),

(1/((consta+(Ba*log(a)))+ (constb+(Bb*log(b)))+(constc+(Bc*log(c)))+   (constd+(Bd*log(d)))))-((Bb*(a+b+c+d))/(b*((consta+(Ba*log(a)))+ (constb+(Bb*log(b)))+(constc+(Bc*log(c)))+(constd+(Bd*log(d))))**2)),

(1/((consta+(Ba*log(a)))+ (constb+(Bb*log(b)))+(constc+(Bc*log(c)))+(constd+(Bd*log(d)))))-((Bc*(a+b+c+d))/(c*((consta+(Ba*log(a)))+ (constb+(Bb*log(b)))+(constc+(Bc*log(c)))+(constd+(Bd*log(d))))**2)),

(1/((consta+(Ba*log(a)))+ (constb+(Bb*log(b)))+(constc+(Bc*log(c)))+(constd+(Bd*log(d)))))-((Bd*(a+b+c+d))/(d*((consta+(Ba*log(a)))+ (constb+(Bb*log(b)))+(constc+(Bc*log(c)))+(constd+(Bd*log(d))))**2)))

}

A<-matrix(c(1,0,0,0,-1,0,0,0,0,1,0,0,0,-1,0,0,0,0,1,0,0,0,-1,0,0,0,0,1,0,0,0,-1,-1,-1,-1,-1,1,1,1,1),10,4)

B<- c(mina, -maxa, minb, -maxb, minc, -maxc, mind, -maxd,-totalspend, 0)

constrOptim(c(273,6,409,56),gr,NULL,A,B)'

当我运行优化函数时,它声明值不在可行区域(Error in constrOptim(c(273, 6, 409, 56), gr, NULL, A, B) : initial value is not in the interior of the feasible region)的内部。但是,我输入的起始值满足所有函数约束。我还检查了确保我的函数,渐变函数,Ui和Ci被正确编码。感谢任何帮助。

0 个答案:

没有答案