Optimization Technologies Center OPTEX (OPTEX Ltd.)

Vavilov str., 40 Moscow,117967 Russia,
phone: +7 (095) 135-61-98 fax: +7 (095) 135-61-59

e-mail: pma@ccas.ru

Established: 1995 . Director: Ph.D Potapov Michael Andreevich.


Research and development in the field of applied optimization, data analysis and decision making.
Application development in CAD/CAM/CAE etc.
We develop, markets and support software systems:

SOLVEX Fortran Libraries - numerical algorithms package which includes routines
for unconstrained, nonlinear constrained, discrete, global minimization and multicriterial optimization.

SOLVEX for WINDOWS - open system for interactive solution of nonlinear ptimization problems.

Examples of application experience:

1. Composite analysis and optimization for metal melting.

We have the next parts of components in our problem: waste, alloys and pure elements. Each of them have his own cost value. We find the composition with minimal total cost value.

2. Metal melting plan optimization.

We solve the metal melting plan optimization for waste minimization during the process of metal pour out. This software was very effective in the case when the many various forms have been used.

3. Cutting metal problem.

It is very important problem in various industrial applications. We developed the applied software system for rectangular forms. The basic algorithms can be used for another forms of cutting plane problems.

4. Silicon compiler optimization tool for VLSI problems.

5. Staff Planning System. It based on software for scheduling problems.

6. Decision support software for EIS (Executive information system).

Proposals for cooperation:

1. Software Distribution in yours and other country
2. License Software Development
3. Joint Software Development in applied fields
4. Joint research projects in applied fields

Example of application for Staff Planning System.

Information about scheduling systems.
A company consists of "organizational units (ou)" (or departments)
An OU consists of 1..n Sub-OUs: the OU "Russian Academy of Sciences" has the Sub-OU "Computing Center of RAS"
These OUs build up a tree:
RAS has 3 members:

-> Computing

-> Biology

-> Chemistry

An OU has 1 to n jobs:
Computing has 3 jobs: head of department, developer und Customerservice.
Each job has 1 to n qualifications (connected with logical AND or OR), that means that to work on a certain job, a staff member must have the required qualification
Each OU has certain business hours (or opening times, e.g. 08:00 a.m. up to 20:00 pm or 0:00 am up to 24:00 p.m. ! )
Now the staffing requirements are on a per 15-minutes, per OU/job basis.
The time rooster may vary, but the smallest possible unit is 15 minutes.
For each OU/Job Combination, day and 15-minute-unit three values are defined: minimum, best and maximum staff requirement,
each as a floating number with 2 decimal places.

Shifts are defined in one of the following ways:

1. fixed shifts: starting time, ending time, up to 3 breaks at certain times
e.g.: 08:00 a.m. up to 17:00 p.m., one break at 12:30 p.m. to 13:00 p.m.

2. variable shifts: starting time min/best/max, ending time min/best/max, up to 3 breaks
e.g: starting time: 07:00 / 08:00 / 09:00 -> he should start at 8:00,but if necessary, he may start at any time between 7 and 9 a.m. (rooster:15 min)same with ending time

3. availibility: staff member may work between start/end time, must work min/best/max hours
e.g.: may work between 08:00 a.m. and 17:00 p.m., IF he comes to work, he must work at least 4 hours, should work 6 hours and may work 10 hours max.

4. variable shifts 2: fixed duration, rooster for start (shift may lay anywhere within the business hours, min. rooster 15 Min.)
e.g.: a 6-hour shift: starting times each 30 Minutes possible.


A. The first optimization problem we face starts here:

We need a program which creates a set of shifts of type variable 2 (case 4) which best satisfy the staffing requirements.For example: there are 3 shift types: a 4-hour shift, a 6-hour shift and an 8-hour shift, each of the shifts may start on a 30-Minutes rooster.The user may parameterize the optimization by telling the software how much percent of each shift he wants (this may affect the solution):
here for example

4-hour 50% 6-hour 25% 8-hour 25%
The optimization should then create the starting times for shifts.
A company has a pool of staff members.
The staff members have different properties which must be considered as constraints when creating schedules.
Staff members may work in 1 to n OUs and they may have 1 to n qualifications (see also job definition).
They have also the following list of attributes:
a) the minimum, average and maximum working hours per week and month
c) time account: the plus/minus hours of a staff member at a given time:
e.g. 2/1/97 +10,75 means that up to the 2/1/97 the staff member has worked 10,75 hrs more than he should (see a))
d) absence times
e) how often he may work on saturdays/sundays

B. Now comes the second optimization problem:

Staff members should be automatically assigned to the shifts created in A,
while considering the above rules and attributes.
It must also be possible to fill up an existing schedule: if half of the schedule exists, the automation should finish the schedule without touching the manually created parts of it. But this problem can be solved by a good interface to the optimization, too.

C. The third optimization problem:

In addition to the above listed staff members attributes, shifts of types 1 to 3 are assigned for each day (e.g. 2/1/97 free, 2/2/97 night-shift, ...) The optimization should bring the staffing requirements and the staff members together creating a schedule.
Schedules are created for one week.
One OU, which has 4 Sub-OUs, each of which have 2 different jobs business hours are from 7 am until 21 pm, requirements are on a per-hour basis 30 staff members, which mainly have availability shifts (type 3) assigned all required data is held in a global memory block.