/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 22.04.0 ] */ /* [wxMaxima: input start ] */ fpprintprec:4; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ T(t)=t/m; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ L(l,v):=l/(m*v); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ bonus_basefactor : 125$ /*from simuconf.tab in simutrans*/ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ bonus_multiplier(v,base_speed,bonus):=map('lambda([x],min(max(bonus_basefactor/1000,1+(x/base_speed-1)*bonus/10),1)),v)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ R0(ppd, l,q,L,cpd,cpm,n,v,base_speed,bonus):=n*(ppd*l*q/(2*L)*bonus_multiplier(v,base_speed,bonus)-cpd*l/L*dstCoeff)-cpm; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Pr0(ppd, l,q,L,n,v,base_speed,bonus):=n*ppd*l*q/(2*L)*bonus_multiplier(v,base_speed,bonus); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ R1(ppd, l,demand,L,cpd,cpm,n,v,base_speed,bonus):=ppd*l*demand*bonus_multiplier(v,base_speed,bonus)-n*cpd*l/L*dstCoeff-cpm; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Pr1(ppd,l,demand,v, base_speed,bonus):=ppd*l*demand*bonus_multiplier(v,base_speed,bonus); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ numer:true$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] l1, l2 source destonation coordinates, demand goods/month, ppd money/good/km, bonus%, length_cost cost/month of rail road etc (multiplied by number of roads), base_speed from speedbonus.tab in pakset [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ l1:[1028, 85]$ l2:[1190, 211]$ length_cost: 2*1.5$ l:sqrt((l1[1]-l2[1])^2+(l1[2]-l2[2])^2)$ display(l)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ demand:428$ ppd:0.11$ bonus:0$ base_speed:55$ m:6.4$ dstCoeff:sqrt(2)$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] v km/h, cp capacity, tu minutes for loading unloading, cpd cost/km, cpm cost/month of rails and stations [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ /*v:[45, 2*45*38/(45+38), 2*45*28/(45+28), 2*45*19/(45+19)]$ cp:[60, 80, 100, 120]$ cpd:[1.60, 1.70, 1.80, 1.90]$ cpm:[4*2*72+l*dstCoeff*length_cost, 5*2*72+l*dstCoeff*length_cost, 6*2*72+l*dstCoeff*length_cost, 7*2*72+l*dstCoeff*length_cost]$ names:[steam3, 4, 5, 6]$ /*bulk*/ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ v:[50, 2*50*45/(50+45), 2*50*37/(50+37), 2*50*29/(50+29)]$ cp:[60, 80, 100, 120]$ cpd:[1, 1.10, 1.20, 1.30]$ cpm:[4*2*72+l*dstCoeff*length_cost, 5*2*72+l*dstCoeff*length_cost, 6*2*72+l*dstCoeff*length_cost, 7*2*72+l*dstCoeff*length_cost]$ names:[Chippy_steam3, 4, 5, 6]$ /*bulk*/ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ v1:v/dstCoeff$ print("average velocity is",v1)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ q:2*demand*L(l,v1)$ n:floor(q/cp)+1$ print("We need",q, "cargo to satisfy the demand and", n, "convoys to just overpass it.")$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ L1:n*cp/(2*demand)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ print("Revenue",R0(ppd, l,cp,L(l,v1),cpd,cpm,n-1,v,base_speed,bonus), "from", n-1, "convoys, unscheduled. Profit", Pr0(ppd, l,cp,L(l,v1),n-1,v,base_speed,bonus)," cost",-R0(ppd, l,cp,L(l,v1),cpd,cpm,n-1,v,base_speed,bonus)+Pr0(ppd, l,cp,L(l,v1),n-1,v,base_speed,bonus))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ print("Revenue",R1(ppd, l,demand,L(l,v1),cpd,cpm,n,v,base_speed,bonus), "from", n, "convoys unscheduled. Profit", Pr1(ppd,l,demand,v,base_speed,bonus), "cost", -R1(ppd, l,demand,L(l,v1),cpd,cpm,n,v,base_speed,bonus)+Pr1(ppd,l,demand,v,base_speed,bonus))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ print("Revenue",maxRevenue:R1(ppd, l,demand,L1,cpd,cpm,n,v,base_speed,bonus), "from", n, "convoys scheduled. Profit",Pr1(ppd,l,demand,v,base_speed,bonus), "cost", -R1(ppd, l,demand,L1,cpd,cpm,n,v,base_speed,bonus)+Pr1(ppd,l,demand,v,base_speed,bonus))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ print("A convoy, unscheduled, needs", floor(2*L(l,v1)*m), "hours and", 60*mod(2*L(l,v1)*m,1),"minutes or",2*L(l,v1),"months between departures")$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ print("Every one carried good covers", 1/2/L(l,v1), "of the demand per month")$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ print("Scheduled departures every",floor(2*L1/n*m), "hours and", 60*mod(2*L1/n*m,1),"minutes, for", n, "convoys")$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ print("Scheduled departures every",floor(2*L1/(n-1)*m), "hours and", 60*mod(2*L1/(n-1)*m,1),"minutes, for", n-1, "convoys")$ /* [wxMaxima: input end ] */ /* Old versions of Maxima abort on loading files that end in a comment. */ "Created with wxMaxima 22.04.0"$