+{Page}CostPerPiece ! 6 Initializations /02/09/2003 06:48:01.372 !---------------------------------------- +{Object.1} CostPerPiece.[1]WearParameters +{Trans} {nop.P}Trans:{&S.WearCoeff = 0.1; &S.WearExpon = 1.8} -{Trans} -{Object.1} CostPerPiece.[1]WearParameters !---------------------------------------- +{Object.2} CostPerPiece.[2]PiecesPerHour +{Trans} {nop.P}Trans:{#D.PiecesPerHour = @D.PiecesPerHour} -{Trans} +{SignalTarget} IF(CustomerID() <= 1)THEN {Signal.1} !Have to get WearParameters the first time around ENDIF -{SignalTarget} -{Object.2} CostPerPiece.[2]PiecesPerHour !---------------------------------------- +{Object.3} CostPerPiece.[3]MachineCostPerHour +{Trans} {nop.P}Trans:{#S.MachineCostPerHour = &S.WearCoeff * #D.PiecesPerHour ** &S.WearExpon}... @S.CostPerHour = #S.MachineCostPerHour !For demonstrating merging logic WRITE(9,*)"MachineCostPerHour =",#S.MachineCostPerHour -{Trans} -{Object.3} CostPerPiece.[3]MachineCostPerHour !---------------------------------------- +{Object.4} CostPerPiece.[4]LaborCostPerHour +{Trans} &D.Temp = {cp.D}PiecesPerHour #S.LaborCostPerHour = LookUp({t.D}LaborCosts,&D.Temp,1, & logEqual=#L.Match,bigRow=#B.AnswerRow) @S.CostPerHour = #S.LaborCostPerHour !For demonstrating merging logic WRITE(9,*)"{cp.D}PiecesPerHour,#S.LaborCostPerHour",{cp.D}PiecesPerHour, & #S.LaborCostPerHour,#B.AnswerRow,#L.Match -{Trans} -{Object.4} CostPerPiece.[4]LaborCostPerHour !---------------------------------------- +{Object.5} CostPerPiece.[5]CostPerPiece INTEGER:: intIndx,intCol INTEGER(KIND=big),SAVE:: bigCustomer LOGICAL:: logBranch +{Merging} !----- IF(MergeInitFlag())THEN #S.CostPerHour = @S.CostPerHour WRITE(9,*)"Merging initialization logic: CostPerHour sum=",#S.CostPerHour ELSE #S.CostPerHour = #S.CostPerHour + @S.CostPerHour WRITE(9,*)"Merging logic: #S.CostPerHour=",#S.CostPerHour IF(LastMergeOut()) WRITE(9,*)"Final merging logic: Cost per piece=", & #S.CostPerHour / #D.PiecesPerHour ENDIF !----- -{Merging} +{Trans} {nop.P}Trans:{&D.CostPerPiece = (#S.MachineCostPerHour + #S.LaborCostPerHour) / #D.PiecesPerHour}... !----- WRITE(9,*)"PiecesPerHour =",#D.PiecesPerHour WRITE(9,*)"MachineCostPerHour =",#S.MachineCostPerHour WRITE(9,*)"LaborCostPerHour =",#S.LaborCostPerHour WRITE(9,*)"CostPerPiece =",&D.CostPerPiece !----- CALL OptimizationResponse(#D.PiecesPerHour,&D.CostPerPiece, & "Pieces per hour, cost per piece:") !----- IF(&L.CurveBuild)THEN !Write result (x-y pair) to user-defined array strResults bigCustomer = CustomerID() WRITE(strResults(bigCustomer,1),*)#D.PiecesPerHour !Row=bigCustomer; Col=1 WRITE(strResults(bigCustomer,2),*)&D.CostPerPiece !Row=bigCustomer; Col=2 ENDIF !----- @D.PiecesPerHour = #D.PiecesPerHour !----- -{Trans} +{SignalTarget} !----- logBranch = &L.CurveBuild .AND. @D.PiecesPerHour < &B.PiecesLim !----- !This code will execute even if logBranch above evaluates to False WRITE(9,*)"@D.PiecesPerHour < &B.PiecesLim,logBranch:", & @D.PiecesPerHour,&B.PiecesLim,logBranch @D.DepartureTime = Time() !----- IF(logBranch)THEN !Looping back to [2] @D.PiecesPerHour = @D.PiecesPerHour + &B.PiecesIncrement !Demonstrate call to procedure in ADD file as well as > 0 signal duration $D.SignalDuration = dblfSignalDelay(bigCustomer) !Function in ADD file WRITE(9,*)"Duration of signal traversal:",$D.SignalDuration {Signal.2} ELSE IF(&L.CurveBuild)THEN !Not looping back to [2], but Curve-build mode. WRITE(9,*)REPEAT("-",30) !Write to trace file all curve points (x-y pairs) stored in array strResults DO intIndx = 0, bigCustomer !Write row intIndx, columns 1 and 2 of strResults to trace file NMOD.TXT WRITE(9,*)(strResults(intIndx,intCol),intCol=1,2) END DO WRITE(9,*)REPEAT("-",30) ENDIF !----- -{SignalTarget} -{Object.5} CostPerPiece.[5]CostPerPiece !---------------------------------------- +{Object.6} CostPerPiece.[6]Initializations +{Trans} !----- CALL OpenTableFile(21,WithPath("PrimerSigTables.HTM")) CALL GetTable(21,{Table.D}CostPerPieceInputs) CALL GetTable(21,{Table.D}LaborCosts) CLOSE(21) !----- @D.PiecesPerHour = {t.D}CostPerPieceInputs(1,1) &B.PiecesIncrement = {t.D}CostPerPieceInputs(2,1) &B.PiecesLim = {t.D}CostPerPieceInputs(3,1) !----- CALL OptimizationStimulus(@D.PiecesPerHour) !----- &L.CurveBuild = & NodeType( {Object.2} ) == tnyArrival WRITE(9,*)"&L.CurveBuild",&L.CurveBuild !----- WRITE(strResults(0,1),'(A)')"Pieces/hour" WRITE(strResults(0,2),'(A)')"Cost/piece" !----- @D.DepartureTime = 0. !----- -{Trans} +{SignalTarget} {nop.P}SignalTarg:{{Signal.2}} -{SignalTarget} -{Object.6} CostPerPiece.[6]Initializations !---------------------------------------- +{Object.8} CostPerPiece.[8]PiecesPerHour-->>|MachineCostPerHour +{SignalTarget} IF(CustomerID() > 1)THEN {Signal.9} ENDIF -{SignalTarget} -{Object.8} CostPerPiece.[8]PiecesPerHour-->>|MachineCostPerHour -{Page}CostPerPiece ////////////////////////////////////////// +{Page}PiecesPerHour ! 3 DummyNode /02/09/2003 06:48:01.372 !---------------------------------------- +{Object.1} PiecesPerHour.[1]Product A +{Trans} {nop.P}Trans:{#B.ProdApieces = 10} -{Trans} -{Object.1} PiecesPerHour.[1]Product A !---------------------------------------- +{Object.2} PiecesPerHour.[2]Product B +{Trans} {nop.P}Trans:{#B.ProdBpieces = 20} -{Trans} -{Object.2} PiecesPerHour.[2]Product B !---------------------------------------- +{Object.4} PiecesPerHour.[4]PiecesPerHour +{Trans} {nop.P}Trans:{@D.PiecesPerHour = #B.ProdApieces + #B.ProdBpieces} -{Trans} -{Object.4} PiecesPerHour.[4]PiecesPerHour -{Page}PiecesPerHour //////////////////////////////////////////