Introduction to FLEXSCHE Products

FLEXSCHE Version 20

FLEXSCHE version 20.0 was released on June 24, 2021. Version 20 is a commemorative release marking the 20th anniversary of FLEXSCHE Corporation, featuring over 215 enhancements. Here are some of the main features. (Differences between version 19.0 and version 20.0)

FLEXSCHE DataTuner

Facilitates the easy realization of improved scheduling accuracy and validity

"Creating highly accurate plans that align with reality" is one of the major challenges in production scheduling. To achieve this, it is essential to "appropriately allocate" the capacity of each process.

However, it is not always possible to grasp the capacity of all processes from the start, which can be a challenging issue in many implementation projects. Moreover, most processes have temporal "fluctuations," making it necessary to repeatedly measure to determine reasonable values.

The new product FLEXSCHE DataTuner, released alongside version 20, contributes to the creation of highly accurate and reasonable plans by accumulating sample data of operation times based on operation results daily and presenting estimated values derived from statistical processing.

Conceptual Diagram of FLEXSCHE DataTuner

Update Capacity Values Based on Estimates

After the operation of FLEXSCHE DataTuner begins, a sufficient number of sample data will accumulate over time, allowing for analysis. The relationship between the current capacity values, newly estimated capacity values, and the distribution of sample values is visualized, and the "recommendation level" of the new capacity values is also presented, enabling users to quickly and intuitively update capacity values.

DataTuner Console (Left) and DataTuner Panel (Right)
(If capacity is parameterized by skills or numerical specifications, it is analyzed in multiple dimensions)

It is common to assign a common capacity value to multiple machines considered to have the same performance, only to find significant capacity differences upon actual use. FLEXSCHE DataTuner detects this difference and visualizes and presents a division proposal, allowing for easy capacity definition division with simple operations.

Division of Capacity Value Settings

Before (Left) and After (Right) Capacity Value Division
Confirm the coexistence of resources with different capacities and divide them with just a double-click operation

By utilizing these mechanisms, it is possible to initially assign rough capacity values and gradually subdivide and detail them, lowering the barrier to building a production scheduling system.

In Conjunction with FLEXSCHE CarryOut

Statistically reasonable plans form the foundation for appropriate plan execution, but they are not sufficient on their own.

This is because the aforementioned "fluctuations" hinder manufacturing according to the plan. It is important to accept and adapt to these "fluctuations" while executing the plan, and FLEXSCHE CarryOut provides the mechanism for this. Proper operation of FLEXSCHE CarryOut naturally yields accurate result information, creating a complementary relationship that is mutually beneficial.

Provision Method of FLEXSCHE DataTuner

In addition to being sold as a standalone optional product, it is also offered as part of the cost-effective FLEXSCHE CompletePack.

Note that sample data can be accumulated regardless of whether you have a license for FLEXSCHE DataTuner.

New HTML Embedding Functionality

It is now possible to embed rich HTML content into FLEXSCHE.

Previously, it was possible to embed HTML views in FLEXSCHE as a DHTML feature, but the embedded browser did not support new features, making it impossible to create rich pages.

This time, by incorporating a new browser compatible with HTML5, it is possible to create more advanced web applications on FLEXSCHE using features realized by HTML5.

Since it is possible to access FLEXSCHE objects from web applications, you can freely build systems by accessing them to send commands or creating input forms to reflect in records.

Simple Control Panel

Simple Control Panel

The feature added using this new functionality is the Simple Control Panel.

As a web application, it accesses FLEXSCHE objects to retrieve scheduling rules and EDIF definitions and displays them on buttons. Pressing the buttons executes the respective rules or EDIF.

Since HTML code is provided, you can also add features based on it.

Scheduling/Modeling

Operation-driven Dispatching Method

Dynamic Operation Splitting by Resource Volume

Dynamic Operation Splitting by Resource Volume

It is now possible to set volume as a constraint for resources. Whether an operation fits within the volume is determined by considering the density of each item. Operations can also be automatically split to fit within the volume. For example, if the link quantity of an operation is set to mass, while the capacity of the resource is essentially limited by volume (not mass), it becomes necessary to change the limit value according to the density of the item being stored, unlike traditional capacity constraints that attempt to constrain by converting to mass.

By using volume directly as a resource constraint, the setup becomes simpler.

Enhanced Exploration by Resource Route

When exploring process constraints by resource route, it is now possible to limit route extraction to only major tasks. This improves scheduling efficiency in cases where there are many sub-resource options or constraints that chain across multiple processes.

Additionally, a "Resource Route Selection" page has been added to the method settings, making it easier to specify evaluation criteria for each route.

Specification of Planning Period Start Time

It is now possible to specify the planning period start time individually for each operation assignment. For example, you can easily set a confirmed planning period for each resource to prevent new operations from being assigned within that period.

Enhancement of Operation Results

Difference Results in Operation Result Subdivision

Difference Results in Operation Result Subdivision

It is now possible to specify information on individual fragments from the start (or resumption) to the interruption (or end) of a result operation as Operation Result Subdivision records (Type: RI).

The detailed times are also reflected in the Resource Gantt Chart. Additionally, if you specify the progress rate ("Interval Progress Rate") for each difference, the manufacturing pace for that portion is reflected in the Inventory Level Chart.

Result Quantity Backflush

Result Quantity Backflush

When specifying the result manufacturing quantity for an operation, you can now uniformly update the quantity of each consumed item in the operation according to the original manufacturing-to-consumption ratio. This is convenient when there are many items consumed in the operation, making it difficult to specify the result quantity for each one individually.

Special Key

There are now more variations in specifying various special keys. What previously required notation in a formula can now be achieved with special formats selectable from a menu.

Special Key String as Numerical Specification Key

When specifying the numerical specifications of related objects (primary resources, linked items, etc.) as special numerical specification keys for operations, there are now more variations in special key specifications. Various objects can now be referenced as numerical specification keys.

  • General: Process Code
  • General: Process Local Code
  • General: Order Item Code
  • Specification Key: Order Item Specification Comment
  • Task Key: Task Resource Code
  • Comment Key: Task Primary Resource Comment

For example,作業において「主資源の数値仕様<キー:オーダー品目コード>」to表すExpressionは、従来は

.AssignedResource.NumSpec(.Order.Item.Code)

had to be expressed as

.NumSpec('#tnsp.%oi')

but now it can be expressed as

Special Key String as Numerical Specification Key

using a special numerical specification key, and it can also be specified as a special format selectable from the key selection integrated into the GUI.

Enhance Indirect Reference with Special Skill Key

It is now possible to specify the following new skill keys.

  • Process Comment
  • Process Specification
  • Process Specification Comment

Modeling such as putting a skill pattern you want to reference in the process comment can be easily realized.

Workshop Planning

Link Workshop Area Constraints with Sub-Resources

When there are sub-areas within a workshop, it is now possible to limit the areas that can be placed according to the sub-resources of the operation. This can be applied to various cases. For example, if there is a weight limit for each sub-area, you can easily achieve this by preparing sub-resources corresponding to the sub-areas and setting the resource quantity to weight.

Resource-Driven Workshop Planning

It is now possible to plan placements in workshops using the Resource-driven Dispatching Method.

User Interface

Job Viewer

Operation Viewer (Bottom Left) and Two Job Viewers

The job view of the Operation Viewer (which graphically displays the network of operations) can now be displayed as an independent view.

When you want to display a large operation graph, the docked Operation Viewer may render it small or require scrolling, making it difficult to view. With a separate view, you can display it larger and easily use full-screen display in a multi-monitor environment.

Additionally, you can create multiple job views simultaneously, allowing you to view various operation graphs side by side.

Merge Display of Multiple Projects

Merge three projects to construct a chart

It is now possible to consolidate and display data divided into multiple projects in a single window.

By importing snapshot files output from each project into one project and using automatic row configuration rules that reference them, you can freely create a timeline chart with mixed chart rows of each data.

Add [Full Search by Record] in Various Places

Previous VersionThe "Batch Search Function" added in the previous version has been enhanced, allowing full record searches from various locations (e.g., task pop-up menu in the Resource Gantt Chart).

For example, if you search for an operation, records can be found in various places such as the Resource Gantt Chart, Order Gantt Chart, Operation Data, and Operation Viewer.

The search results are displayed in a list on a panel, allowing you to quickly jump to each location.

Renewal of Splash Window

The screen displayed when starting FLEXSCHE or checking version information has been graphically renewed, and the displayed information has been increased.

Manage Scheduling Panel with Folders

Manage Scheduling Panel with Folders

It is now possible to create folders arbitrarily on the Scheduling Panel. You can place subfolders and rules within the folders. You can freely categorize and manage scheduling rules according to their processing content and purpose.

Display Pegging Destination in Order Gantt Chart

In the Order Gantt Chart row, it is now possible to display operations of other orders connected by order pegging or operation connection. This includes further upstream of the upstream pegging destination and further downstream of the downstream pegging destination. This makes it easier to grasp the assigned dates and times of operations related to other orders.

Special Key String as Numerical Specification Key

Operations of other orders can be displayed on the same rack, on a different rack, or even specified individually.

Propagate Operation Split Downstream

When splitting a single operation, it is now possible to apply the same split process to downstream operations. It can also be applied to downstream operations connected by split operations. The same applies to merge operations, allowing downstream operations to be merged together.

Propagate Downstream with Split Operations Method

Additionally, the same functionality has been added for automatic splitting by the Split Operations Method. Although it was possible by devising two Split Operations Methods and the Mark Operations Method, it is now easier to apply splits to downstream operations.

FLEXSCHE EDIF

New Filter in EDIF Configuration Tool

In addition to the conventional table mapping filter by EDIF group, it is now possible to filter with FLEXSCHE tables and external tables associated with that table mapping. You can easily filter things like only table mappings related to processes or only those linked with specific CSVs.

New Filter in EDIF Configuration Tool

Expand Flexibility with Expressions

It is now possible to specify expressions for keyed fields in EDIF import. For example, when importing numerical specifications into a single field, the conventional method required preparing data in a predetermined format like "100/NS1;200/NS2", but now you can specify expressions to import without processing by referencing multiple fields with expressions.

Additionally, expressions can now be specified for key specifications in EDIF field separation. For example, when importing multiple numerical specifications in sequence, you can simplify the mapping definition by referencing the iteration variable in the key with an expression to import the specified number of times determined by the iteration variable.

Data to be Imported

Key Specification by Expression

FLEXSCHE WebViewer

SSL Support for Server

The FLEXSCHE WebViewer server now supports SSL. By specifying a certificate, secure communication can be achieved.

Expression

Parallel Execution of Expressions

In the automatic planning of schedules, the search process for operation assignment, which occupies a significant weight, is executed in parallel to improve performance. However, when operation times and time constraints were defined using expressions, these calculations were not executed in parallel.

By parallelizing this, scheduling time has been reduced even in cases where such master settings are used.

Sample Case

  • Number of Operations: 10,000
  • Number of Candidate Resources: 50
  • Specify expressions for manufacturing time and minimum time constraints
Parallelization Off8.0 seconds
Parallelization On6.4 seconds

Achieved a 20% speed increase

Editing Expressions

Enhancement of Expression Editing Screen

Enhancement of Expression Editing Screen

In addition to traditional comments, constants and strings are now color-coded for better visibility during editing. Also, when a function is selected and the help button is pressed, the help page for the function opens.

Multiline String Syntax (Here Document)

When you want to output a string that includes line breaks, you can now represent it as is, without concatenating the string with line break characters. Prefix the string with "@".

Detailed Error Information

When an error occurs during the testing of expressions, detailed error information is now displayed. Details of syntax errors and runtime errors are shown, and if the location of the error can be identified, you can jump to that location.

Executing Scriptlets in Expressions

While a lot can be done with traditional expressions, there are insurmountable barriers due to data protection and structural reasons. For example, access to resource table objects with complex array and tree structures is almost impossible.

By using the Script function added in version 20, scripts that fully access FLEXSCHE's COM model (only JScript) can be used within expressions. Compared to the traditional solution of "external functions," there is no need to prepare a separate script file, and it is also advantageous in terms of performance.
* "Scriptlet" means "a small script."

There are two notations for scriptlets: a "simple notation" using a single evaluation expression in JScript, and a "complete notation" that includes control structures and function definitions, returning results with a return statement.

In the following example, the simple notation returns the number of timeline elements of the context resource (which cannot be obtained with traditional expressions).

Long.Script("=_arg1.PrimaryTimeSeries.Count",$_object)

The following example uses the complete notation to check if the resource table of the context process contains a capacity value that is not proportional to the link quantity.

Bool.Script(@"
  var procRec = _arg1;
  var cBOR = procRec.CountOfBORRecs;
  for(iBOR=0;iBOR<cBOR;iBOR++) {
    var borRec = procRec.BORRec(iBOR);
    var cTasks = borRec.CountOfTasks;
    for(iTask=0;iTask<cTasks;iTask++) {
      var cUsables = borRec.CountOfUsables(iTask);
      for(iUsable=0;iUsable<cUsables;iUsable++) {
        var cUTs = borRec.CountOfUsingTimes(iTask,iUsable,SDTaskPart.SDTPartManufacture);
        for(iUT=0;iUT<cUTs;iUT++) {
          var method = borRec.UsingTimeMethod(iTask,iUsable,SDTaskPart.SDTPartManufacture,iUT);
          if(method==SDUTCMethodDuration||(method==SDUTCMethodCapacity&&
            (borRec.CapacityUnit(iTask,iUsable,SDTaskPart.SDTPartManufacture,iUT)
              &SDBCUnitPer_Mask)==SDBCUnitPer_None))
            return true;
        }
      }
    }
  } return false",$_object)

While scriptlets are powerful, they can also have effects, making them a "double-edged sword" that can potentially damage internal states. Please use them only when absolutely necessary, with a correct understanding of programming in FLEXSCHE.

S-Curve Functions

In manufacturing, nonlinear calculations are often required, such as the phenomenon where unit costs decrease with cumulative production volume, known as the "experience curve effect." As shown in the diagram, when mass production begins, efficiency is low due to unfamiliarity, but as mass production progresses, efficiency gradually increases, eventually reaching close to the theoretical upper limit.

S-Curve Functions

To reflect the above situation in production planning, several S-curve takt functions, including Math.Logistic, have been added. For example, in the case of a Logistic curve, the following takt expression

$y := Math.Logistic(x, x_0, L, k)

returns the function value of the independent variable x for a curve with parameters (x_0, L, k). The parameters (x_0, L, k) control the Logistic curve as shown on the right above.

By using the above takt function and aggregating cumulative production volume with stored variables, it should be possible to reproduce "improvement in production efficiency with increased cumulative production volume."

In addition, functions representing S-curves such as Math.Erf and Math.Tanh have been added.

List of Added Functions

The number of functions available in expressions has increased, further expanding what you can do.

Functions Added in Version 20

Basic types
Double Class <Double>.RoundToSigDigits
String class <String>.Right
Container Type
List Class <List>.Reverse_
<List>.Shuffle
<List>.Shuffle_
Object types
Record Class <Record>.ContextData
Inventory Class <Inventory>.Duplicate
<Inventory>.PeggedRecords
<Inventory>.PeggedQty
Item Class <Item>.FindProcGraphs
Operation class <Operation>.ResultSubdivisions
<Operation>.ShapeEnvelopeTransform
<Operation>.ResourceRestrictionProtected
OperationGraph class <OperationGraph>.ResourceRestrictionProtected
<OperationGraph>.ResourceRestrictionType
Order class <Order>.Duplicate
<Order>.PeggedRecords
ProcGraph Class <ProcGraph>.LinkRelations
Connection class <Connection>.Duplicate
Resource class <Resource>.SearchForTaskForward
<Resource>.SearchForTaskBackward
Result Class <Result>.Duplicate
ResultSubdivision Class <ResultSubdivision>.ProgressRate
BeforeTest class <BeforeTest>.LinkItem
AfterTest class <AfterTest>.RequiredQtyMax
<AfterTest>.CheckPlacementValidity
VirtualOperation Class <VirtualOperation>.DistanceToPreviousAssignedTime
<VirtualOperation>.DistanceToNextTime
FreeCalendar Class <FreeCalendar>.Duplicate
Relation Class <Relation>.SharedRatio
All Record Classes <全てのレコード>.MakeList
Other
Project Class <Project>.ShiftBoundaries
<Project>.ActiveTimeChart
TimeChart Class <TimeChart>.RowResources
<TimeChart>.RowItems
<TimeChart>.RowOrders
Math class Math.Logistic
Math.Softplus
Math.Tanh
Math.Erf
Math.DensityNormal
Math.DensityPoisson
Math.Factorial
Math.Nchoosek
Math.Gamma

For Developers

Reduce Frequency of Script File Reloading

The advantage of scripts is that they can be easily modified and experimented with on the spot, but there was unnecessary overhead because they were reloaded every time to reflect changes.

Therefore, we improved it to reload only when necessary by checking the last update time of the script file. This significantly speeds up cases where compact processing, like external functions, is repeatedly executed.

Other

Guide to License Setup When Opening as Evaluation Version

When starting to use FLEXSCHE as a product version, it is necessary to set up the license, but the items and locations to be installed differ depending on the type of license, which can make the procedure complicated.

If license information is not found when starting FLEXSCHE, you can choose to start as an evaluation version or set up as a product version. The setup wizard screen allows you to complete the setup smoothly by following the guidance.

Setup helper 1
Setup helper 1

Introduction to FLEXSCHE Products

PAGETOP