Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Optimal Manufacturing Enter: ACCEL basics running a script Time in ACCEL the { … } operator Examples Modeling manufacturing Implementation of a functional.

Similar presentations


Presentation on theme: "1 Optimal Manufacturing Enter: ACCEL basics running a script Time in ACCEL the { … } operator Examples Modeling manufacturing Implementation of a functional."— Presentation transcript:

1 1 Optimal Manufacturing Enter: ACCEL basics running a script Time in ACCEL the { … } operator Examples Modeling manufacturing Implementation of a functional model ACCEL - basics

2 2 intro and PR line-by-line, navigate a script assistance enter a script as text numerical analysis optimization larger view on simulation output Optimal Manufacturing Implementation of a functional model ACCEL - basics

3 3 p=5 q=slider(10,0,20) r=p+q Example of a script: Every line introduces a quantity Quantities can be constants (p) Quantities can be functions r = f(p,q) Quantities can be user-entered (q) paste into IO/edit box click ‘run’ Optimal Manufacturing Implementation of a functional model ACCEL - basics

4 4 If something STRANGE happens: don't panic goto IO/edit ctrl-A (select all) ctrl-C (copy all) ctrl-V into text editor to save your script reload ACCEL goto IO/edit ctrl-V to load script into ACCEL retry image: http://partlycloudyjuly.wordpress.com/2011/02/25/look-both-ways/ Optimal Manufacturing Implementation of a functional model ACCEL - basics

5 5 s=slider(10,0,20) // this is a slider r=p+q // this is an expression p=5 // this is a constant q=s+t // this is an expression t=pow(s,3) // this is a standard // function Example of a script with comment: to see values: click ‘show/hide values’ to see dependencies: click on ‘pauze’, next click on any quantity Optimal Manufacturing Implementation of a functional model ACCEL - basics

6 6 s=slider(10,0,100) z=plot([gr1,gr2]) gr1=[str,[s]] gr2=[str,[s % 10]] str='x:{mode:intp},y:{mode:shift,ref:1}' Example of a script with visual output: plot([graph 1,graph 2,…, graph n ]) plots n graphs graph i = [format,data] format = string, e.g. ' x:{mode:intp},y:{mode:shift,ref:1}' data = one or more quantities Black Magic for now … Optimal Manufacturing Implementation of a functional model ACCEL - basics

7 7 Why ACCEL? compare to MS Excel, not to BASIC, C++, Matlab, … low threshold for non-programmers follows to-do-list approach from LecturesLectures built-in features Pareto Genetic Optimization Sensitivity Analysis with Condition Numbers.. why NOT ACCEL? Optimal Manufacturing Implementation of a functional model ACCEL - basics

8 8 all agregation by vectors vectors aggregate arbitrary quantities e.g.: v = [1, 2, 3]; v[1] : 2 e.g.: v = [‘x’:1, ‘y’:2, ‘z’:3]; v[’y’] : 2 (v.y : 2) e.g.: v = [1, [10, 20], 3]; v[0] : 1 v[1] : [10,20] v[1][1] : 20 v[0][1] :undefined … but ACCEL tries not to disappoint its users… but ACCEL tries not to disappoint its users Optimal Manufacturing Implementation of a functional model ACCEL - basics

9 9 … but ACCEL tries not to disappoint its users… but ACCEL tries not to disappoint its users index1=slider(0,0,10) index2=slider(0,0,10) printB=b printC=c printD=d a=[1,[10,20],3] b=a[index1] c=b[index2] d=a[index1][index2] Optimal Manufacturing Implementation of a functional model ACCEL - basics

10 10 netherlands=[…,'provinces':p, …] p=[gr,fr,dr,ov,gl,ut,nh,zh,zl,nb,li] gr=['cap':'groningen', 'pop':582161,'area':2960.03] fr=['cap':'leeuwarden','pop':647239,'area':5748.74] dr=['cap':'assen','pop': 489912, 'area':2680.37] ov=['cap':'zwolle','pop':1138571, 'area':3420.86] gl=['cap':'arnhem','pop':2013903, 'area':5136.51] ut=['cap':'utrecht','pop':1243161, 'area':1449.12] nh=['cap':'haarlem','pop':2719764, 'area':4091.76] zh=['cap':'den haag','pop':3560205, 'area':3418.50] zl=['cap':'middelburg','pop':381202, 'area':2933.89] nb=['cap':'den bosch','pop':2470184, 'area':5081.76] li=['cap':'maastricht','pop':1121483, 'area':2209.22] Optimal Manufacturing Implementation of a functional model ACCEL - basics

11 11 netherlands=[…, 'provinces':p, …] p=[gr,fr,dr,ov,gl,ut,nh,zh,zl,nb,li] gr=['cap':'groningen', 'pop':582161,'area':2960.03] …. prov0=p[0] prov1= … prov2= … pop0=prov0.pop pop1= … pop2= … totPop=pop0 + pop1 + … what is the exact population?  sum over provinces image: http://www.dontpaniconline.com/magazine/radar/a-boring-conference Optimal Manufacturing Implementation of a functional model ACCEL - basics

12 12 netherlands=[…, 'provinces':p, …] p=[gr,fr,dr,ov,gl,ut,nh,zh,zl,nb,li] gr=['cap':'groningen', 'pop':582161,'area':2960.03] …. Alternative: quantified expressions totPop = #(dummy, seq, term, operation) dummy: a quantity that assumes subsequent values from sec sec: a set of values. E.g., vSequence(0,11) = [0,1,2,3,4,5,6,7,8,9,10] term: an expression,perhaps depending on dummy operation: what to do with the values of term Optimal Manufacturing Implementation of a functional model ACCEL - basics

13 13 netherlands=[…, 'provinces':p, …] p=[gr,fr,dr,ov,gl,ut,nh,zh,zl,nb,li] gr=['cap':'groningen', 'pop':582161,'area':2960.03] …. Alternative: quantified expressions totPop = #(dummy, seq, term, operation) totPop = #(i, [1,2,3], i, add)  totPop = 6 t = [3,4,5,6,7] totPop = #(i, [1,2,3], t [i], add)  totPop = t [1] + t [2] + t [3] = 4 + 5 + 6 = 15 u = [[1,2],[3,4],[5,6]] totPop = #(i, [0,1,2], u[i][1], add)  totPop = ([1,2])[1] + ([3,4])[1] + ([5,6])[1] = 2 + 4 + 6 = 12 Optimal Manufacturing Implementation of a functional model ACCEL - basics

14 14 netherlands=[…, 'provinces':p, …] p=[gr,fr,dr,ov,gl,ut,nh,zh,zl,nb,li] gr=['cap':'groningen', 'pop':582161,'area':2960.03] …. Alternative: quantified expressions totPop = #(dummy, seq, term, operation) totPop = #(i, vSequence(0,11), p [i]. pop, add) maxPop = #(i, vSequence(0,11), p [i]. pop, max) minArea = #(i, vSequence(0,11), p [i].area, min) … but suppose we need the most spacious province? Optimal Manufacturing Implementation of a functional model ACCEL - basics

15 15 netherlands=[…, 'provinces':p, …] p=[gr,fr,dr,ov,gl,ut,nh,zh,zl,nb,li] gr=['cap':'groningen', 'pop':582161,'area':2960.03] …. http://www.panoramio.com/photo/12605032 spaciousness = area / population Optimal Manufacturing Implementation of a functional model ACCEL - basics

16 16 netherlands=[…, 'provinces':p, …] p=[gr,fr,dr,ov,gl,ut,nh,zh,zl,nb,li] gr=['cap':'groningen', 'pop':582161,'area':2960.03] …. maxSpaciousness = #(i, vSequence(0,11), spaciousness(i), max) … but spaciousness is not a single quantity: depends on i, so takes different values during computation. Quantities that depend on other quantities:user defined functions. spaciousness(i) = p[i]. area / p[i]. pop Notice: i takes various values during the compuation; is not a quantity. Instead i is called a dummy. Optimal Manufacturing Implementation of a functional model ACCEL - basics

17 17 netherlands=[…, 'provinces':p, …] p=[gr,fr,dr,ov,gl,ut,nh,zh,zl,nb,li] gr=['cap':'groningen', 'pop':582161,'area':2960.03] …. maxSpaciousness=#(i,vSequence(0,11),spaciousness(i),max) spaciousness(i)=p[i].area/p[i].pop p=[Pgr,Pfr,Pdr,Pov,Pgl,Put,Pnh,Pzh,Pzl,Pnb,Pli] Pgr=['cap':'groningen','pop':582161,'area':2960.03]... Pli=['cap':'maastricht','pop':1121483,'area':2209.22]  so the most spacious province offers 8900 m 2 /person ! … But which province is that? Optimal Manufacturing Implementation of a functional model ACCEL - basics

18 18 netherlands=[…, 'provinces':p, …] p=[gr,fr,dr,ov,gl,ut,nh,zh,zl,nb,li] gr=['cap':'groningen', 'pop':582161,'area':2960.03] …. As follows: maxSpaciousness=#(i,vSequence(0,11),spaciousness(i),max) spaciousness(i)=p[i]. area / p[i]. pop mostSpacious=#(i,vSequence(0,11),if(spaciousness(i)==maxSpaciousness,i,0),max) capitalOfMostSpacious=p[mostSpacious]. cap  curious for result? Try yourself! Optimal Manufacturing Implementation of a functional model ACCEL - basics

19 19 idea: expression that is evaluated more than once in a computation:  user-defined functions can be used whenever quantities are used can have arbitrary arguments (one or more) … with arbitrary names (no name clashes) can return whatever you want, e.g. myFunc(a,b) = ['x':a,'y':b] p=myFunc(3,4) gives result p=['x':3,'y':4] p=myFunc(3,4)['x'] and myFunc(3,4).x both give result p=3 use to organize your thinking use to keep script readible use to shorten script use to keep formal and conceptual models similar Optimal Manufacturing Implementation of a functional model ACCEL - basics

20 20 Time proceeds via recursive functions: Q current = f (Q prev, P prev ) Simplest example: time current = time prev + 1 Start conditions: ACCEL initializes all quantities to 0 Optimal Manufacturing Implementation of a functional model Dynamic Behaviour

21 21 p=t t=t{1}+1 ACCEL uses {1} to access previous value ACCEL uses {n} to access n-th previous value, n>0 ACCEL initializes after modification in script Optimal Manufacturing Implementation of a functional model Dynamic Behaviour

22 22 p=k k=if(t>0,k{1}+5,0) t=t{1}+1 ACCEL can be forced to re-initialize after nr steps: Optimal Manufacturing Implementation of a functional model Dynamic Behaviour

23 23 z=plot([gr1,gr2]) gr1=[str1,[s]] gr2=[str2,[50+s-s{1}]] s=50+25*sin(t/10) str1= 'width:{value:10},col_r:{value:255},x:{mode:intp},y:{mode:shift,ref:1}' str2= 'width:{value:10},col_b:{value:255},x:{mode:intp},y:{mode:shift,ref:1}' t=t{1}+1 Implement first derivative image: http://www.treklens.com/gallery/photo593123.htm Optimal Manufacturing Implementation of a functional model Dynamic Behaviour

24 24 z=plot([gr1,gr2]) gr1=[if(rate<0,str1,str2),[50+10*rate]] gr2=[str3,[50+supply]] rate=slider(0,-0.5,0.5) supply=supply{1}+rate str1=' width:{value:10},col_r:{value:255},x:{mode:intp},y:{mode:shift,ref:1} ' str2= 'width:{value:10},col_g:{value:255},x:{mode:intp},y:{mode:shift,ref:1} ' str3=' width:{value:10},col_b:{value:255},x:{mode:intp},y:{mode:shift,ref:1} ' Implement integral image: http://www.themarketingexpert.net/2011/12/leaky-bucket.html Optimal Manufacturing Implementation of a functional model Dynamic Behaviour

25 25 z=plot([gr1,gr2]) gr1=[str1,[s]] gr2=[str2,[ds]] s=slider(50,0,100) ds=(1-damp)*s+damp*ds{1} damp=slider(0.5,0.01,0.99) str1= 'width:{value:10},col_r:{value:255},x:{mode:intp},y:{mode:shift,ref:1}' str2= 'width:{value:10},col_b:{value:255},x:{mode:intp},y:{mode:shift,ref:1}' Implement damping image: http://www.acecontrols.co.uk/product-range Optimal Manufacturing Implementation of a functional model Dynamic Behaviour

26 26 z=plot([gr1,gr2]) gr1=[str1,[s]] gr2=[str2,[ds]] s=slider(50,0,100) ds=s{delay} delay=slider(1,1,100) str1= 'width:{value:10},col_r:{value:255},x:{mode:intp},y:{mode:shift,ref:1}' str2= 'width:{value:10},col_b:{value:255},x:{mode:intp},y:{mode:shift,ref:1}' Implement delay image: http://www.rainbowresource.com/prodlist.php?subject=20&category=8753 Optimal Manufacturing Implementation of a functional model Dynamic Behaviour

27 27 profit=income ; week demand=[[0,0],[75,20],[95,30],[60,45],[90,30]] nrWeeks=5 prod1=['SP':25.0] prod2=['SP':35.0] income=income{1}+#(i,[0,1],thisWeekDemand[i]*prod[i].SP,add) prod=[prod1,prod2] thisWeekDemand=#(i,[0,1],if(week<=nrWeeks,demand[week- 1][i],0),vAppend) week=week{1}+1 Optimal Manufacturing Implementation of a functional model Modeling Manufacturing

28 28 profit=income deltaWeek=1; week demand=[[0,0],[75,20],[95,30],[60,45],[90,30]];[[unit/week,un it/week],[unit/week,unit/week],[unit/week,unit/week],[unit/w eek,unit/week],[unit/week,unit/week]] nrWeeks=5; week prod1=['SP':25.0]; [SP:dollar/unit] prod2=['SP':35.0]; [SP:dollar/unit] zeroUnits=0; unit income=income{1}+#(i,[0,1],thisWeekDemand[i]*prod[i].SP,add) prod=[prod1,prod2] thisWeekDemand=#(i,[0,1],if(week<=nrWeeks,demand[week- deltaWeek][i],zeroUnits),vAppend) zeroUnits=0; unit week=week{1}+deltaWeek Optimal Manufacturing - dimensions Optimal Manufacturing Implementation of a functional model Modeling Manufacturing

29 29 profit=income-expenses demand=[[0,0],[75,20],[95,30],[60,45],[90,30]] nrWeeks=5 prod1=['PC':9.0,'SP':25.0] prod2=['PC':14.0,'SP':35.0] expenses=productionCosts income=income{1}+#(i,[0,1],thisWeekDemand[i]*prod[i].SP,add) prod=[prod1,prod2] thisWeekDemand=#(i,[0,1],if(week<=nrWeeks,demand[week- 1][i],0),vAppend) productionCosts=productionCosts{1}+#(i,[0,1],prod[i].PC*thisW eekkDemand[i],add) week=week{1}+1 Optimal Manufacturing – account for production costs Optimal Manufacturing Implementation of a functional model Modeling Manufacturing

30 30 choice0=slider(0,0,1) + 4 more sliders xpp0=slider(17,0,20) + 4 more sliders p1=paretoMax(paretoHor(profit)) p2=paretoMin(paretoVer(inv[0]+inv[1])) demand=[[0,0],[75,20],[95,30],[60,45],[90,30]] nrHpW=80 nrWeeks=5 prod1=['ST':6.0,'SC':250.0,'PT':0.5,'PC':9.0,'IC':3.0,'FC':15.0,'SP':25.0] prod2=['ST':11.0,'SC':400.0,'PT':0.75,'PC':14.0,'IC':3.0,'FC':20.0,'SP':35.0] choice=[choice0,choice1,choice2,choice3,choice4] expenses=setUpCosts+productionCosts+inventoryCosts+penaltyForUnsatisfiedDemand income=income{1}+#(i,[0,1],thisWeekSold[i]*prod[i].SP,add) thisWeekMade=#(i,[0,1],if(i==thisWeekChoice,thisWeekXpa,0),vAppend) inv=if(week>1,inv{1}-thisWeekSold+thisWeekMade,thisWeekMade) inventoryCosts=inventoryCosts{1}+#(i,[0,1],prod[i].IC*inv[i],add) penaltyForUnsatisfiedDemand=penaltyForUnsatisfiedDemand{1}+#(i,[0,1],prod[i].FC*min(0,thisWeekDemand[i]- thisWeekSold[i]),add) prod=[prod1,prod2] productionCosts=productionCosts{1}+prod[thisWeekChoice].PC*thisWeekXpa profit=income-expenses setUpCosts=setUpCosts{1}+if(week<nrWeeks,prod[thisWeekChoice].SC,0) thisWeekChoice=if(week<nrWeeks,choice[week-1],0) thisWeekDemand=#(i,[0,1],if(week<=nrWeeks,demand[week-1][i],0),vAppend) thisWeekPlanned=if(week<nrWeeks,xppU[week-1],0) thisWeekSold=if(week>1,#(i,[0,1],min(thisWeekDemand[i],inv{1}[i]),vAppend),[0,0]) thisWeekXpa=if(week<nrWeeks,(min((nrHpW-prod[thisWeekChoice].ST)/prod[thisWeekChoice].PT,thisWeekPlanned)),0) week=week{1}+1 xppU=scaleFactor*[xpp0,xpp1,xpp2,xpp3,xpp4] scaleFactor=10 Optimal Manufacturing – account for … much more Optimal Manufacturing Implementation of a functional model Modeling Manufacturing

31 31 choice0=slider(0,0,1) + 4 more sliders xpp0=slider(17,0,20) + 4 more sliders p1=paretoMax(paretoHor(profit)) p2=paretoMin(paretoVer(inv[0]+inv[1])) demand=[[0,0],[75,20],[95,30],[60,45],[90,30]] nrHpW=80 nrWeeks=5 prod1=['ST':6.0,'SC':250.0,'PT':0.5,'PC':9.0,'IC':3.0,'FC':15.0,'SP':25.0] prod2=['ST':11.0,'SC':400.0,'PT':0.75,'PC':14.0,'IC':3.0,'FC':20.0,'SP':35.0] choice=[choice0,choice1,choice2,choice3,choice4] expenses=setUpCosts+productionCosts+inventoryCosts+penaltyForUnsatisfiedDemand income=income{1}+#(i,[0,1],thisWeekSold[i]*prod[i].SP,add) thisWeekMade=#(i,[0,1],if(i==thisWeekChoice,thisWeekXpa,0),vAppend) inv=if(week>1,inv{1}-thisWeekSold+thisWeekMade,thisWeekMade) inventoryCosts=inventoryCosts{1}+#(i,[0,1],prod[i].IC*inv[i],add) penaltyForUnsatisfiedDemand=penaltyForUnsatisfiedDemand{1}+#(i,[0,1],prod[i].FC*min(0,thisWeekDemand[i]- thisWeekSold[i]),add) prod=[prod1,prod2] productionCosts=productionCosts{1}+prod[thisWeekChoice].PC*thisWeekXpa profit=income-expenses setUpCosts=setUpCosts{1}+if(week<nrWeeks,prod[thisWeekChoice].SC,0) thisWeekChoice=if(week<nrWeeks,choice[week-1],0) thisWeekDemand=#(i,[0,1],if(week<=nrWeeks,demand[week-1][i],0),vAppend) thisWeekPlanned=if(week<nrWeeks,xppU[week-1],0) thisWeekSold=if(week>1,#(i,[0,1],min(thisWeekDemand[i],inv{1}[i]),vAppend),[0,0]) thisWeekXpa=if(week<nrWeeks,(min((nrHpW-prod[thisWeekChoice].ST)/prod[thisWeekChoice].PT,thisWeekPlanned)),0) week=week{1}+1 xppU=scaleFactor*[xpp0,xpp1,xpp2,xpp3,xpp4] scaleFactor=10 Optimal Manufacturing – production takes time Optimal Manufacturing Implementation of a functional model Modeling Manufacturing

32 32 choice0=slider(0,0,1) + 4 more sliders xpp0=slider(17,0,20) + 4 more sliders p1=paretoMax(paretoHor(profit)) p2=paretoMin(paretoVer(inv[0]+inv[1])) demand=[[0,0],[75,20],[95,30],[60,45],[90,30]] nrHpW=80 nrWeeks=5 prod1=['ST':6.0,'SC':250.0,'PT':0.5,'PC':9.0,'IC':3.0,'FC':15.0,'SP':25.0] prod2=['ST':11.0,'SC':400.0,'PT':0.75,'PC':14.0,'IC':3.0,'FC':20.0,'SP':35.0] choice=[choice0,choice1,choice2,choice3,choice4] expenses=setUpCosts+productionCosts+inventoryCosts+penaltyForUnsatisfiedDemand income=income{1}+#(i,[0,1],thisWeekSold[i]*prod[i].SP,add) thisWeekMade=#(i,[0,1],if(i==thisWeekChoice,thisWeekXpa,0),vAppend) inv=if(week>1,inv{1}-thisWeekSold+thisWeekMade,thisWeekMade) inventoryCosts=inventoryCosts{1}+#(i,[0,1],prod[i].IC*inv[i],add) penaltyForUnsatisfiedDemand=penaltyForUnsatisfiedDemand{1}+#(i,[0,1],prod[i].FC*min(0,thisWeekDemand[i]- thisWeekSold[i]),add) prod=[prod1,prod2] productionCosts=productionCosts{1}+prod[thisWeekChoice].PC*thisWeekXpa profit=income-expenses setUpCosts=setUpCosts{1}+if(week<nrWeeks,prod[thisWeekChoice].SC,0) thisWeekChoice=if(week<nrWeeks,choice[week-1],0) thisWeekDemand=#(i,[0,1],if(week<=nrWeeks,demand[week-1][i],0),vAppend) thisWeekPlanned=if(week<nrWeeks,xppU[week-1],0) thisWeekSold=if(week>1,#(i,[0,1],min(thisWeekDemand[i],inv{1}[i]),vAppend),[0,0]) thisWeekXpa=if(week<nrWeeks,(min((nrHpW-prod[thisWeekChoice].ST)/prod[thisWeekChoice].PT,thisWeekPlanned)),0) week=week{1}+1 xppU=scaleFactor*[xpp0,xpp1,xpp2,xpp3,xpp4] scaleFactor=10 Optimal Manufacturing – … therefore you must plan Optimal Manufacturing Implementation of a functional model Modeling Manufacturing

33 33 choice0=slider(0,0,1) + 4 more sliders xpp0=slider(17,0,20) + 4 more sliders p1=paretoMax(paretoHor(profit)) p2=paretoMin(paretoVer(inv[0]+inv[1])) demand=[[0,0],[75,20],[95,30],[60,45],[90,30]] nrHpW=80 nrWeeks=5 prod1=['ST':6.0,'SC':250.0,'PT':0.5,'PC':9.0,'IC':3.0,'FC':15.0,'SP':25.0] prod2=['ST':11.0,'SC':400.0,'PT':0.75,'PC':14.0,'IC':3.0,'FC':20.0,'SP':35.0] choice=[choice0,choice1,choice2,choice3,choice4] expenses=setUpCosts+productionCosts+inventoryCosts+penaltyForUnsatisfiedDemand income=income{1}+#(i,[0,1],thisWeekSold[i]*prod[i].SP,add) thisWeekMade=#(i,[0,1],if(i==thisWeekChoice,thisWeekXpa,0),vAppend) inv=if(week>1,inv{1}-thisWeekSold+thisWeekMade,thisWeekMade) inventoryCosts=inventoryCosts{1}+#(i,[0,1],prod[i].IC*inv[i],add) penaltyForUnsatisfiedDemand=penaltyForUnsatisfiedDemand{1}+#(i,[0,1],prod[i].FC*min(0,thisWeekDemand[i]- thisWeekSold[i]),add) prod=[prod1,prod2] productionCosts=productionCosts{1}+prod[thisWeekChoice].PC*thisWeekXpa profit=income-expenses setUpCosts=setUpCosts{1}+if(week<nrWeeks,prod[thisWeekChoice].SC,0) thisWeekChoice=if(week<nrWeeks,choice[week-1],0) thisWeekDemand=#(i,[0,1],if(week<=nrWeeks,demand[week-1][i],0),vAppend) thisWeekPlanned=if(week<nrWeeks,xppU[week-1],0) thisWeekSold=if(week>1,#(i,[0,1],min(thisWeekDemand[i],inv{1}[i]),vAppend),[0,0]) thisWeekXpa=if(week<nrWeeks,(min((nrHpW-prod[thisWeekChoice].ST)/prod[thisWeekChoice].PT,thisWeekPlanned)),0) week=week{1}+1 xppU=scaleFactor*[xpp0,xpp1,xpp2,xpp3,xpp4] scaleFactor=10 Optimal Manufacturing – … you earn by what you sell Optimal Manufacturing Implementation of a functional model Modeling Manufacturing

34 34 choice0=slider(0,0,1) + 4 more sliders xpp0=slider(17,0,20) + 4 more sliders p1=paretoMax(paretoHor(profit)) p2=paretoMin(paretoVer(inv[0]+inv[1])) demand=[[0,0],[75,20],[95,30],[60,45],[90,30]] nrHpW=80 nrWeeks=5 prod1=['ST':6.0,'SC':250.0,'PT':0.5,'PC':9.0,'IC':3.0,'FC':15.0,'SP':25.0] prod2=['ST':11.0,'SC':400.0,'PT':0.75,'PC':14.0,'IC':3.0,'FC':20.0,'SP':35.0] choice=[choice0,choice1,choice2,choice3,choice4] expenses=setUpCosts+productionCosts+inventoryCosts+penaltyForUnsatisfiedDemand income=income{1}+#(i,[0,1],thisWeekSold[i]*prod[i].SP,add) thisWeekMade=#(i,[0,1],if(i==thisWeekChoice,thisWeekXpa,0),vAppend) inv=if(week>1,inv{1}-thisWeekSold+thisWeekMade,thisWeekMade) inventoryCosts=inventoryCosts{1}+#(i,[0,1],prod[i].IC*inv[i],add) penaltyForUnsatisfiedDemand=penaltyForUnsatisfiedDemand{1}+#(i,[0,1],prod[i].FC*min(0,thisWeekDemand[i]- thisWeekSold[i]),add) prod=[prod1,prod2] productionCosts=productionCosts{1}+prod[thisWeekChoice].PC*thisWeekXpa profit=income-expenses setUpCosts=setUpCosts{1}+if(week<nrWeeks,prod[thisWeekChoice].SC,0) thisWeekChoice=if(week<nrWeeks,choice[week-1],0) thisWeekDemand=#(i,[0,1],if(week<=nrWeeks,demand[week-1][i],0),vAppend) thisWeekPlanned=if(week<nrWeeks,xppU[week-1],0) thisWeekSold=if(week>1,#(i,[0,1],min(thisWeekDemand[i],inv{1}[i]),vAppend),[0,0]) thisWeekXpa=if(week<nrWeeks,(min((nrHpW-prod[thisWeekChoice].ST)/prod[thisWeekChoice].PT,thisWeekPlanned)),0) week=week{1}+1 xppU=scaleFactor*[xpp0,xpp1,xpp2,xpp3,xpp4] scaleFactor=10 Optimal Manufacturing – … time requires a buffer (inventory) Optimal Manufacturing Implementation of a functional model Modeling Manufacturing

35 35 choice0=slider(0,0,1) + 4 more sliders xpp0=slider(17,0,20) + 4 more sliders p1=paretoMax(paretoHor(profit)) p2=paretoMin(paretoVer(inv[0]+inv[1])) demand=[[0,0],[75,20],[95,30],[60,45],[90,30]] nrHpW=80 nrWeeks=5 prod1=['ST':6.0,'SC':250.0,'PT':0.5,'PC':9.0,'IC':3.0,'FC':15.0,'SP':25.0] prod2=['ST':11.0,'SC':400.0,'PT':0.75,'PC':14.0,'IC':3.0,'FC':20.0,'SP':35.0] choice=[choice0,choice1,choice2,choice3,choice4] expenses=setUpCosts+productionCosts+inventoryCosts+penaltyForUnsatisfiedDemand income=income{1}+#(i,[0,1],thisWeekSold[i]*prod[i].SP,add) thisWeekMade=#(i,[0,1],if(i==thisWeekChoice,thisWeekXpa,0),vAppend) inv=if(week>1,inv{1}-thisWeekSold+thisWeekMade,thisWeekMade) inventoryCosts=inventoryCosts{1}+#(i,[0,1],prod[i].IC*inv[i],add) penaltyForUnsatisfiedDemand=penaltyForUnsatisfiedDemand{1}+#(i,[0,1],prod[i].FC*min(0,thisWeekDemand[i]- thisWeekSold[i]),add) prod=[prod1,prod2] productionCosts=productionCosts{1}+prod[thisWeekChoice].PC*thisWeekXpa profit=income-expenses setUpCosts=setUpCosts{1}+if(week<nrWeeks,prod[thisWeekChoice].SC,0) thisWeekChoice=if(week<nrWeeks,choice[week-1],0) thisWeekDemand=#(i,[0,1],if(week<=nrWeeks,demand[week-1][i],0),vAppend) thisWeekPlanned=if(week<nrWeeks,xppU[week-1],0) thisWeekSold=if(week>1,#(i,[0,1],min(thisWeekDemand[i],inv{1}[i]),vAppend),[0,0]) thisWeekXpa=if(week<nrWeeks,(min((nrHpW-prod[thisWeekChoice].ST)/prod[thisWeekChoice].PT,thisWeekPlanned)),0) week=week{1}+1 xppU=scaleFactor*[xpp0,xpp1,xpp2,xpp3,xpp4] scaleFactor=10 Optimal Manufacturing – … and a buffer costs money Optimal Manufacturing Implementation of a functional model Modeling Manufacturing

36 36 choice0=slider(0,0,1) + 4 more sliders xpp0=slider(17,0,20) + 4 more sliders p1=paretoMax(paretoHor(profit)) p2=paretoMin(paretoVer(inv[0]+inv[1])) demand=[[0,0],[75,20],[95,30],[60,45],[90,30]] nrHpW=80 nrWeeks=5 prod1=['ST':6.0,'SC':250.0,'PT':0.5,'PC':9.0,'IC':3.0,'FC':15.0,'SP':25.0] prod2=['ST':11.0,'SC':400.0,'PT':0.75,'PC':14.0,'IC':3.0,'FC':20.0,'SP':35.0] choice=[choice0,choice1,choice2,choice3,choice4] expenses=setUpCosts+productionCosts+inventoryCosts+penaltyForUnsatisfiedDemand income=income{1}+#(i,[0,1],thisWeekSold[i]*prod[i].SP,add) thisWeekMade=#(i,[0,1],if(i==thisWeekChoice,thisWeekXpa,0),vAppend) inv=if(week>1,inv{1}-thisWeekSold+thisWeekMade,thisWeekMade) inventoryCosts=inventoryCosts{1}+#(i,[0,1],prod[i].IC*inv[i],add) penaltyForUnsatisfiedDemand=penaltyForUnsatisfiedDemand{1}+#(i,[0,1],prod[i].FC*min(0,thisWeekDemand[i]- thisWeekSold[i]),add) prod=[prod1,prod2] productionCosts=productionCosts{1}+prod[thisWeekChoice].PC*thisWeekXpa profit=income-expenses setUpCosts=setUpCosts{1}+if(week<nrWeeks,prod[thisWeekChoice].SC,0) thisWeekChoice=if(week<nrWeeks,choice[week-1],0) thisWeekDemand=#(i,[0,1],if(week<=nrWeeks,demand[week-1][i],0),vAppend) thisWeekPlanned=if(week<nrWeeks,xppU[week-1],0) thisWeekSold=if(week>1,#(i,[0,1],min(thisWeekDemand[i],inv{1}[i]),vAppend),[0,0]) thisWeekXpa=if(week<nrWeeks,(min((nrHpW-prod[thisWeekChoice].ST)/prod[thisWeekChoice].PT,thisWeekPlanned)),0) week=week{1}+1 xppU=scaleFactor*[xpp0,xpp1,xpp2,xpp3,xpp4] scaleFactor=10 Optimal Manufacturing – … selling NO costs money Optimal Manufacturing Implementation of a functional model Modeling Manufacturing


Download ppt "1 Optimal Manufacturing Enter: ACCEL basics running a script Time in ACCEL the { … } operator Examples Modeling manufacturing Implementation of a functional."

Similar presentations


Ads by Google