From: Max R. <per...@gm...> - 2013-04-28 14:59:20
|
Hi Wolf-Dieter First of all thank you for your great work for simplix driver Please excuse me for my bad english, and if you wish we can try to talk over skype. I have a goal to start a car from pit In initcars i placed a car on pit, but after start, simplix dont use speed limitation on pit lane So in runOneStep i turned on flag RM_CMD_PIT_ASKED for the cars, right after "Go" signal. After that speed limitation on pit lane start to work but i spotted that simplix add extra fuel on this fake pit stop I added some debugging information to understand whats going on in PitRefuel method Here is the edited code (actually i just added 2 GfLogInfo calls) ================= float TSimpleStrategy::PitRefuel() { float FuelConsum; // Spritverbrauch kg/m float Fuel; // Menge in kg if (oFuelPerM == 0.0) // Wenn kein Messwert FuelConsum = oExpectedFuelPerM; // vorliegt, sch‰tzen else // ansonsten FuelConsum = oFuelPerM; // Messwert nehmen FuelConsum *= 1.10f; // ggf. ohne Windschatten! oRemainingDistance = // Restliche Strecke des oRaceDistance - DistanceRaced; // Rennens ermitteln Fuel = // Bedarf an Treibstoff (oRemainingDistance + oReserve) * FuelConsum;// f¸r restliche Strecke if (Fuel > oMaxFuel) // Wenn mehr als eine Tank- { // f¸llung benˆtigt wird if (Fuel / 2 < oMaxFuel) // Bei zwei Tankf¸llungen Fuel = Fuel / 2; // die H‰lfte tanken else if (Fuel / 3 < oMaxFuel) // Bei drei Tankf¸llungen. Fuel = Fuel / 3; // ein Drittel tanken else if (Fuel / 4 < oMaxFuel) // Bei vier Tankf¸llungen. Fuel = Fuel / 4; // ein Viertel tanken else // Bei f¸nf Tankf¸llungen Fuel = Fuel / 5; // ein F¸nftel tanken }; GfLogInfo("Pitrefuel: we have %fl and looks like we need %fl when max is %fl\n", CarFuel, Fuel, oMaxFuel); if (Fuel > oMaxFuel - CarFuel) // Menge ggf. auf freien Fuel = oMaxFuel - CarFuel; // Tankinhalt begrenzen else // ansonsten Bedarf Fuel = Fuel - CarFuel; // abz¸gl. Tankinhalt //Fuel = MIN(Fuel,10.0); // NUR ZUM TEST DES TEAMMANAGERS oLastPitFuel = (float) MAX(Fuel,0.0); // Wenn genug da ist = 0.0 GfLogInfo("Pitrefuel: so we will add %fl (%fl)\n", oLastPitFuel, Fuel); return oLastPitFuel; // Menge an TORCS melden }; ================= For the start i choose 70litres (cause few amount of fuel were lost during working engine before "Go" command, and i just want to be sure that car has enough fuel for everything) of fuel at start by setting params/section[name = 'simplix private']/attnum[name='start fuel']/@val to 70 in drivers/simplix_sc//mp1-vicente/default.xml So i got in my stderr: 00:00:00.419 Info Pitrefuel: we have 69.968796l and looks like we need 51.436844l when max is 100.000000l 00:00:00.419 Info Pitrefuel: so we will add 30.031204l (30.031204l) 00:00:00.419 Info #Pastor Maldonado refueling: 30.03 00:00:00.419 Info Pastor Maldonado entering2 in pit slot. 00:00:00.419 Info Pastor Maldonado in repair pit stop for 5.8 s (refueling by 30.0 l, repairing by 0). few comments from me: we have 69.968796l cause ~0.023 were burned out before Go command 51.436844l is what we need to complete 25laps in practice mode (settings from config/raceman/practice.xml) and we have 51.436844 > 100.000000 - 69.968796 and you calculate Fuel as Fuel = oMaxFuel - CarFuel i.e. 100.000000 - 69.968796 and thus oLastPitFuel = 30.03 Regards Max On 28/4/13 14:50 , Wolf-Dieter Beelitz wrote: > Hello Max, > > >> In our case Fuel has amount of litres that we need to finish session (51l) > OK > >> CarFuel has current amount of fuel in car tank (70l > No, because if we have 70L and need only 51L we would not use the code here! > >> - this value taken from driver settings xml file) oMaxFuel is tank capacity (100l) > It is not taken from the XML file but from the simulation > > In a real case CarFuel << Fuel, it depends on the number of team mates that have to use the same pit, the tracks length (distance from pit entry to pit entry + way to pit), let's assume 10 L. > > 51 < 100 - 10 -> Fuel = 51L - 10L > > Cheers > > Wolf-Dieter > > ------------------------------------------------------------------------------ > Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr > _______________________________________________ > Speed-dreams-devel mailing list > Spe...@li... > https://lists.sourceforge.net/lists/listinfo/speed-dreams-devel > |