2016-06-17 16 views
0

Ich versuche, eine Gewinnfunktion der Form zu maximieren (a-bc^x1) Py - (Px X1) wo a-bc^x1 ist eine spillman Produktionsfunktion (y = a-bc^x1). Ich konvertiere die Produktionsfunktion in eine Umsatzfunktion, indem ich die Produktionsfunktion mit dem Einheitspreis der Ware multipliziere, ausgedrückt als Py. Px * x1 ist die Kostenfunktion, die eingegeben wird x1 multipliziert mit Px; Px ist der Stückpreis von x1.Wie verwende ich constrOptim, um eine nichtlineare Zielfunktion (Spillman) mit linearer Ungleichheitsbedingung zu erstellen?

Die oben wird von einem Budget von 5000. So Px eingeschränkt * X1 < = 5000 und X1> = 0, Einheitspreise Py und Px sind 100 und 200 jeweils neu zu schreiben ich die Einschränkung als = x1 < = 25. Ich habe meine Zielfunktion wie unten

fn=function(x){ 
     x1=x[1] 
     a=3474;b=1325;c=0.93575;Py=100;Px=200 
     -(a-b*(c^x1))*(Py)-(a-b)-(x1*Px) 

} 

Mein challange kommen bei der Codierung ui, ci und Theta aufgebaut, die ich einen Versuch gemacht haben, wie folgt;

A=matrix(c(1,0,-1,0),ncol=2,byrow=TRUE) 
B=c(0,-25) 
xinit=c(1,1) 
xans2=constrOptim(theta=xinit, f=fn, grad=NULL, ui=A, ci=B,method = "Nelder-Mead") 
xans2$par 

Ich erhalte eine Antwort von 25,00000, -9,89082 die seltsam ist, weil ich nur einen Wert für x1 erwarten. Könnte mir jemand helfen, das Problem in meinem Setup zu identifizieren?

Antwort

0

Von ?optim:

für Optim, eine Liste mit den Komponenten:

par: Der beste Satz von Parametern gefunden.

Wert: Der Wert von fn entspricht par.

Sie fragen nach xans2$par, die Ihnen den besten Parametersatz liefert, den Sie aufgrund Ihrer Eingabe gefunden haben.

xans2$value gibt den Wert fn entsprechend diesen Parametern.

Wenn Sie nach einem einzelnen Wert suchen, würde ich vermuten, dass dies das ist, was Sie wollen.

xans2$value 
[1] -329360 
+0

Ich benutze 'ConstrOptim', für die 'xans & pars' erwarte ich einen einzelnen Wert, da ich nur einen Parameter x1 schätze. Bitte schauen Sie sich meine Einschränkung 0 <= x1 <= 25 an, dies sollte nur einen Wert für x1 ergeben –