Software and Operational Research
A first listing of my jobs can be the follow:
Where it is possible I will supply a link to greater deepens.
The problem was birth from a real existing requirement in some printing offices, specialized in the press of labels (adhesive, for the bottles of wine, etc.). Generally one of this printing office has more orders for the production of labels, varying for shape and number. These are printed out on a given number of sheets that are then collected into a stack and worked with "guillotines" that carry out cuts parallel to sides of the sheets and always from part to part. The problem consists to determine the disposition of the labels on the sheet in order to minimize the number of sheets necessary to satisfy the demands. The things are complicated to some technological constraints to hold in consideration, as an example, the preference to having closer the labels of equal colors, or to hold on the edges of the sheet the labels gilded or silver-plated.
Here you can download a working paper.
The two dimensional cutting stock problem is very similar to the optimization of guillotine cuts, where the sheets are cut singularly instead of all together. This is a typical problem of glassmakers that obtain the panels of glasses to apply to doors and windows from larger glass plates.
You can download a set of benchmark test problem at SICUP web pages.
The problem is a particular instance of two dimensional cutting stock problem: the possible cuts can not be them self orthogonal but only parallels. An example of application of one-dimensional cutting stock can be found in the industries that work the aluminum in order to obtain doors and windows. These, in fact, cut from long aluminum bars the pieces necessary to satisfy their production.
Within a CNR project and in collaboration with the Department of Computer Science of the Pisa University, group of operational research, object oriented design and c++ develop of a unit commitment solver for hydro-thermal problems. The main characteristics are:
use of dynamic programming for thermal sub problem solver;
use of min cost flow algorithm for hydro sub problem solver;
implementation of heuristics and economic dispatching problem solver as integer solution generator.
The resulting code is written in c++ and run under both Windows and Linux systems.
As employee of MBI s.r.l., leadership of the development team that has built the PowerSchedO software suite. Design, code documentation and code engineering of the entire system in UML using Enterprise Architect tool. The system solve the Unit Commitment problem and the bidding problem in the day ahead electricity market. It consist of three modules: a scalable server for the algorithms built in ansi c++ with an interface layer in python; a data base representing the data models running on Oracle or Postgres; a graphical user interface built in Visual Basic .NET.
An instance generator ucig is also availables on this site.
Multi-criteria analysis tool for optimal routing of international telephonic traffic. This is a typical problem of telephonic providers that haven't own network to satisfy completely the international traffic, buying from international carriers the required capacity. More information on the product at BestPrice page. The graphical interface was written in wxPython, the model in pulp and glpk as integer linear programming solver.
Design and implementation of a complex software for Macintosh for the complete management of bus drivers scheduling, including a graphical user interface for shifts handling. That application was also ported under Windows.
The software has a textual requirement specification and an object oriented design with Booch method. The Macintosh release provide a multi-platform core written in ansi c++ with a PowerPlant graphical interface. The graphical interface was then ported under Windows using MFC.
Porting from Macintosh to Windows of a complex software for the solution and management of bus drivers rosters. For that problem, was also designed and implemented an Oracle data base that support the problem model.
The Macintosh software is written in c++ and MacApp; it's ported under Windows using MFC.
Easy Windows application for the versioning of mechanical components in a multi users environment. Using a simple and effective users granting right system, the application is able to trace all the history of a piece, logging who and when someone made a modification, including also state modification (design, prototype, production, ...).
The software is written in c++ with MFC and use Oracle as data base.
As employee of MBI s.r.l., leadership of the development team that has built the MDF. MDF is a client -server framework that allows the multicast file transmission from one server to more clients. The server provides a SOAP interface that make easy the integration and the deployment. The client is provided as a c++ class library that make easy the integration in many environments as PC, hand-held, STB, etc. MDF is completely written in C++ granting optimal performance in term of CPU and memory usage.
I'm one of the contributors of mad_fcl. I have worked on make more robust the application; suggest some features; discovering and solving some defects; provide an automatic unit test framework. By definition “FLUTE is a protocol for the unidirectional delivery of files over the Internet, which is particularly suited to multicast networks. The specification builds on Asynchronous Layered Coding (ALC), the base protocol designed for massively scalable multicast distribution.”