frePPLeOpen source Production Planning
  • Home
  • Documentation
  • 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 too early
  Try resizing the operationplan to fit in the feasible time window
  If not feasible
    Log the lead time as a constraint for meeting the demand on time
    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 flow for the requested quantity on the planned date
    If the complete quantity is not feasible
        Keep track of the date with extra supply

If the operationplan is not feasible but the next feasible date is earlier than the maximum date
  Repeat from the top for the new feasible date
else if any material was not feasible
  Try resizing the operationplan to fit in a smaller time window
  If successful
    Repeat from the top with a smaller quantity
  else
    Return 0 reply
else
  Return positive reply

Time-per operation

The loop is identical to one for the fixed_time operations, since the operation class rather than the solver contains the logic to compute the duration of an operationplan.

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 the operation solver with arguments (Q2,D2)
  Update Q2 if planned quantity < Q2
  Update D2 with the operation time
    • Getting started
      • 1 – Introduction
      • 2 – Installation
      • 3 – Entering data
      • 4 – Modelling concepts
      • 5 – Your first model
      • 6 – Your first plan
    • 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
    • User guide
      • Supported browsers
      • Getting around
        • Logging in
        • Logging out
        • Changing password
        • Navigation
          • Menu bar
          • Jump search
          • Context menus
        • Filtering data
        • Sorting data
        • Selecting time buckets
        • Exporting data
        • Importing data
        • Customizing a screen
        • User preferences
        • User permissions and roles
        • Comments
        • History – Audit trail
      • Data maintenance screens
      • Supply Path / Where Used
      • Plan analysis screens
        • 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
      • Execution screen
      • Batch commands
        • frepplectl
        • frepple
        • freppleservice.exe (Windows only)
    • Installation guide
      • Windows installer
      • Compiling on Windows
      • Linux binary packages
      • Compiling on Linux
      • Compiling from the source code repository
      • Running the VMWare virtual machine
      • Other platforms
      • Configuring multiple models in the user interface
      • Configuring as a Python extension module
    • Extension modules
      • Forecast module
      • Order quoting module
      • REST web service module
      • OpenERP connector module
      • Linear programming solver module
    • Technical guide
      • Architecture
      • Source code repository
      • User interface
        • Creating an extension app
        • Translating the user interface
        • Adding or customizing a report
        • Style guide
      • Solver engine
        • Code structure
        • Class diagram
        • Planning algorithm
          • Top level loop
          • Demand solver
          • Buffer solver
          • Flow solver
          • Load solver
          • Operation solver
          • Resource solver
        • Cluster and level algorithm
        • Extension modules
        • Style guide
        • Portability
      • Security
      • 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
    • FAQ
    • License
      • GNU Affero General Public License
      • GNU Free Documentation License
    • Third party add-ons
  • Copyright © 2010-2013 frePPLe bvba