2016-04-06 10 views
-1

Ich brauche eine Gleichung, die alle Lösungen zu einer Ungleichung findet. Zum Beispiel: 5x+4y+3z+3a+3b>40. Die 5 Unbekannten, x, y, z, a und b müssen von 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0.5 und 0.0 genommen werden. Zum Beispiel x=4, y=4, z=1, a=1, b=1 ist eine Wahrscheinlichkeit, aber es gibt viele mehr. Wie kann ich meinen Computer dazu bringen, alle zu finden?Wie mache ich meinen Computer diese Berechnung und welche Programmiersprache muss ich verwenden?

+0

Es klingt wie Sie versuchen, ein Programm zu schreiben, das Ihnen die geringste Menge an Arbeit, die Sie tun müssen, um eine Gesamt-GPA von> 40 zu bekommen. – Zymus

+0

Sagen wir, ich möchte 2.00 gpa dann meine Noten werden xyzab und meine Credits sind jeweils 5,4,3,3,3 dann ist die Gleichung wie folgt (5x + 4y + 3z + 3a + 3b)/18)> 2,00 dann 5x + 4y + 3z + 3a + 3b> 36 Also wie kann Ich finde jede Möglichkeit für xyzab ????? :( –

Antwort

0

Die Hauptsache ist herauszufinden, wie man alle Möglichkeiten durchläuft. In den meisten Sprachen werden Sie mit fünf For-Schleifen konfrontiert. Python können Sie itertools.product verwenden, um dies zu erreichen:

#!/usr/local/bin/python3 

from itertools import product 

for g in product(range(9),repeat=5): 
    if 5*g[0]+4*g[1]+3*g[2]+3*g[3]+3*g[4] > 80: 
     print([x/2 for x in g]) 

Statt 0-4 von 0,5, ich alles eine ganze Zahl verdoppelt werden. Vielleicht möchten Sie die Dinge jedoch überdenken. ./gpa.py | wc sagt mir, dass Sie über 20k mögliche Lösungen bekommen werden. (Und wenn Sie nur die Anzahl der Lösungen suchen und diese nicht auflisten müssen, kann dies Ihre Arbeit vereinfachen.)

+0

Wenn ich dies zu Python schrieb [0, 1, 3, 4, 4] ist eine Lösung, aber wenn ich denke, wie y = 1 und z = 4 a = 4 b = 4 dann ist das Ergebnis falsch > 80 :( –

+0

'[0,1,3,4,4]' mit einem Wert von '5 * 0 + 4 * 1 + 3 * 3 + 3 * 4 + 3 * 4 = 37 'ist keine Lösung (und "z = 3"). Und es würde "g = [0,2,6,8,8]" entsprechen. – Teepeemm

0

Wie bereits erwähnt, handelt es sich um ein ganzzahliges Programmierproblem (ein Spezialfall der linearen Programmierung). Eine Websuche sollte viele Treffer ergeben. Es ist im Allgemeinen ein sehr schwieriges Problem zu lösen; Mein Rat ist, ein Paket wie GLPK zu verwenden. Die Integer-Programmierung ist sehr nützlich. Selbst wenn dieses spezielle Problem begrenzt ist, ist es sehr viel Zeit, herauszufinden, wie Sie es lösen können, so dass Sie ganzzahlige Programmierung auf andere Probleme anwenden können.

Verwandte Themen