ganzzahlige Programmierung

29/03/2010 - 18:34 von Jörg Klein | Report spam
Hallo,

ich suche nach einer verstàndlichen Einführung in die ganzzahlige und gemisch-ganzzahlige Programmierung. Es gibt ja unglaublich
viel Literatur zu diesem Thema. Gut sind ein paar Beispiele, die z.B in Pseudocodo, oder in Beispielprogrammen dargestellt werden.

Vielen Dank für die Hilfe

Joerg
 

Lesen sie die antworten

#1 Markus Wichmann
29/03/2010 - 21:16 | Warnen spam
Jörg Klein () schrieb:
Hallo,

ich suche nach einer verstàndlichen Einführung in die ganzzahlige und
gemisch-ganzzahlige Programmierung. Es gibt ja unglaublich viel
Literatur zu diesem Thema. Gut sind ein paar Beispiele, die z.B in
Pseudocodo, oder in Beispielprogrammen dargestellt werden.




Was willst du machen? In deinem Fall vielleicht Fließkommazahlen
eliminieren. Das einzige, bei dem Ganzzahlen ungenauer sind als
Fließkommazahlen, ist die Division. Bei der musst du eben aufpassen.

Allgemein kannst du nur bei einer Division so viel wie möglich im
Vorhinein kürzen, und ansonsten Algorithmen anpassen, sodass eventuell
gar nicht dividiert werden muss. Viel mehr gibts dazu nicht zu sagen.

Beispiel: Ich sollte mal eine Fließbandwaage programmieren (OK, war nur
ne Simulation). Und das mit nem uC ohne Fließkommaeinheit. Die Waage
soll abschalten, sobald ein bestimmtes Gewicht von ihr heruntergefallen
ist. Einziges Messdatum war das Gesamtgewicht der aufliegenden Waren.
Also war folgendes zu tun:

- Aus Lànge der Waage und Geschwindigkeit (fest vorgegeben) die Anzahl
der 100ms-Abschnitte ermitteln (wie viele Abschnitte einer Lànge, die
in 100ms weggedreht wird, gibt es?)
- Alle 100ms Gewicht auslesen und durch obige Anzahl teilen
- Ergebnisse aufaddieren
- Stoppen, wenn Summe Wunschgewicht überschreitet

Soweit ganz einfach. War aber doof, denn da war ja eine Division drin.
Eine kurze Analyse ergab, dass man die Abbruchbedingung

Summe(gewicht / anzahl) >= wunschgewicht

aufgrund der Tatsache, dass die Anzahl eine Konstante ist, verlustfrei
zu

Summe(gewicht) >= wunschgewicht * anzahl

umgeschrieben werden konnte. Das Gewicht wiederum ergab sich aus einer
linearen Funktion aus dem A/D-Wandler, also

gewicht = anstieg * wandlerausgabe + korrektur

Nun war der anstieg auch eine gebrochene Zahl. Aber das war auch kein
Problem, denn der ist ja auch eine Konstante. Also konnte im Vorhinein
die Zahl

x := (wunschgewicht * anzahl - korrektur) / anstieg

berechnet werden, und die Abbruchbedingung vereinfacht sich zu

Summe(wandlerausgabe) >= x

Vielen Dank für die Hilfe

Joerg




HTH,
Markus
Progress (n.): Process through which USENET evolved from smart people in
front of dumb terminals to dumb people in front of smart
terminals.

news://freenews.netfront.net/ - complaints:

Ähnliche fragen