Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added a ton of files for tomorrows presentation
- Loading branch information
Johannes Hofmeister
committed
Jun 25, 2013
1 parent
68f261a
commit 71b311d
Showing
20 changed files
with
830 additions
and
0 deletions.
There are no files selected for viewing
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,170 @@ | ||
function calcFormulas():Boolean { | ||
|
||
var returnValue:Boolean = false; | ||
|
||
var x:Number; | ||
var y:Number; | ||
var x1:Number; | ||
|
||
//==================================== | ||
// Änderungen - Kosten Updaten | ||
//==================================== | ||
|
||
//Rohstoff auf Lager | ||
//kann nicht reduziert werden | ||
//g_var['RL'] = Math.max(g_var['RL'], g_oldvar['RL']); | ||
//g_var['KA'] = g_var['KA'] - (g_var['RP'] * (g_var['RL'] - g_oldvar['RL'])); | ||
g_var['RL'] = g_var['RL'] + g_var['RB']; | ||
g_var['KA'] = g_var['KA'] - (g_var['RP'] * (g_var['RB'])); | ||
|
||
//50er Maschinen | ||
if (g_var['M1'] > g_oldvar['M1']) { //Maschinen kaufen | ||
g_var['KA'] = g_var['KA'] - (10000 * (g_var['M1'] - g_oldvar['M1'])); | ||
} | ||
else if (g_var['M1'] < g_oldvar['M1']) { //Maschinen verkaufen | ||
x = g_var['MA'] / g_var['MM']; | ||
g_var['KA'] = g_var['KA'] + (x * 8000 * (g_oldvar['M1'] - g_var['M1'])); | ||
} | ||
|
||
//100er Maschinen | ||
if (g_var['M2'] > g_oldvar['M2']) { //Maschinen kaufen | ||
g_var['KA'] = g_var['KA'] - (20000 * (g_var['M2'] - g_oldvar['M2'])); | ||
} | ||
else if (g_var['M2'] < g_oldvar['M2']) { | ||
x = g_var['MA'] / g_var['MM']; | ||
g_var['KA'] = g_var['KA'] + (x * 16000 * (g_oldvar['M2'] - g_var['M2'])); | ||
} | ||
|
||
|
||
if (g_var['LW'] > g_oldvar['LW']) { | ||
g_var['KA'] = g_var['KA'] - (10000 * (g_var['LW'] - g_oldvar['LW'])); | ||
} | ||
else if (g_var['LW'] < g_oldvar['LW']) { //Lieferwagen verkaufen | ||
g_var['KA'] = g_var['KA'] + ((8000 - (g_current_round * 100)) * (g_oldvar['M2'] - g_var['M2'])); | ||
} | ||
|
||
g_var['ZA'] = Math.min(g_var['ZM'], 0.5 + ((g_var['LO'] - 850) / 550) + (g_var['SM'] / 800)); | ||
g_var['SK'] = g_var['SM'] * (g_var['A1'] + g_var['A2']); | ||
//Flüssigkapital Update 1 | ||
// KA | ||
g_var['KA'] = g_var['KA'] - g_var['SK']; | ||
|
||
//Intern: Mögliches Produkt | ||
// PM | ||
x = Math.min(g_var['A1'], g_var['M1']); | ||
y = Math.min(g_var['A2'], g_var['M2']); | ||
g_var['PM'] = ((x * (g_var['MA'] + 4 * randomNumber(g_current_round,1) - 2)) + (y * (2 * g_var['MA'] + 6 * randomNumber(g_current_round,2) - 3))) * Math.sqrt(Math.abs(g_var['ZA'])); | ||
|
||
//Produkt auf Lager | ||
// 'PL' | ||
g_var['PL'] = Math.min(g_var['PM'], g_var['RL']); | ||
|
||
// Hemden im Lager | ||
// 'HL' | ||
g_var['HL'] = g_var['HL'] + g_var['PL']; | ||
|
||
// Rohmaterial im Lager | ||
// 'RL' | ||
g_var['RL'] = g_var['RL'] - g_var['PL']; | ||
|
||
//Flüssigkapital Update 2 - Lagerungskosten | ||
// KA | ||
g_var['KA'] = g_var['KA'] - (g_var['PL']*1) - (g_var['RL']*0.5); | ||
|
||
// Nachfrage | ||
// 'NA' | ||
g_var['NA'] = ((g_var['NA']/2) + 280) * 1.25 * Math.pow(2.7181, (-1 * (Math.pow(g_var['PH'],2)) / 4250) ); | ||
|
||
//Flüssigkapital Update 3 - Lagerungskosten | ||
// KA | ||
g_var['KA'] = g_var['KA'] - g_var['HL']; | ||
|
||
// Verkauf | ||
// 'VH' | ||
g_var['VH'] = Math.min(g_var['HL'], g_var['NA']); | ||
g_var['HL'] = g_var['HL'] - g_var['VH']; | ||
|
||
//Flüssigkapital Update 4 | ||
// KA | ||
g_var['KA'] = g_var['KA'] + (g_var['VH'] * g_var['PH']); | ||
|
||
//Flüssigkapital Update 5 | ||
// KA | ||
g_var['KA'] = g_var['KA'] - g_var['WE']; | ||
|
||
//Flüssigkapital Update 6 | ||
// KA | ||
g_var['KA'] = g_var['KA'] - (g_var['LW'] * 500); | ||
|
||
//Flüssigkapital Update 7 - Geschäftslage | ||
// KA | ||
if (g_var['GL'] == 0.25) { // Vorstadt | ||
g_var['KA'] = g_var['KA'] - (0.25 * 2000); | ||
x = 0; | ||
} | ||
else if (g_var['GL'] == 0.5) { //Stadtrand | ||
g_var['KA'] = g_var['KA'] - (0.5 * 2000); | ||
x = 0.1; | ||
} | ||
else if (g_var['GL'] == 1) { //City | ||
g_var['KA'] = g_var['KA'] - (1 * 2000); | ||
x = 0.2; | ||
} | ||
|
||
x1 = Math.min((g_var['WE']/5), g_var['NM']); | ||
x1 = x1 + (g_var['LW'] * 100); | ||
x1 = x1 + (x1 * x); | ||
|
||
// Nachfrage | ||
// 'NA' | ||
g_var['NA'] = x1 + (randomNumber(g_current_round,3) * 100) - 50; | ||
|
||
// Preis Rohmaterial | ||
// 'RP' | ||
g_var['RP'] = 2 + (randomNumber(g_current_round,4) * 6.5); | ||
|
||
//Maschinenkapazität | ||
// 'MA' | ||
g_var['MA'] = (0.9 * g_var['MA']) + ((g_var['RS'] / (g_var['M1'] + (g_var['M2'] * 0.00000001))) * 0.017); | ||
if (isNaN(g_var['MA'])) { g_var['MA'] = 0; } // wenn NaN dann auf 0 setzen | ||
g_var['MA'] = Math.min(g_var['MA'], g_var['MM']); | ||
|
||
|
||
//Flüssigkapital Update 8 | ||
// KA | ||
g_var['KA'] = g_var['KA'] - g_var['RS']; | ||
|
||
// Lohn für 50er und 100er Arbeiter | ||
g_var['KA'] = g_var['KA'] - ((g_var['A1'] + g_var['A2']) * g_var['LO']); | ||
|
||
if (g_var['KA'] > 0) { | ||
// Guthabenzins | ||
g_var['KA'] = g_var['KA'] + (g_var['KA'] * g_var['GZ']); | ||
} | ||
else { | ||
// Sollzins | ||
g_var['KA'] = g_var['KA'] + (g_var['KA'] * g_var['SZ']); | ||
} | ||
|
||
//add constant factor as loaded from xml | ||
g_var['KA'] = g_var['KA'] + g_addConstant; | ||
|
||
//Gesamtkapital updaten | ||
// 'GK' | ||
x = g_var['MA'] / g_var['MM']; | ||
g_var['GK'] = g_var['KA'] + (g_var['M1'] * (x * 8000)) + (g_var['M2'] * (x * 16000)) + (g_var['LW'] * (8000 - (g_current_round * 100))) + (g_var['RL'] * 2) + (g_var['HL'] * 20); | ||
|
||
//Maschinenschäden | ||
// 'MS' | ||
g_var['MS'] = 1 - (g_var['MA'] / g_var['MM']); | ||
|
||
//Produktionsausfall | ||
// 'PA' | ||
g_var['PA'] = 1 - (g_var['PL'] / g_var['PM']); | ||
if (isNaN(g_var['PA'])) { g_var['PA'] = 1; } // wenn NaN dann auf 1 setzen | ||
|
||
|
||
returnValue = true; | ||
return returnValue; | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,168 @@ | ||
function calcFormulas(g_var, g_oldvar, g_current_round, g_addConstant) { | ||
|
||
var x; | ||
var y; | ||
var x1; | ||
|
||
//==================================== | ||
// Änderungen - Kosten Updaten | ||
//==================================== | ||
|
||
//Rohstoff auf Lager kann nicht reduziert werden | ||
g_var['MaterialStock'] = g_var['MaterialStock'] + g_var['MaterialOrdered']; | ||
g_var['Account'] = g_var['Account'] - (g_var['MaterialPrice'] * (g_var['MaterialOrdered'])); | ||
|
||
//50er Maschinen | ||
if (g_var['Machines50'] > g_oldvar['Machines50']) { //Maschinen kaufen | ||
g_var['Account'] = g_var['Account'] - (10000 * (g_var['Machines50'] - g_oldvar['Machines50'])); | ||
} | ||
else if (g_var['Machines50'] < g_oldvar['Machines50']) { //Maschinen verkaufen | ||
x = g_var['CurrentMachineCapacity'] / g_var['MaximalMachineCapacity']; | ||
g_var['Account'] = g_var['Account'] + (x * 8000 * (g_oldvar['Machines50'] - g_var['Machines50'])); | ||
} | ||
|
||
//100er Maschinen | ||
if (g_var['Machines100'] > g_oldvar['Machines100']) { //Maschinen kaufen | ||
g_var['Account'] = g_var['Account'] - (20000 * (g_var['Machines100'] - g_oldvar['Machines100'])); | ||
} | ||
else if (g_var['Machines100'] < g_oldvar['Machines100']) { //Maschinen verkaufen | ||
x = g_var['CurrentMachineCapacity'] / g_var['MaximalMachineCapacity']; | ||
g_var['Account'] = g_var['Account'] + (x * 16000 * (g_oldvar['Machines100'] - g_var['Machines100'])); | ||
} | ||
|
||
//Lieferwagen | ||
if (g_var['Distributors'] > g_oldvar['Distributors']) { //Lieferwagen kaufen | ||
g_var['Account'] = g_var['Account'] - (10000 * (g_var['Distributors'] - g_oldvar['Distributors'])); | ||
} | ||
else if (g_var['Distributors'] < g_oldvar['Distributors']) { //Lieferwagen verkaufen | ||
g_var['Account'] = g_var['Account'] + ((8000 - (g_current_round * 100)) * (g_oldvar['Machines100'] - g_var['Machines100'])); | ||
} | ||
|
||
//==================================== | ||
// Neue Werte berechnen | ||
//==================================== | ||
|
||
// Arbeitszufriedenheit | ||
// 'Satisfaction' | ||
g_var['Satisfaction'] = Math.min(g_var['MaximalSatisfaction'], 0.5 + ((g_var['Salary'] - 850) / 550) + (g_var['Social'] / 800)); | ||
|
||
//Intern: Sozialkosten | ||
// TotalSocialCosts | ||
g_var['TotalSocialCosts'] = g_var['Social'] * (g_var['Workers50'] + g_var['Workers100']); | ||
|
||
//Flüssigkapital Update 1 | ||
// Account | ||
g_var['Account'] = g_var['Account'] - g_var['TotalSocialCosts']; | ||
|
||
//Intern: Mögliches Produkt | ||
// PossibleProduction | ||
g_var.PossibleProduction = calculatePossibleProductionSprout(g_var, g_current_round); | ||
|
||
//Produkt auf Lager | ||
// 'ProductStock' | ||
g_var['ProductStock'] = Math.min(g_var['PossibleProduction'], g_var['MaterialStock']); | ||
|
||
// Hemden im Lager | ||
// 'ShirtStock' | ||
g_var['ShirtStock'] = g_var['ShirtStock'] + g_var['ProductStock']; | ||
|
||
// Rohmaterial im Lager | ||
// 'MaterialStock' | ||
g_var['MaterialStock'] = g_var['MaterialStock'] - g_var['ProductStock']; | ||
|
||
//Flüssigkapital Update 2 - Lagerungskosten | ||
// Account | ||
g_var['Account'] = g_var['Account'] - (g_var['ProductStock']*1) - (g_var['MaterialStock']*0.5); | ||
|
||
// Nachfrage | ||
// 'Demand' | ||
g_var['Demand'] = ((g_var['Demand']/2) + 280) * 1.25 * Math.pow(2.7181, (-1 * (Math.pow(g_var['ShirtPrice'],2)) / 4250) ); | ||
|
||
//Flüssigkapital Update 3 - Lagerungskosten | ||
// Account | ||
g_var['Account'] = g_var['Account'] - g_var['ShirtStock']; | ||
|
||
// Verkauf | ||
// 'Sales' | ||
g_var['Sales'] = Math.min(g_var['ShirtStock'], g_var['Demand']); | ||
g_var['ShirtStock'] = g_var['ShirtStock'] - g_var['Sales']; | ||
|
||
//Flüssigkapital Update 4 | ||
// Account | ||
g_var['Account'] = g_var['Account'] + (g_var['Sales'] * g_var['ShirtPrice']); | ||
|
||
//Flüssigkapital Update 5 | ||
// Account | ||
g_var['Account'] = g_var['Account'] - g_var['Advertising']; | ||
|
||
//Flüssigkapital Update 6 | ||
// Account | ||
g_var['Account'] = g_var['Account'] - (g_var['Distributors'] * 500); | ||
|
||
|
||
|
||
//Flüssigkapital Update 7 - Geschäftslage | ||
// Account | ||
if (g_var['Location'] == 0.25) { // Vorstadt | ||
g_var['Account'] = g_var['Account'] - (0.25 * 2000); | ||
x = 0; | ||
} | ||
else if (g_var['Location'] == 0.5) { //Stadtrand | ||
g_var['Account'] = g_var['Account'] - (0.5 * 2000); | ||
x = 0.1; | ||
} | ||
else if (g_var['Location'] == 1) { //City | ||
g_var['Account'] = g_var['Account'] - (1 * 2000); | ||
x = 0.2; | ||
} | ||
|
||
x1 = Math.min((g_var['Advertising']/5), g_var['NM']); | ||
x1 = x1 + (g_var['Distributors'] * 100); | ||
x1 = x1 + (x1 * x); | ||
|
||
// Nachfrage | ||
// 'Demand' | ||
g_var['Demand'] = x1 + (randomNumber(g_current_round,3) * 100) - 50; | ||
|
||
// Preis Rohmaterial | ||
// 'MaterialPrice' | ||
g_var['MaterialPrice'] = 2 + (randomNumber(g_current_round,4) * 6.5); | ||
|
||
//Maschinenkapazität | ||
// 'CurrentMachineCapacity' | ||
g_var['CurrentMachineCapacity'] = (0.9 * g_var['CurrentMachineCapacity']) + ((g_var['Service'] / (g_var['Machines50'] + (g_var['Machines100'] * 0.00000001))) * 0.017); | ||
if (isNaN(g_var['CurrentMachineCapacity'])) { g_var['CurrentMachineCapacity'] = 0; } // wenn NaN dann auf 0 setzen | ||
g_var['CurrentMachineCapacity'] = Math.min(g_var['CurrentMachineCapacity'], g_var['MaximalMachineCapacity']); | ||
|
||
|
||
//Flüssigkapital Update 8 | ||
// Account | ||
g_var['Account'] = g_var['Account'] - g_var['Service']; | ||
g_var['Account'] = g_var['Account'] - ((g_var['Workers50'] + g_var['Workers100']) * g_var['Salary']); | ||
|
||
if (g_var['Account'] > 0) { | ||
g_var['Account'] = g_var['Account'] + (g_var['Account'] * g_var['CreditInterest']); | ||
} | ||
else { | ||
g_var['Account'] = g_var['Account'] + (g_var['Account'] * g_var['DebitInterest']); | ||
} | ||
|
||
//add constant factor as loaded from xml | ||
g_var['Account'] = g_var['Account'] + g_addConstant; | ||
|
||
//Gesamtkapital updaten | ||
// 'CompanyValue' | ||
x = g_var['CurrentMachineCapacity'] / g_var['MaximalMachineCapacity']; | ||
g_var['CompanyValue'] = g_var['Account'] + (g_var['Machines50'] * (x * 8000)) + (g_var['Machines100'] * (x * 16000)) + (g_var['Distributors'] * (8000 - (g_current_round * 100))) + (g_var['MaterialStock'] * 2) + (g_var['ShirtStock'] * 20); | ||
|
||
//Maschinenschäden | ||
// 'MachineDamage' | ||
g_var['MachineDamage'] = 1 - (g_var['CurrentMachineCapacity'] / g_var['MaximalMachineCapacity']); | ||
|
||
//Produktionsausfall | ||
// 'ProductionLoss' | ||
g_var['ProductionLoss'] = 1 - (g_var['ProductStock'] / g_var['PossibleProduction']); | ||
if (isNaN(g_var['ProductionLoss'])) { g_var['ProductionLoss'] = 1; } // wenn NaN dann auf 1 setzen | ||
|
||
return g_var; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
|
||
var test_first_round = function () { | ||
// Arrange | ||
var round = 0; | ||
var constant = 0; | ||
var values = init(round1, 0); | ||
|
||
// Act | ||
var values = calcFormulas(values, values, round, constant); | ||
|
||
// Assert | ||
// Left | ||
Math.round(values.Account).should.equal(168075); | ||
Math.round(values.Sales).should.equal(347); | ||
tolerance(values.MaterialPrice, 8.27, 0.001).should.be.true; | ||
Math.round(values.ShirtStock).should.equal(0); | ||
Math.round(values.Workers50).should.equal(8); | ||
Math.round(values.Workers100).should.equal(0); | ||
Math.round(values.Salary).should.equal(1080); | ||
Math.round(values.ShirtPrice).should.equal(52); | ||
Math.round(values.Distributors).should.equal(1); | ||
tolerance(values.Satisfaction, 0.98, 0.001).should.be.true; | ||
Math.round(values.ProductionLoss).should.equal(0.26); | ||
|
||
// Right | ||
Math.round(values.CompanyValue).should.equal(247077); | ||
Math.round(values.Demand).should.equal(703); | ||
Math.round(values.MaterialStock).should.equal(0); | ||
Math.round(values.MaterialOrdered).should.equal(250); | ||
Math.round(values.Machines50).should.equal(10); | ||
Math.round(values.Machines100).should.equal(0); | ||
Math.round(values.Service).should.equal(1200); | ||
Math.round(values.Social).should.equal(50); | ||
Math.round(values.Advertising).should.equal(2800); | ||
tolerance(values.Location, 0.5, 0.000001).should.be.true; | ||
tolerance(values.MachineDamage, 0.112, 0.01).should.be.true; | ||
}(); |
Oops, something went wrong.