Das Angelproblem

10

Angenommen, Sie möchten von 8 bis 20 Uhr am nahe gelegenen See angeln. Aufgrund von Überfischung wurde ein Gesetz eingeführt, das besagt, dass Sie nur einen Fisch pro Tag fangen dürfen. Wenn Sie einen Fisch fangen, können Sie ihn entweder behalten (und damit mit diesem Fisch nach Hause gehen) oder ihn zurück in den See werfen und weiter fischen (aber riskieren Sie, sich später mit einem kleineren Fisch oder gar keinem Fisch niederzulassen). Sie möchten einen möglichst großen Fisch fangen. Insbesondere möchten Sie die erwartete Fischmasse maximieren, die Sie nach Hause bringen.

Formal könnten wir dieses Problem wie folgt einrichten: Fische werden mit einer bestimmten Geschwindigkeit gefangen (die Zeit, die zum Fangen Ihres nächsten Fisches benötigt wird, folgt also einer bekannten Exponentialverteilung), und die Größe der gefangenen Fische folgt einer gewissen (auch bekannten) Verteilung . Wir wollen einen Entscheidungsprozess, der angesichts der aktuellen Zeit und der Größe eines gerade gefangenen Fisches entscheidet, ob der Fisch behalten oder zurückgeworfen wird.

Die Frage ist also: Wie soll diese Entscheidung getroffen werden? Gibt es eine einfache (oder komplizierte) Möglichkeit zu entscheiden, wann das Fischen eingestellt werden soll? Ich denke, das Problem ist gleichbedeutend damit, für eine gegebene Zeit t zu bestimmen, welche erwartete Fischmasse ein optimaler Fischer mit nach Hause nehmen würde, wenn er zum Zeitpunkt t beginnen würde; Der optimale Entscheidungsprozess würde einen Fisch genau dann halten, wenn der Fisch schwerer als die erwartete Masse ist. Aber das scheint irgendwie selbstreferenziell zu sein; Wir definieren die optimale Fangstrategie im Hinblick auf einen optimalen Fischer, und ich bin mir nicht ganz sicher, wie ich vorgehen soll.

b2coutts
quelle
5
Schauen Sie sich das Sekretariatsproblem auf Wikipedia an - insbesondere den Abschnitt über das 1 / E-Gesetz der besten Wahl.
Soakley
2
Ich denke, ein wesentlicher Unterschied besteht darin, dass davon ausgegangen wird, dass wir wissen, wie alles verteilt ist, während der Schlüssel zu dieser Lösung darin besteht, dass die ersten 1 / e-Bewerber verwendet werden, um einen Teil dieses Wissens zu erlangen und einen guten Schwellenwert zu definieren. Ich denke, eine ähnliche Idee könnte hier nicht ganz funktionieren. Sie könnten sich vorstellen, nur einen Schwellenwert aus den Verteilungen abzuleiten, aber ich denke nicht, dass er festgelegt werden sollte. Ich denke, die Schwelle sollte mit der Zeit sinken, da Sie immer weniger Zeit haben, um bessere Fische zu fangen.
b2coutts
1
@ Soakley siehe auch meine Antwort auf Olooneys Antwort; Der (erwartete) Wert des Wartens hängt nicht nur davon ab, welche Fänge Sie in Zukunft erhalten, sondern auch davon, welche dieser Fänge Ihre Strategie tatsächlich erzielen wird. Ich denke, diese Frage hat auch einen seltsamen selbstreferenziellen Aspekt.
b2coutts
1
Welche Funktion oder welchen Wert versuchen wir zu optimieren? Wie wägen wir Risiko und Gewinn ab? Ist es sinnvoll, eine Methode zu entwickeln, die den Erwartungswert der Größe des gefangenen Fisches maximiert? Fischen wir nur einen Tag oder mehrere Tage und im letzteren Fall, wie hängen die Tage zusammen?
Sextus Empiricus
1
Wir kennen die Verteilung ... bezieht sich das nur auf die Art der Verteilung oder beinhaltet das auch die Verteilungsparameter?
Sextus Empiricus

Antworten:

4

Sei λ die Geschwindigkeit des Poisson-Prozesses und sei S(x)=1F(x) wobei F(x) die kumulative Verteilungsfunktion der Fischgrößenverteilung ist.

t=0g(t)t0(t,0)g(0)=0xtg(t)

Geben Sie hier die Bildbeschreibung ein

g(t)(tdt,t)X>g(t)

λdtS(g(t)),
g(t)

g(t)

E(X|X>g(t))=g(t)+1S(g(t))g(t)S(x)dx.

(tdt,0)

g(tdt)=[λdtS(g(t))][g(t)+1S(g(t))g(t)S(x)dx]+[1λdtS(g(t)]g(t).

g(t)

(1)dgdt=λg(t)S(x)dx.
g(t)λ0S(x)dx

Xexp(α)S(x)=eαx

dgdt=λαeαg(t)
g(t)=1αln(1λt),
t0α=λ=1g(12)

g <- function(t,lambda, rate) {
  1/rate*log(1-lambda*t)
}
catch <- function(daylength=12, lambda=1, rfn=runif, gfn=g, ...) {
  n <- rpois(1,daylength*lambda)
  starttime <- -daylength
  arrivaltimes <- sort(runif(n,starttime,0))
  X <- rfn(n,...)
  j <- match(TRUE, X > gfn(arrivaltimes,lambda,...))
  if (is.na(j))
    0
  else
    X[j]
}
nsim <- 1e+5
catches <- rep(0,nsim)
for (i in 1:nsim)
  catches[i] <- catch(gfn=g,rfn=rexp,rate=1,lambda=1)
> mean(catches)
[1] 2.55802
> g(-12,1,1)
[1] 2.564949

XU(0,1)

g(t)=111λt/2
g(t)t

Jarle Tufto
quelle
3
g(t)(t,0)
1
g(t)(t,0)tg(t)
1
@AlexR. Ich habe eine Simulation zum Beispiel 2 unter Verwendung der erwarteten maximalen Fischgröße versucht
g(t)=1eλt1λt
g(t)