frePPLev2.0
open source Production PLanning
  • Home
  • Documentation
    • Getting started
    • Modeling guide
    • User guide
    • Installation guide
    • Developer guide
    • FAQ
  • C++ API

Operation solver

Fixed time operation

Operation is asked for a quantity Q at the date D
Create an operation plan
If lead time constraints are enabled and the operation plan is planned in the past

Calculate the earliest date the operation can be completed
Return a promise with quantity 0 and the next ask date computed above

If capacity constraints are enabled

Loop until no capacity overloads are found

Loop over all loadplans

Ask the resource solver to check for overloads
If a capacity constraint is found, the resource solver will move the operation plan to an earlier date or resize it.
We then restart the loop over the loadplans
If the operation plan is found to be capacity infeasible

Return a promise with quantity 0

For each consuming flowplans

Ask the buffer for the planned quantity on the requested date.
If material constraints are enabled we update Qremaining and Dupdated.

Return the accumulated promise quantity

Time-per operation

The steps are very similar to the fixed_time operations, with the difference that the calculations for the feasible quantity is more complex.

Alternate operation

Operation is asked for a quantity Q at the date D
Remaining quantity = Q
Next ask date = infinite future
Loop through all alternate sub operations

If the alternate is not effective on the ask date, skip this alternate
Create top operation plan descriptor
Call Operation->ask(Remaining quantity, D)
If some quantity could be planned along the alternate

Check for material and capacity constraints on the top operation plan
Reduce the remaining quantity
Break out of the loop if the requested quantity is completely planned
Else

If the next ask date of the alternate is less than the current minimum, update the next ask date

If the total quantity planned over all alternates is less than the requested quantity

Repeat the loop over all alternate sub operations, but evaluate only alternates whose effectivity ends before the ask date

Return the planned quantity and the next ask date

Routing operation

Operation is asked for a quantity Q at the date D
Create the top operation plan
Check the flowplans and loadplans of the top operation plan
Initialize Q2 to Q and D2 to D
For all steps of the routing
Call operation->ask(Q2,D2)

Update Q2 if planned quantity < Q2
Update D2 with the operation time

 

    • Getting started
    • Modeling guide
      • Simplified domain model
      • Detailed domain model
      • Environment variables
      • Python interpreter
      • Global parameters
      • Buffer
      • Calendar
      • Customer
      • Demand
      • Flow
      • Item
      • Load
      • Location
      • Operation
      • Suboperation
      • Operationplan
      • Problem
      • Resource
      • SetupMatrix
      • Skill
      • Resource skill
      • Solver
      • Extension modules
        • Forecast module
        • REST web service module
        • Linear programming solver module
        • OpenERP connector module
    • User guide
      • Main features
      • Supported browsers
      • Getting around
        • Logging in
        • Logging out
        • Changing password
        • Navigation
          • Menu bar
          • Jump search
          • Context menus
          • Browser bookmarks
        • Filtering data
        • Sorting data
        • Selecting time buckets
        • Exporting data
        • Importing data
        • User preferences
        • User permissions and roles
      • Screens
        • Data input
        • Supply Path / Where Used
        • Comments
        • History – Audit trail
        • Plan analysis
          • Problem report
          • Constraint report
          • Inventory report
          • Inventory detail report
          • Resource report
          • Resource Gantt report
          • Resource detail report
          • Operation report
          • Operation detail report
          • Demand report
          • Demand detail report
          • Demand Gantt report
          • Forecast report
          • Performance indicator report
        • Execute
      • Batch commands
        • manage.py (manage.exe on Windows)
        • frepple (frepple.exe on Windows)
        • freppleservice.exe (Windows only)
    • Installation guide
      • Windows installer
      • Compiling on Windows
      • Linux binary packages
      • Compiling on Linux
      • Compiling on debian-based linux
      • Compiling on Red Hat based Linux
      • Compiling from the subversion source code repository
      • Running the VMWare virtual machine
      • Other platforms
      • Configuring the user interface
      • Configuring multiple models in the user interface
      • Configuring as a Python extension module
    • FAQ
    • Developer guide
      • Code structure
      • Class diagram
      • Solver
        • Solver features
        • Planning algorithm
          • Top level loop
          • Demand solver
          • Buffer solver
          • Flow solver
          • Load solver
          • Operation solver
          • Resource solver
        • Cluster and level algorithm
      • Extension modules
      • Version control
      • Style guide
      • Portability
      • Security
      • Internationalization
      • Translating the user interface
      • Adding or customizing a report
      • Unit tests
        • buffer_procure_1
        • calendar
        • callback
        • cluster
        • constraints_combined_1
        • constraints_combined_2
        • constraints_leadtime_1
        • constraints_material_1
        • constraints_material_2
        • constraints_material_3
        • constraints_material_4
        • constraints_resource_1
        • constraints_resource_2
        • constraints_resource_3
        • constraints_resource_4
        • constraints_resource_5
        • datetime
        • deletion
        • demand_policy
        • flow_alternate_1
        • flow_alternate_2
        • flow_effective
        • forecast_1
        • forecast_2
        • forecast_3
        • forecast_4
        • forecast_5
        • forecast_6
        • jobshop
        • load_alternate
        • load_effective
        • lpsolver_1
        • multithreading
        • name
        • operation_alternate
        • operation_available
        • operation_effective
        • operation_pre_post
        • operation_routing
        • pegging
        • problems
        • python_1
        • python_2
        • python_3
        • safety_stock
        • sample_module
        • scalability_1
        • scalability_2
        • scalability_3
        • setup_1
        • setup_2
        • skill
        • xml
        • xml_remote
    • License
      • GNU Affero General Public License
      • GNU Free Documentation License
    • Third party add-ons
  • Copyright © 2010-2013 frePPLe bvba