Zwei Kapitäne von "Digital Breakthrough - 2020" oder Lösen Sie einen Fall in wenigen Stunden

Bild



Mit Ihnen auf den Freiflächen von Habr gibt es zwei Kapitäne der Teams von Rosneft-Mitarbeitern, die am Finale des Digital Breakthrough 2020 IT-Marathons teilgenommen haben und darüber nicht schweigen können.



Rosneft ist IT-Ereignissen nicht gleichgültig. Das Unternehmen selbst generiert jährlich Hackathons und Herausforderungen ( https://rn.digital/it2020 ), um die IT-Community zu rocken und dringende Probleme zu lösen. Die Mitarbeiter dürfen jedoch nicht an Rosnefts eigenen Hackathons-Marathons teilnehmen - dies ist gegenüber externen Teilnehmern nicht ethisch. Aber sie, Entwickler und Programmierer von High-Tech-Unternehmenssoftware, wollen sich an der heldenhaften Stärke messen!



Daher ist die Teilnahme von Rosneft-Mitarbeitern an verschiedenen Hackathons eine Art Aufrechterhaltung des Teams in einem Kampfzustand, eine Quelle der Inspiration und Ideen, die die Entwicklung nicht standardisierter Ansätze für IT-Aufgaben fördert. Die Hauptsache ist nicht zum Nachteil der Hauptarbeit, aber das ist bereits offensichtlich. Der Ölführer strebt die Digitalisierung von Geschäftsprozessen und die Substitution von Informationstechnologien im Bereich der Öl- und Gasförderung an. Daher wird das Vorhandensein eines Wettbewerbsgeistes unter den Mitarbeitern des Unternehmens und die Bereitschaft, mit dem Rest der Welt zu konkurrieren, als gute Form angesehen.



In diesem Artikel erzählen die Mitarbeiter von RN-BashNIPIneft, Chingiz Akhmetov und Maya Bikmetova, in Farbe über den Weg ihrer Teams zum Finale eines coolen IT-Events, tauschen Einblicke und Life-Hacks aus.



Chingiz Akhmetov und das "Inn BTG" -Team



Stellen wir uns zuerst vor. "Inn BTG" ist: "Innovativ. Brillant. Technologisch. Großartig ". Sie sind auch Vladimir Ryzhikov, Radmir Karimov und Murad Musin und Chingiz Akhmetov.



Vor etwas mehr als einem Jahr, als in unserer Ufa eine der Phasen des Hackathons Digital Breakthrough - 2019 stattfand, bildeten wir ein Team, um daran teilzunehmen, und beteiligten uns an der Lösung des Problems. In dieser denkwürdigen Zeit erreichten wir das Finale, das in Kasan stattfand! Leider ist es damals nicht unserem gesamten Team gelungen, an der Veranstaltung teilzunehmen. Daher mussten die Überreste des Teams im Notfall eine neue "Bande" der gleichen Abtrünnigen aus anderen Städten bilden (unsere Ufa wurde von Cherepovets und St. Petersburg unterstützt). Im Finale haben wir es leider nicht geschafft, zu gewinnen oder gar eine Nominierung zu bekommen. Daher haben wir vom letztjährigen Hackathon nur Merch in Form von schönen hellen Sweatshirts mit den Symbolen des Wettbewerbs und einer ungedeckten Gestalt, um das Finale zu gewinnen ...



In diesem Zusammenhang wurde 2020, zwei Wochen vor dem Start des Ural-IT-Hubs des Marathons Digital Breakthrough - 2020, eine willensstarke Entscheidung getroffen, ein neues Team für einen brillanten und bedingungslosen Sieg zu schaffen, zuerst in der Region und dann in der Endphase des Wettbewerbs.



Wie im letzten Jahr wurde das Rückgrat (3 Kämpfer) aus Kollegen einer Abteilung unseres Wissenschafts- und Designinstituts gebildet, die jetzt ein Softwarepaket für die geologische Modellierung von Ölfeldern "RN-GEOSIM" entwickeln. Aus Gründen der Zuverlässigkeit wurde das Team mit einem Bankangestellten aufgefüllt, allerdings nicht wegen Krediten und Hypotheken, sondern weil er unser Freund auf einer ehemaligen Studentenbank ist und sein Geschäft kennt. So war es möglich, eine "fantastische Vier" zusammenzustellen, bei der jeder Teilnehmer Erfahrung in bestimmten Bereichen der Programmierung hatte und in gewisser Weise ein Experte war.



Bild

Screenshot der Sendung während der Bekanntgabe der Fallgewinner.



Als erfahrene Teilnehmer möchten wir einen Anstieg der Organisation des Hackathons als in der Vergangenheit feststellen. In diesem Jahr gibt es mehr Aufgaben, und sie sind vielfältiger. Beispielsweise sind Aufgaben nicht nur für Webdienste aufgetreten. Dieses Mal findet der Hackathon in einem Online-Format statt, was den Teilnehmern das Leben erheblich erleichtert und es ermöglicht hat, Transportkosten zu sparen. Wichtige Neuigkeiten, Interviews mit interessanten Menschen, verschiedene Wettbewerbe und Quiz werden auf dem YouTube-Kanal ausgestrahlt. Informationen für Teilnehmer werden auf Telegrammkanälen veröffentlicht. Im Haupttelegramm-Chat des Wettbewerbs gibt es Kommunikation mit Unterstützung bei allgemeinen Fragen, Antworten kommen sofort. Es gibt auch einen Kanal zum Finden von Mitgliedern und Teams. Discord wurde für die Kommunikation innerhalb des Teams ausgewählt (es wurde auch für die Kommunikation mit den Fallfachleuten an Kontrollpunkten verwendet). Mit einem Wort, alles ist für Menschen!



Unabhängig davon möchten wir ein "Plus" für die Tatsache setzen, dass es jetzt keine starre Verbindung zur Region gibt: Unser Team ist aus Ufa, aber wir waren einmal beschäftigt und konnten nicht am Wolga Hub teilnehmen, aber wir konnten im Ural antreten. Ich habe mich gefreut, dass die Aufzeichnungen aller Sendungen und Streaming-Schutzmaßnahmen auf dem YouTube-Kanal veröffentlicht werden. Transparent und informativ.



Unser Team entschied sich für die Teilnahme an der Lösung des Falls „Radweg“ der Abteilung für Informatisierung der Region Tjumen: „Entwicklung einer Software, mit der die anfängliche Platzierung von Fußgängerüberwegen, Radwegen und das tatsächliche Gehen und Radfahren von Stadtbewohnern analysiert werden kann“. Nicht dass wir so große Fans wären. Diese Aufgabe wurde gewählt, weil sie im Interview mit dem Fallinhaber ausführlich beschrieben wurde ( https://www.youtube.com/watch?v=hLPGCZ-5HRc ), und das Hauptziel war es, eine Technik, einen Algorithmus zu bekommen. Das ist genau unser Thema.



Bild

Die Teams priorisierten die Fälle vor dem Start. Das endgültige Verhältnis der Anzahl der Teams nach Fällen am Ural Hub wurde nach dem Start sichtbar.



Wir haben verstanden, dass es sehr wichtig ist, die Tools auszuwählen, mit denen MVP (Minimum Viable Product oder unserer Meinung nach „ein Produkt mit minimalen, aber ausreichenden Funktionen, um die ersten Verbraucher zufrieden zu stellen“) auf schnellste Weise hergestellt werden kann. Für uns sind dies Python mit seinen Bibliotheken NetworkX (zum Arbeiten mit Diagrammen) und OSMnx (zum Darstellen von OpenStreetMap-Daten als Diagramm). Die Leistung einer solchen Lösung lässt zu wünschen übrig, da Python selbst langsam ist und NetworkX keine speziellen Algorithmen für die Arbeit mit Straßendiagrammen hatte. In unserem Prototyp erreichte die Betriebszeit für relativ kleine Cluster mehrere zehn Minuten. Es ist klar, dass eine solche Zeit für den Benutzer nicht akzeptabel ist, aber wir haben gezeigt, dass die Idee funktioniert. In Zukunft betrachten wirEs ist besser, den Rechenkern mit speziellen Algorithmen mit Parallelisierung in eine kompilierte Sprache umzuschreiben.



Das kurze Wesen unseres Algorithmus ist, dass die gesamte Stadt (das Schema des Algorithmus, links, oben) in Abschnitte unterteilt ist. In jedem Abschnitt wird der Grad der Nachfrage nach Radwegen bestimmt (Schema des Algorithmus, rechts, oben). Das Straßendiagramm wird gefiltert, sodass nur die Straßen übrig bleiben, auf denen Radwege gebaut werden können. Dann wird das gefilterte Diagramm mit dem Cluster verglichen, und es bleiben nur die Straßen übrig, die in die erforderlichen Abschnitte des Clusters fallen (der Algorithmus funktioniert, links, unten). Die resultierenden Inseln werden durch den Algorithmus der kürzesten Wege verbunden, so dass das System der Radwege verbunden ist, dh der Radfahrer kann von einem Gebiet zu einem anderen fahren (das Schema des Algorithmus, rechts, unten).



Bild

Das Schema des Algorithmus.



Wir wurden in Unteraufgaben unterteilt: Eine erledigte den Berechnungsteil, die zweite brachte den Server auf, die dritte die Visualisierung auf der Webseite, die vierte die Desktopansicht. Wir haben fast alles geschafft. Wir haben uns entschlossen, das resultierende Diagramm vollständig auf den Client zu übertragen und über OpenLayers zu zeichnen, obwohl es wahrscheinlich besser wäre, unseren eigenen Kachelserver bereitzustellen.



Bild

Schema entworfen von MVP (suboptimal).



Endgültige Ergebnisse



Im Finale des Wettbewerbs „Digital Breakthrough“ haben wir vom Energieministerium einen Fall erhalten: „Entwicklung eines Systems zur Modellierung der Abhängigkeit des Stromverbrauchs und der Wirtschaftsindikatoren der Russischen Föderation nach Gebieten und Branchen“. Im Vergleich zur regionalen Phase war das Finale ehrgeiziger: Die Anzahl der Fälle stieg (15 gegenüber 9), die Anzahl der Teams in einem Fall (26 gegenüber 10). Der Preisfonds für die Gewinner ist ebenfalls gewachsen. Die genauen Zahlen finden Sie auf der Website https://leadersofdigital.ru .



Während der Arbeit an der Aufgabe und nach den Ergebnissen der Konsultationen mit den Fallinhabern haben wir beschlossen, das Projekt in einem Jupyter-Notizbuch in Python zu implementieren und die Ökonometrie für die Modellierung zu verwenden. Die abhängige Variable des Modells war das tatsächliche Energieverbrauchsvolumen, die unabhängige Variable war das Bergbau- und Produktionsvolumen. Die Prognose der abhängigen Variablen wurde nach folgendem Algorithmus durchgeführt:



1. Die Industrieproduktion wird prognostiziert (ein linearer Trend wird erstellt):

a. Der Abschnitt des Diagramms wird hervorgehoben, der zur Berechnung der Trendkoeffizienten verwendet wird.

b. Die linearen Trendkoeffizienten werden nach der Methode der kleinsten Quadrate bestimmt.

2. Es wird ein Modell für die Abhängigkeit des Trends des Stromverbrauchs vom Volumen der industriellen Produktion erstellt.



Bild



3. Das Volumen des Energieverbrauchs wird anhand des konstruierten Modells und der Modellierung nach der SARIMA-Methode vorhergesagt (der Artikel https://habr.com/ru/company/ods/blog/327242/ hat uns dabei sehr geholfen. ).



Bild

Verbleibende Prognoseergebnisse.



Leider blieb der gewählte Ansatz etwas hinter den ersten drei zurück und wir belegten den 22. Platz. Werden wir in Zukunft an ähnlichen Hackathons teilnehmen? Na sicher! Durch das Lösen von Aufgaben, die nicht mit der Arbeit zusammenhängen, können Sie Arbeitsaufgaben später mit einem neuen Auge betrachten.



Maya Bikmetova und "NEII"



Einige Wochen vor Digital Breakthrough 2020 nahm ich an einem weiteren, kleineren Hackathon teil und mein Team belegte den ersten Platz. Dies beeinflusste wahrscheinlich die Entscheidung, sich beim rein russischen Wettbewerb zu versuchen.



Ich habe meine Kollegen und Freunde Marina Semyonova, Guzel und Nail Akmurzin eingeladen, sich dem Team anzuschließen, weil es viel einfacher ist, unter Zeitdruck mit Freunden zu arbeiten, die ich kenne. Dies verschwendet keine Zeit und alle 30-36 Stunden des Hackathons können der Entwicklung und Erstellung eines MVP gewidmet werden. Wir sind als NEII-Team in den Volga IT-Hub von Digital Breakthrough - 2020 eingetreten. Dieser Name ist schon lange bei uns. Wir glauben, dass dies unser Wesen am besten widerspiegelt: Mitarbeiter eines Forschungsinstituts, das sich mit der Entwicklung von Systemen befasst, die auf künstlicher Intelligenz (KI) basieren.



Wie meine Kollegen (und sie sind Konkurrenten) bereits oben geschrieben haben, wurde der Hackathon aufgrund der komplexen epidemiologischen Situation online abgehalten. Wir hatten drei Kontrollpunkte, an denen wir mit dem Moderator, dem technischen Experten und dem Vertreter des Fallinhabers sprachen. Sie hörten unseren Ideen zu, gaben Ratschläge, beobachteten, was wir getan haben, und bewerteten unsere Präsentation.



Alle Teams erhielten eine Liste mit 10 Fällen. Bei der Registrierung haben wir Prioritäten gesetzt. Und einer der vorrangigsten Fälle für das Team war, beim Hackathon zu ihr zu gehen. Darüber hinaus enthielt jeder Fall eine allgemeine Beschreibung des Problems, und eine detaillierte Beschreibung wurde erst zu Beginn des Wettbewerbs gegeben. Wir haben einen Fall, in dem es notwendig war, ein intelligentes System zu entwickeln, um Informationen zu automatisieren und der Bevölkerung soziale Vorteile zu bieten. Kunde dieses Falls war das Ministerium für Sozial-, Demografie- und Familienpolitik der Region Samara.



Bild

Das allgemeine Schema der entwickelten Lösung.



Wir haben uns auch über Discord unterhalten, um Aufgaben zu besprechen. Gemeinsam haben sie Ideen für Lösungen eingebracht, verteilt, wer was tun würde. Marina war verantwortlich für die Serverlogik - Backend und Datenbank, Guzel - für die Präsentation, Nail - für das Frontend. Ich übernahm die Entwicklung eines maschinellen Lernmodells, das Teammanagement und die Kommunikation mit dem Fallinhaber.



Als Ergebnis der Arbeit an der Aufgabe haben wir Prototypen von zwei Systemen implementiert.



1. Eine Webanwendung in Form eines Chat-Bots, um die Bevölkerung über die Vorteile zu informieren.



Im Kliententeil beschreibt der Bürger seine Lebenssituation. Die resultierende Anfrage wird an den NLP-Dienst gesendet, der für die Verarbeitung natürlicher Sprache verantwortlich ist. Unter der Haube wird die Kategorie der Benutzeranforderung unter Verwendung von Methoden des maschinellen Lernens bestimmt. Mit anderen Worten, das Problem der Textklassifizierung wird gelöst. Die NLP-Prognose des Modells wird an die Datenbank gesendet. Die erforderlichen Informationen zu den erwarteten Vorteilen werden mithilfe des Schlüssels aus der Datenbank zurückgegeben und dem Kunden erneut zur Verfügung gestellt.



Bild

Das Haupt-Backend-Skript greift auf den NLP-Dienst und die Datenbank zu.



Im Dialogfeld sieht der Benutzer, auf welche Leistungen er Anspruch hat und welche Dokumente gesammelt werden müssen.



Bild

Screenshot eines Chatbot-Prototyps, um die Bevölkerung über die Vorteile zu informieren.



2. Dienst zur Überprüfung der Aktualisierung von normativen und gesetzgeberischen Rechtsakten.



Im Verlauf der Kommunikation mit einem Vertreter des Fallinhabers stellte sich heraus, dass der große Schmerz der Sozialschutzbeauftragten darin besteht, dass regelmäßig viele Regulierungsdokumente überprüft werden müssen, um Änderungen in der Gesetzgebung schnell zu erkennen. Bei Änderungen aktualisiert der Mitarbeiter die lokale Datenbank. Dies kostet natürlich viel Zeit und Mühe, und die Mitarbeiter haben weniger Zeit, direkt mit Menschen zu arbeiten. Wir sind davon überzeugt, dass solche Routinearbeiten automatisiert werden können und sollten.



Als erste Annäherung zur Lösung dieses Problems haben wir einen Dienst vorgeschlagen, der regelmäßig Dokumente in der lokalen Sozialversicherungsdatenbank mit denselben Dokumenten in der Datenbank eines Onlinedienstes vergleicht, z. B. "Consultant Plus". Wenn Unterschiede in Dokumenten festgestellt werden, sendet der Dienst eine Benachrichtigung an den Sozialversicherer: „In Dokument X wurden Änderungen vorgenommen. Aktualisieren Sie Ihre lokale Datenbank. " Auf diese Weise wird der Sozialversicherungsbeauftragte von der Notwendigkeit befreit, eine Reihe von Dokumenten zu schaufeln. Die Maschine erkennt Gesetzesänderungen für ihn / sie, während er / sie mit Bürgern arbeitet.



Wenn wir über die technische Seite des Problems als Grundlage für die Lösung des Problems des Vergleichs von Texten sprechen, haben wir den klassischen Ansatz verwendet, der häufig beim Abrufen von Informationen verwendet wird. Dabei werden Dokumente in Form numerischer Vektoren dargestellt, gefolgt von einer Schätzung des Kosinusabstands zwischen ihnen.



Bild

Formel zur Berechnung des Kosinusabstands zwischen Vektoren zweier Dokumente.



Und jetzt ein paar Hackathon-Überlebenshacks. Wir empfehlen zu Beginn, die Liste und die Versionen der Bibliotheken zu genehmigen, mit denen gearbeitet werden soll. Auf diese Weise werden Situationen vermieden, in denen das Projekt aufgrund von Versionskonflikten nicht erstellt wird und Sie Ihren Code innerhalb von 10 Minuten zur Überprüfung einreichen müssen. Übrigens ist es besser, eine halbe Stunde vor Ende des Wettbewerbs Links zur Präsentation und zur Lösung zu veröffentlichen und diese erst im letzten Moment zu verlassen. Beim Hackathon waren die Leute sehr nervös wegen einer Site, die fünf Minuten vor der endgültigen Auslieferung des gesamten Projekts abstürzte ...



Bild

Verwendete Technologien: Es lebe Open Source! Die Hauptsache ist, die Versionen der Frameworks im Auge zu behalten.



Einerseits ist der Hackathon ein Wettbewerb von technischen Spezialisten, und die Jury bewertet den Code: Lesbarkeit, Bedienbarkeit, Lösungsarchitektur, Dokumentation. Auf der anderen Seite gibt es einen Fallinhaber, und seine Vertreter sind weit entfernt von der IT-Welt. Sie schätzen vor allem die Schönheit, Konsistenz und Klarheit der Präsentation und des Interface-Designs. Mit anderen Worten, es ist besser, eine Person im Team zu haben, die sich nur mit der Präsentation befasst, jemanden, der sie verwendet, um die Lösung an den Fallinhaber zu „verkaufen“.



Endgültige Ergebnisse



Leider war keine Zeit, sich auf das Finale von Digital Breakthrough - 2020 vorzubereiten. Bis Ende des Jahres nimmt die Arbeit traditionell zu. Also haben wir uns auf Glück und aufeinander verlassen!

Im Finale des Hackathons waren wir in der gleichen Aufstellung. Diesmal sind wir auf einen Fall von Sberbank gestoßen: Die Aufgabe besteht darin, eine Lösung zu entwickeln, die die Arbeit mit E-Mails beschleunigt. Es stellte sich als großes Problem heraus, da leitende Angestellte 2.000 E-Mails pro Tag sortieren müssen, was mindestens 3 Stunden dauert!



Am ersten Kontrollpunkt wurde uns mitgeteilt, dass die Sberbank-Entwickler lange über dieses Problem nachgedacht haben, aber noch keine konkrete Lösung gefunden haben - sie brauchten eine Idee, die ihnen helfen würde, endlich zu etwas zu kommen.



Und wir fingen an zu denken. Innerhalb von 2 Stunden haben wir viele verschiedene interessante Ideen generiert (dies war der kreativste Teil des Hackathons, da einer vorgeschlagen, der andere ergänzt wurde und diese Idee zu einem perfekten Tool wurde, das reguläre E-Mails = D ersetzen würde).



Als Ergebnis haben wir die Implementierung unseres eigenen Mail-Clients "Sber-Sekretär" konzipiert, der Korrespondenz in Chat umwandelt, Chats nach Betreff in Ordnern gruppiert und das System automatisch die Bedeutung der Korrespondenz (Chat) ermittelt. Im Chat konnten Sie ungelesene Nachrichten abhören, die Texte von Nachrichten diktiert werden, ein neuer Brief wurde mit einem Sprachbefehl erstellt und im Hauptfenster wurden anstelle einer Korrespondenz zur Beschleunigung 1 bis 4 angezeigt und einige zusätzliche Funktionen angezeigt.



Bild

Layout der E-Mail-Client-Oberfläche



Als Nächstes haben wir Verantwortlichkeiten zugewiesen: Ich war für die Serverseite des Projekts verantwortlich, Nail war für die Client-Seite verantwortlich, Marina hat das Design in figma entwickelt, und Guzel hat eine schöne und umfangreiche Präsentation durchgeführt und sich auf die Verteidigung vorbereitet.



Wir wussten sofort, dass wir keine Zeit haben würden, eine funktionierende Bewerbung zu erstellen, aber wir hofften, dass zumindest der Client-Teil reifen würde. Es stellte sich als viel Arbeit heraus, und als Ergebnis haben wir in Abb. 1 gezeigt, welche Funktionalität unser E-Mail-Client haben würde, die Architektur des Projekts beschrieben, eine Reihe von Vorteilen einer solchen Lösung genannt, einen Vergleich mit Outlook, die Kosten des Projekts und die Implementierungsphasen durchgeführt.



Ich denke, wir können sagen, dass die Jury unsere Entscheidung gefallen hat, denn an einem der Kontrollpunkte haben die Tracker gezeigt, dass wir uns in die richtige Richtung bewegen. Wir haben es nicht geschafft, eine funktionierende Bewerbung einzureichen, sind aber aus 11 Teams in die Top 5 (5. Platz) gekommen. Was bedeutet der 5. Platz für uns? Dies bedeutet, dass wir beim nächsten Mal die Möglichkeit haben, das beste Ergebnis zu zeigen!



Wenn Sie auch am "Digital Breakthrough - 2020" teilgenommen haben, schreiben Sie Ihre Eindrücke und Gedanken in die Kommentare!



All Articles