DMUG-Archiv 2003

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Lineare Ungleichungen mit Nebenbedingungen

Herr Doktor Hofer,

Guten Abend! Das folgende ist lediglich eine Anregung; zunächst mal muss Ihr
Problem keine Lösung haben, wenn etwa alle Matrixelemente von A negativ sind
und alle Vektorelemente von b positiv. Sie bekommen einen Lösungskandidaten
mittels

solCand = PseudoInverse[A] . b

für die _Gleichung_  A . solCand = b. Diesen Vektor solCand sollten Sie
betrachten und überlegen, wie seine Elemente auf die beiden zugelassenen Werte
0 und 1 abgebildet werden könnten und die Ungleichung erfüllt werden könnte.

Etwa willkürlich mittels
sol = (0.5 < # && # < 1) & /@ solCand /. {False -> 0, True -> 1}

Alle Werte auf solCand zw. 0.5 und 1 werden auf 1 abgebildet, die anderen auf
Null.

Nun sollte A . sol - b kleiner gleich Null sein. Das wird im allgemeinen nicht
der Fall sein, weil die Idee zu primitiv ist. Sie könnten daher versuchen, die
Abbildung in sol zu automatisieren (
sol = (uG < # && # < oG) & /@ solCand ./ {False-> 0, True ->} und uG, oG
variieren). Man könnte über komplexere Bedingungen nachdenken, etwa die
Singulärwerte von A für solche Steuerungsversuche heranzuziehen. Viel Spass!

Mit den besten Grüssen
Udo.

andreas.hoefer@XXXXXXX.de schrieb:

> Hallo zusammen
>
> Mein Problem hört sich zwar sehr simpel an, doch bisher brach der Rechner
> immer den
>
> Rechenvorgang ab, weil zuviel Speicher benötigt wurde.
>
> Gegeben ist ein System von 32 linearen Ungleichungen mit 189 Unbekannten,
> also ein System,
>
> das sich in der Form
>
>                               Ax<=b ,   A (32 X 189)- Matrix, b im R^32
>
> gesucht ist eine Lösung x im R^189,
>
> schreiben lässt. Die Relation <= ist dabei komponentenweise zu verstehen.
>
> Entscheidend ist, dass die Komponenten der Lösung x nur die Werte 1 oder 0
> annehmen dürfen.
>
> Mein Ansatz war bisher:
>
> InequalitySolve[{1.Ungl,2.Ungl,...32.Ungl,
> (x1=0||x1=1),(x2=0||x2=1),...(x189=0||x189=1)},
>                 (x1,x2,...x189)}
>
> Für kleine Systeme (2 Ungl, 3 Unbekannte) funktioniert dies, so dass es an
> der Syntax wohl
>
> nicht liegen kann. Auch bei dem großen System rechnet Mathematica erst mal
> los, nur bricht
>
> der Rechner nach einigen Stunden ab.
>
> Ich würde mich freuen, wenn ich trotz des simplen, wohl wenig interessanten
> mathematischen
>
> Hintergrunds eine Antwort bekommen würde. Auch wer meint, hier liege ein
> Problem mit meiner
>
> Hardware vor, möge sich bitte melden.
>
> Vielen Dank
> Dr. Andreas Hoefer
> Die Bundesknappschaft
> Dezernat 0.71
> Tel.0234-304-8297
> Fax.0234-304-8254


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html