समारोह की स्थापना तुच्छ था:
fr <- function(x) { x1 <- x[1]
x2 <- x[2]
-(log(x1) + x1^2/x2^2) # need negative since constrOptim is a minimization routine
}
की स्थापना बाधा मैट्रिक्स ज्यादा दस्तावेज़ीकरण की कमी की वजह से समस्याग्रस्त था, और मैं प्रयोग का सहारा लिया। सहायता पृष्ठ कहता है "व्यवहार्य क्षेत्र ui% *% theta - ci> = 0" द्वारा परिभाषित किया गया है। इसलिए मैं परीक्षण किया है और यह करने के लिए "काम" लग रहा था:
> rbind(c(-1,-1),c(1,0), c(0,1)) %*% c(0.99,0.001) -c(-1,0, 0)
[,1]
[1,] 0.009
[2,] 0.990
[3,] 0.001
तो मैं प्रत्येक बाधा/सीमा के लिए एक पंक्ति में डाल दिया:
constrOptim(c(0.99,0.001), fr, NULL, ui=rbind(c(-1,-1), # the -x-y > -1
c(1,0), # the x > 0
c(0,1)), # the y > 0
ci=c(-1,0, 0)) # the thresholds
इस समस्या के लिए वहाँ सभी मूल्यों के लिए कि में एक संभावित कठिनाई है एक्स का कार्य वाई -> 0. के रूप में इंफ में जाता है। मुझे अधिकतम को x = .95 और y = 0 मिलता है जब भी मैं प्रारंभिक मान को "कोने" पर धक्का देता हूं, लेकिन मुझे कुछ संदेह है कि यह है सही अनुमान नहीं जो मैंने अनुमान लगाया था "कोने" में था। संपादित करें: इस का पीछा मैं तर्क था कि ढाल अतिरिक्त "दिशा" प्रदान कर सकते हैं और एक ढाल समारोह कहा:
grr <- function(x) { ## Gradient of 'fr'
x1 <- x[1]
x2 <- x[2]
c(-(1/x[1] + 2 * x[1]/x[2]^2),
2 * x[1]^2 /x[2]^3)
}
यह "चलाने" था अनुकूलन थोड़ा सी के करीब (.999 ..., 0) कोने, इससे दूर जाने की बजाय, जैसा कि कुछ शुरुआती मूल्यों के लिए किया गया था। मैं कुछ हद तक निराश है कि इस प्रक्रिया लगता है रहने के लिए जब शुरू करने मूल्यों संभव क्षेत्र के केंद्र के करीब हैं "चट्टान के लिए सिर":
constrOptim(c(0.99,0.001), fr, grr, ui=rbind(c(-1,-1), # the -x-y > -1
c(1,0), # the x > 0
c(0,1)), # the y > 0
ci=c(-1,0, 0))
$par
[1] 9.900007e-01 -3.542673e-16
$value
[1] -7.80924e+30
$counts
function gradient
2001 37
$convergence
[1] 11
$message
[1] "Objective function increased at outer iteration 2"
$outer.iterations
[1] 2
$barrier.value
[1] NaN
नोट: हंस वर्नर Borchers पर आर-सहायता के लिए एक बेहतर उदाहरण पोस्ट किया है कि किनारे से थोड़ी दूर बाधा स्थापित करके कोने मान प्राप्त करने में सफल:
> constrOptim(c(0.25,0.25), fr, NULL,
ui=rbind(c(-1,-1), c(1,0), c(0,1)),
ci=c(-1, 0.0001, 0.0001))
$par
[1] 0.9999 0.0001
@G और अन्य - क्या कोई समझा सकता है कि क्रॉस पोस्टिंग क्यों फेंक रही है? क्या यह उल्लेख करना स्वीकार्य होगा कि आप एक लिंक के साथ क्रॉस पोस्टिंग कर रहे हैं? मेरे पास एक तरह से या किसी और की मजबूत भावनाएं नहीं हैं, लेकिन इस मुद्दे पर कुछ स्पष्टता शायद वांछित है। यदि यह ऐसा कुछ है जो आर-समुदाय ने पहले से निपटाया है, तो मुझे लगता है कि उन चर्चाओं से जुड़ना एक अच्छी शुरुआत होगी। – Chase
यदि आप "क्रॉस पोस्टिंग" के लिए मेटा टैब पर कोई खोज करते हैं तो आपको विभिन्न राय मिलती हैं, जिनमें से अधिकांश क्रॉस-पोस्टिंग की ओर अपेक्षाकृत स्वीकार्य हैं। (हालांकि, क्रॉस-पोस्टिंग, ज्यादातर लोगों को परेशान करने लगती है।) आर-हेल्प पोस्टिंग गाइड द्वारा निर्धारित आर-हेल्प और चचेरे भाई समूहों पर एक मजबूत एंटी-क्रॉस-पोस्टिंग नैतिकता है। पोस्टिंग गाइड को एसओ में संभावित होने के नाते मुझे मुश्किल समय लगता है। –
@Chase जब लोग पोस्ट पार करते हैं और किसी को भी यह नहीं जानते हैं तो किसी के लिए किसी समस्या के समाधान को लिखना बहुत संभव है जो पहले ही हल हो चुका है जो कि उनके समय का अपशिष्ट हो सकता है। जब लोग इसे ज्ञात करते हैं तो लोग व्यक्तिगत रूप से परवाह नहीं करते हैं (और यह अत्यधिक नहीं है)। – Dason