2017-02-22 3 views
1

Ich stecke seit Wochen in diesen Fehler. Ich weiß nicht, was damit nicht stimmt. Entweder AMPL oder mein Modell hat definitiv einen Fehler in der Deklaration und den Definitionen der Parameter.Numerisches Argument außerhalb der Domäne in AMPL

Ich bin mit Solver NEOS und es gibt mir Fehler:


Fehler bei _cmdno 23 Ausführen von "let" Befehl (Datei amplin, Zeile 85, Offset 1582): nicht pow bewerten (-82,15570137754236, -3,5): Numerisches Argument aus Domäne os-7.neos-server.org Fehler (2) in/opt/Verst/Verst -R amplin


Linie 85 ist hier in meinem Datendatei als:

Let rate [kl, ist]: = B * log (1 + ((Pmax/NPRBs [kl, ist]) * h [kl, ist])/NoB);

Der Fehler tritt in einem "let" -Befehl in Zeile 85 meiner Eingabe auf. Der Fehler besteht darin, dass etwas im Modell eine negative Zahl zu einer gebrochen negativen Kraft erhöht, was eine Operation ist, die kein gültiges Ergebnis als reelle Zahl hat.

In dem Modell verwende ich: lassen h [kl, ist]: = beta * (d [kl, ist]^(- alpha));
(-alpha ist auch hier, die den Fehler auslösen könnte)

Jeder Ausweg?

+0

Wie würden Sie '(-82.2)^(- 3.5)' berechnen? –

+0

Ich weiß nicht woher das Ding kommt, genau! Deshalb habe ich die Frage gestellt. – Amigo

+0

Meine offensichtliche Vermutung: 'alpha = 3.5' ​​und einige' d' sind '-82.2'. –

Antwort

0

Ich habe diesen Fehler behoben. Ich benutzte die Funktion Normal() von AMPL, die negative Werte erzeugte, aufgrund derer dieser Fehler auftrat.

Ich habe eine andere AMPL-Funktion max (Normal(), 1) verwendet, um die Normale() mit Argument 1 zu umbrechen. Das bedeutet, wenn die linke Seite von max() eine negative Zahl hat. Es wird den positiven Wert verwenden, der hier 1 ist. Sie können den gewünschten Wert anwenden.

Verwandte Themen