Anonim

Ένα κοινό πρόβλημα προγραμματισμού

Ένας από τους πιστούς αναγνώστες μου έχει γράψει, ζητώντας μου πώς θα λύσω ένα κοινό πρόβλημα προγραμματισμού. Εδώ είναι η κατάσταση: μια διαδρομή που χρησιμοποιεί ένα λεωφορείο έχει προγραμματιστεί να λειτουργεί κάθε 60 λεπτά αλλά, ανάλογα με την ώρα της ημέρας, η διαδρομή μπορεί να διαρκέσει μέχρι και 70 λεπτά για να ολοκληρωθεί. Φυσικά, εάν ένα λεωφορείο που έχει προγραμματιστεί να λειτουργεί κάθε 60 λεπτά χρειάζεται πραγματικά 70 λεπτά για να ολοκληρωθεί, τότε το λεωφορείο θα είναι πάντα αργά και τελικά θα καταλήξει να χάσει ένα ταξίδι. Υπάρχουν τέσσερις διαφορετικοί τρόποι με τους οποίους μπορούμε να διορθώσουμε αυτό το πρόβλημα.

Συνολικά, το πρόβλημα αυτό καταδεικνύει τις δυσκολίες που έχουν οι προγραμματιστές στις διαδρομές προγραμματισμού που δεν εκτελούνται πολύ συχνά. Είναι εύκολο να ορίσετε μπλοκ σε λεωφορεία σε δρομολόγια που εκτελούν συχνή εξυπηρέτηση, επειδή υπάρχουν πολλά ταξίδια για να διαλέξετε. Είναι δύσκολο να αναθέσετε μπλοκ σε λεωφορεία σε διαδρομές που δεν λειτουργούν πολύ συχνά, επειδή υπάρχουν πολύ λίγα ταξίδια για να διαλέξετε. Σε ορισμένες περιπτώσεις, οι μόνες εναλλακτικές λύσεις μπορεί να είναι είτε η προσπάθεια συμπίεσης του οδηγού είτε η παραμονή του οδηγού για μεγάλο χρονικό διάστημα.

Αυτό το πρόβλημα είναι πιθανό να αυξηθεί στο μέλλον, καθώς η αυξημένη κυκλοφοριακή συμφόρηση και η οδήγηση συνεισφέρουν στη μείωση της ταχύτητας λειτουργίας του λεωφορείου. Οι λύσεις προγραμματισμού που ήταν κομψές στην τελειότητα τους το 1980, το 1990 ή το 2000 δεν μπορούν πλέον να λειτουργήσουν το 2011. Αν και δρομολόγια που λειτουργούν σπάνια συχνά παραβλέπονται από το προσωπικό της αντιπροσωπείας λόγω της συνηθισμένης χαμηλής πορείας τους (μερικές φορές ονομάζονται "χαμένες γραμμές" ίσως ο λόγος που έχουν χαμηλή αναβάθμιση είναι ότι υποφέρουν από το πρόβλημα προγραμματισμού που αναφέρεται. Η εφαρμογή αυτών των αρχών προγραμματισμού μπορεί να λειτουργήσει σαν μια έκδοση διαδρομής λεωφορείου της επιτυχημένης επίδειξης πραγματικότητας "The Biggest Loser".

Προσθέστε ένα λεωφορείο στη διαδρομή

Το πρώτο πράγμα που μπορούμε να κάνουμε για να διορθώσουμε αυτό το πρόβλημα είναι να προσθέσουμε ένα λεωφορείο στη διαδρομή. Στο παράδειγμα που αναφέρθηκε παραπάνω, εάν ένα λεωφορείο διαρκεί 70 λεπτά για να ολοκληρώσει μια επιστροφή μετ 'επιστροφής, τότε ένας λεωφορείο μπορεί να προσφέρει μια διαδρομή 70 λεπτών ή δύο λεωφορεία μπορούν να φτάσουν σε 35 λεπτά. Αν και αυτή είναι η πιο εύκολη λύση, είναι το πιο ακριβό. Εάν κοστίζει 100 δολάρια την ώρα για τη λειτουργία ενός λεωφορείου και προσθέτουμε ένα επιπλέον λεωφορείο σε αυτή τη διαδρομή για οκτώ ώρες την ημέρα, δαπανούμε επιπλέον 800 δολάρια ανά ημέρα * 254 εργάσιμες ημέρες ετησίως = 200.000 δολάρια + ετησίως για την επίλυση ενός προβλήματος προγραμματισμού. Προσθέτουμε την υπηρεσία όχι λόγω της ζήτησης, αλλά επειδή η διαδρομή δεν μπορεί να οδηγηθεί στην τρέχουσα διαμόρφωσή της.

Αφαίρεση των Σταθμών Bus

Το δεύτερο πράγμα που μπορούμε να κάνουμε για να διορθώσουμε αυτό το πρόβλημα είναι να καταργήσουμε τις στάσεις των λεωφορείων. Η αφαίρεση των στάσεων του λεωφορείου είναι ο μόνος πραγματικός τρόπος για να αυξηθεί η ταχύτητα λειτουργίας του λεωφορείου (ανανεώστε τη μνήμη σας για το πώς βρισκόμαστε στις στάσεις του λεωφορείου), καθώς εκτιμάται ότι κάθε στάση λεωφορείου, όπου το λεωφορείο σταματά, προσθέτει 30 δευτερόλεπτα στο χρόνο λειτουργίας του λεωφορείου. Οι διαδρομές που έχουν μέση απόσταση τερματισμού μικρότερη από τα 600 μέτρα είναι καλοί υποψήφιοι για την απομάκρυνση της στάσης, αν και γνωρίζουμε ότι η κατάργηση των στάσεων είναι ενίοτε πολιτικά επικίνδυνη.

Αλλάξτε τη διαδρομή

Το δεύτερο πράγμα που μπορούμε να κάνουμε είναι να αλλάξουμε την ίδια τη διαδρομή. Πολλές υπηρεσίες κυκλοφορητών που μπορεί να εμπίπτουν σε αυτό το πρόβλημα προγραμματισμού λειτουργούν με οδογέφυρες διαδρομές γύρω από μια συγκεκριμένη γειτονιά (σκέφτομαι τις διαδρομές DASH του Λος Άντζελες εδώ). Οι διαδρομές εξισορρόπησης όχι μόνο θα μειώσουν το χρόνο που απαιτείται για την ολοκλήρωσή τους, αλλά πιθανώς θα αυξήσουν την ιππασία με πιο άμεσους προορισμούς σύνδεσης (διαβάστε το αστάρι μου για το πώς να σχεδιάσετε διαδρομές λεωφορείων).

Διασυνδέστε τη διαδρομή με μια άλλη διαδρομή

Φυσικά, η παραπάνω λύση δεν θα λειτουργήσει με μια διαδρομή που ήδη λειτουργεί σε μια ευθεία γραμμή που συνδέει δύο προορισμούς, και μπορεί να μην λειτουργήσει σε καμία περίπτωση εάν η υπάρχουσα διαδρομή είναι πολύ παραγωγικός επιβάτης. Σε αυτή την περίπτωση, η καλύτερη λύση είναι πιθανόν η διασύνδεση. Στη διασύνδεση, συνδέουμε μια διαδρομή λεωφορείου με μια άλλη που μοιράζεται ένα κοινό άκρο. Φανταστείτε δύο διαδρομές λεωφορείων, και οι δύο λειτουργούν κάθε 60 λεπτά. ένα διαρκεί 70 λεπτά για να ολοκληρωθεί μια επιστροφή μετ 'επιστροφής (υποθέτοντας ότι περιλαμβάνεται στάση) και το ένα διαρκεί 50 λεπτά για να ολοκληρωθεί μια επιστροφή. Ξεχωριστά, η διαδρομή που διαρκεί 70 λεπτά θα καθυστερεί συνεχώς και τελικά θα χάσει ένα ταξίδι και η άλλη θα έχει υπερβολικό ποσό παραμονής. Μαζί, δουλεύουν τέλεια. Προκειμένου να λειτουργήσει η διαστρωμάτωση, οι δύο διαδρομές πρέπει να μοιράζονται ένα κοινό άκρο, να λειτουργούν με την ίδια ταχύτητα και πρέπει να χρειαστεί επιπλέον χρόνος εκτέλεσης ενώ ο άλλος έχει περιττό χρόνο παραμονής.

Συνολικά

Συνολικά, είναι δύσκολο να προγραμματίσετε λεωφορεία όταν η επιθυμητή πρόοδος δεν ταιριάζει με το χρόνο λειτουργίας. Ωστόσο, η αποτελεσματική χρήση μιας ή περισσότερων από τις παραπάνω τέσσερις τεχνικές θα προχωρήσει πολύ προς την κατεύθυνση της επίλυσης αυτού του προβλήματος.

Ένα κοινό πρόβλημα προγραμματισμού