Optimierung
#11
@BoskoBiati

Ich hab stumpf die komplette Fahrzeit aller Routen inc. Tankzeit (je Tour 10 min) addiert und durch 24 Std geteilt und das Ergebnis aufgerundet.. (deswegen hab ich rein rechnerisch dahinter geschrieben !) 

:49:
Top
#12
Hi Dieter,


es muß einen Unterschied zwischen Elektro- und Wasserstoffbussen geben, sonst ist das Ganze hier für den A....
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#13
(23.07.2018, 18:04)BoskoBiati schrieb: Hi Dieter,


es muß einen Unterschied zwischen Elektro- und Wasserstoffbussen geben, sonst ist das Ganze hier für den A....

Es gibt einen Unterschied in der Ladezeit, selbstverständlich. Der Tankvorgang dauert wenige Minuten während ein Ladevorgang
deutlich mehr Zeit in Anspruch nimmt.
Den Umlaufplan für die Elektrobusse hatte ich als Datensatz vorliegen, der war aber auf Elektrobusse abgestimmt. Ich möchte nun einen neuen
Plan erstellen, da Wasserstoffbusse schneller wieder einsatzbereit sind. Deshalb gehe ich davon aus, dass ich weniger Busse benötige. Ich würde gerne
die Umlläufe so aufteilen, dass die geringste Anzahl an Busse dabei herauskommt. Geht das irgendwie?

VG
Bob
Top
#14
Ich habe jetzt nochmal eine Excel-Liste erstellt, wo ich beispielhaft
zeige, wie ich die Sortierung und Aufteilung meine.:


.xlsx   Umläufe.xlsx (Größe: 17,66 KB / Downloads: 5)

Auf der rechten Seite befindet sich die Liste, die ich nun per Hand erstellt habe. So würde ich gerne
die gesamte Liste zuteilen, ob mit Formel oder VBA, beides würde ich dankend annehmen.

Ich hoffe, dass ihr mir helfen könnt.

VG
Bob
Top
#15
Hallo Bob,
 
in der Anlage eine mögliche programmierte Lösung zur Ermittlung der minimalen Anzahl an Bussen.
 
Bemerkungen:
1. Die Liste muss nach "Start" sortiert sein.
2. Die Anzahl der Busse ist zwar minimal, aber die Verteilung der Umläufe auf die Busse nicht sehr gleichmässig (zB fährt Bus 72 weniger als eine Stunde).


Angehängte Dateien
.xlsm   Umläufe.xlsm (Größe: 53,63 KB / Downloads: 5)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • bobderbaer
Top
#16
Hallo Bob,

hier einmal Antwortversuche auf die Fragen in deiner PN:

1. zu:
Zitat:Bus 1 fährt drei Umläufe, könnte allerdings noch einen mehr fahren, da Umlauf 91 um um 24:18 startet, also nach dem Ende des Tankvorganges. Kann man das noch irgendwie einfügen?
Das war auch meine erste Lösung. Allerdings endet dann der letzte Umlauf für Bus 1 um 3:39 des Folgetages. Ein täglicher Zyklus der so gefundenen Umläufe ist dann nicht möglich, da der erste Umlauf für Bus 1 um 3:19 beginnt.
Falls du es ändern möchtest kannst du es direkt im Programm anpassen:
a) Mit Alt+F11 wird der VBA-Editor aufgerufen.
b) Mit einem Doppelklick auf "Modul1" unter "VBAProject(Um..">"Module" im linken Projektfenster wird im rechten Editorfenster mein Programm angezeigt.
c) In folgenden zwei Zeilen
Code:
'        If dblBusBis(lngAktBus) <= varListe(lngAktUmlauf + 1, 3) Then
        If dblBusBis(lngAktBus) <= varListe(lngAktUmlauf + 1, 3) And dblBusVon(lngAktBus) + 1 >= varListe(lngAktUmlauf + 1, 5) Then
must du das ' aus der ersten Zeile entfernen und am Anfang der zweiten Zeile einsetzen.  Das ' macht eine Programmzeile zum vom Interpreter nicht auszuwertenden Kommentar. Es wir also der Code der zweiten Zeile durch den Code der ersten Zeile ersetzt.

2. zu
Zitat:Wie genau hast du das programiert?
Das kannst du dir das Programm wie in 1. a) und b) beschrieben anschauen.


3. zu
Zitat:Mit Makros?

Ja, so nennt man die in VBA geschriebenen Programme (Subroutinen und Funktionen) auch.

4. zu
Zitat:Ist das schwer zu lernen?
Das ist für mich, der schon sehr lange dabei ist, auf jeden Fall schwer zu beantworten.
Hier einmal einige Gesichtspunkte:


a) Algorithmen
Die wichtigste Fähigkeit für einen Programmierer ist es für eine Aufgabe Algorithmen zu finden, so dass die Aufgabe mit Hilfe der Elemente der Programmiersprache gelöst werden kann. Mit deiner Frage zu 1. hast du ja gezeigt, dass du meinen Algorithmus zum Lösen deiner Aufgabe verstanden hast.
Wichtig hierfür ist meines Erachtens die Fähigkeit strukturiert zu Denken und hierfür ist wiederum ein Verständnis der Aussagenlogik wichtig.
Hiermit meine ich nicht die mathematisch genau hergeleiteten Regeln der Aussagenlogik, sondern meines Erachten reicht es sich vorstellen zu können in Zukunft Spass an einfachen Rechenrätseln zu haben,  in denen Ziffern durch Formen ersetzt sind. Blush

b) Programmiersprache (hier VBA)
Ich denke das Lernen der eigentlichen Programmiersprache selbst ist relativ einfach, da die Anzahl der Sprachelemente sehr begrenzt ist und man mit wenigen Elementen schon komplexe Programme erzeugen kann.
In dem Programmbeispiel habe ich neben direkten Zuweisungen "... = ..." nur If-Verzweigungen "If... Then... Else ... End If" und For-Schleifen "For... Next"genutzt.
Im Internet gibt es viele Artikel (auch in deutsch) in denen die Sprache umfangreich erklärt wird und für spezielle Fragen gibt es diese Foren.

c) Schnittstellen Programm-Excel
Für die Schnittstellen gilt das gleiche wie für die Elemente der Programmiersprache.
Die Anzahl der unterschiedlichen Schnittstellen ist übersichtlich, man kann mit wenigen Schnittstellen schon komplexe Aufgaben lösen, im Internet findet man viele gute komplette Beschreibungen der Schnittstellen und für spezielle Fragen gibt es diese Foren.

d) Üben und Lernen
Wie für jedes andere Handwerk ist es wichtig die gewonnenen Fähigkeiten regelmässig anzuwenden und auch von den Erfahrungen anderer durch direktes Fragen oder Ansehen von Artikeln zu lernen und die Kenntnisse in den Bereichen a) bis c) zu erweitern.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#17
Hi,

hier mal mit Formeln:



.xlsx   Umläufe (1).xlsx (Größe: 47,4 KB / Downloads: 6)
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • Frogger1986
Top
#18
Hi,

noch eine Version:


.xlsx   Umläufe (1).xlsx (Größe: 44,84 KB / Downloads: 6)
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • bobderbaer
Top
#19
Smile 
Ich danke den vielen Helfern hier, das war/ist echt super Klasse! :97: :97:
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste