Following are edited excerpts from Irv’s April 11 webinar with Taipy, https://taipy.io/, a tool that eases web development with drag-and-drop Python integration.
We created a solution that optimizes a complex scheduling process for a client organization. The tasks range in duration from several days to more than a year. There are teams of varying sizes, comprised of managers and tiers of personnel. The critical tasks in question are conducted routinely but scheduling them in a timely fashion can be very challenging for limited personnel. We developed an optimization model application to help generate schedules for available ongoing and future tasks.
We used Taipy to help the client to understand how we were progressing in the development of the application and to see the results. Our project was developed with an Agile methodology: the sprints were three‑weeks long and the requirements and constraints evolved, as often happens in Agile, as did some of the data that would be required to represent these constraints.
With Taipy, we created a user interface to view the “enterprise data” that included tasks and personnel required to fulfill them. We enabled client executives to edit constraints data and to launch an optimization to create a new schedule and visualize the results. We also built scenario management functionality that linked to a database so we could perform analysis and archive all the runs.
Benefits
Using Taipy, we rapidly developed prototype screens to demonstrate that we were handling the capabilities required in each sprint. We could test if we had imported the correct data, and that the imported data was what the client executives were expecting to see. When an additional field was required, we modified database scripts, pulled from the enterprise data, and added it to a table. We didn’t have to change any of the UI code.
The client executives tested features, screens, constraint editing, and eventually the optimization as we developed them.
In a decision‑support application like this, scenario management is critical because it allows the users to compare results. For example, if a client executive changed a constraint so that a manager could have five simultaneous tasks for a team instead of four, the differences in the schedule would be evident.
We established an audit trail. Because we were saving all the enterprise pulls as well as the constraint data that was edited, when a client executive ran into problems for a certain scenario, we could go into the database, pull that scenario, and find out what was happening in the optimization.
Our backend development doing the optimizations was in pure Python, so the tools that were managing and pulling the data were all reusable. We created a simple REST API that worked with the client’s Angular implementation for the end-user UI they needed.
Taipy brought speed to our Agile development. We could implement a new column or a new table in a few lines of code. This was a real advantage in showing the client executives we were giving them all the facilities they needed in their application.
Importantly, Taipy allowed us to develop completely in Python, which made it easy to connect our backend data representations with visual representations including tables, bar graphs and Gantt charts. If we had been required to write a JavaScript front-end, our development schedule would have been compromised, and we would not have been able to deliver as many features over the course of many sprints. We are using Taipy with other clients to illustrate the value of optimization-based solutions.
To discuss this with Irv, email us to set up a call.