master > master: code - metrics für moves

This commit is contained in:
RD 2021-11-06 18:21:16 +01:00
parent ab38c181c9
commit ef833533f6
5 changed files with 51 additions and 16 deletions

View File

@ -17,6 +17,7 @@ import (
* ---------------------------------------------------------------- */ * ---------------------------------------------------------------- */
var _ctr_time = types.NewCounter() var _ctr_time = types.NewCounter()
var _ctr_moves = types.NewCounter()
var _ctr_space = types.NewCounter() var _ctr_space = types.NewCounter()
var _tmr = types.NewTimer() var _tmr = types.NewTimer()
@ -26,6 +27,7 @@ var _tmr = types.NewTimer()
func ResetMetrics() { func ResetMetrics() {
_ctr_time.Reset() _ctr_time.Reset()
_ctr_moves.Reset()
_ctr_space.Reset() _ctr_space.Reset()
_tmr.Reset() _tmr.Reset()
} }
@ -42,14 +44,26 @@ func AddTimeCost(options ...int) {
_ctr_time.Add(options...) _ctr_time.Add(options...)
} }
func AddMovesCost(options ...int) {
_ctr_moves.Add(options...)
}
func AddSpaceCost(options ...int) { func AddSpaceCost(options ...int) {
_ctr_space.Add(options...) _ctr_space.Add(options...)
} }
func SetSpaceCost(n int) {
_ctr_space.Set(n)
}
func GetTimeCost() int { func GetTimeCost() int {
return _ctr_time.Size() return _ctr_time.Size()
} }
func GetMovesCost() int {
return _ctr_moves.Size()
}
func GetSpaceCost() int { func GetSpaceCost() int {
return _ctr_space.Size() return _ctr_space.Size()
} }

View File

@ -104,6 +104,7 @@ func DisplayMetrics() {
// logging.Plain("Dauer der Ausführung: t = \033[1m%[1]v\033[0m", metrics.GetTimeElapsed()) // logging.Plain("Dauer der Ausführung: t = \033[1m%[1]v\033[0m", metrics.GetTimeElapsed())
logging.Plain("Dauer der Ausführung: t = \033[1m%[1]v\033[0m", metrics.GetTimeElapsedLongFormat()) logging.Plain("Dauer der Ausführung: t = \033[1m%[1]v\033[0m", metrics.GetTimeElapsedLongFormat())
logging.Plain("Kosten (Zeit): T(n) = \033[1m%[1]v\033[0m", displayCost(metrics.GetTimeCost())) logging.Plain("Kosten (Zeit): T(n) = \033[1m%[1]v\033[0m", displayCost(metrics.GetTimeCost()))
logging.Plain("Kosten (#Züge): M(n) = \033[1m%[1]v\033[0m", displayCost(metrics.GetMovesCost()))
logging.Plain("Kosten (Platz): S(n) = \033[1m%[1]v\033[0m", displayCost(metrics.GetSpaceCost())) logging.Plain("Kosten (Platz): S(n) = \033[1m%[1]v\033[0m", displayCost(metrics.GetSpaceCost()))
return return
} }

View File

@ -39,6 +39,14 @@ func (self Counter) Size() int {
return self.nr return self.nr
} }
func (self *Counter) Reset() {
self.nr = 0
}
func (self *Counter) Set(n int) {
self.nr = n
}
func (self *Counter) Add(options ...int) { func (self *Counter) Add(options ...int) {
n := 1 n := 1
if len(options) > 0 { if len(options) > 0 {
@ -46,7 +54,3 @@ func (self *Counter) Add(options ...int) {
} }
self.nr += n self.nr += n
} }
func (self *Counter) Reset() {
self.nr = 0
}

View File

@ -22,24 +22,20 @@ _tmr = None;
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Counter(object): class Counter(object):
_nr_steps: int; value: int;
def __init__(self): def __init__(self):
self.reset(); self.reset();
def __str__(self) -> str: def __str__(self) -> str:
return str(self._nr_steps); return str(self.value);
@property
def numberOfStep(self) -> int:
return self._nr_steps;
def add(self, n: int = 1): def add(self, n: int = 1):
self._nr_steps += n; self.value += n;
return self; return self;
def reset(self): def reset(self):
self._nr_steps = 0; self.value = 0;
return self; return self;
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -86,6 +82,7 @@ class Timer(object):
## Initialisierung: ## Initialisierung:
_ctr_time = Counter(); _ctr_time = Counter();
_ctr_moves = Counter();
_ctr_space = Counter(); _ctr_space = Counter();
_tmr = Timer(); _tmr = Timer();
@ -95,10 +92,12 @@ _tmr = Timer();
def ResetMetrics(): def ResetMetrics():
global _ctr_time; global _ctr_time;
global _ctr_moves;
global _ctr_space; global _ctr_space;
global _tmr; global _tmr;
_ctr_time.reset(); _ctr_time.reset();
_ctr_moves.reset();
_ctr_space.reset(); _ctr_space.reset();
_tmr.reset(); _tmr.reset();
return; return;
@ -116,16 +115,29 @@ def AddTimeCost(n: int = 1):
_ctr_time.add(n); _ctr_time.add(n);
return; return;
def AddMovesCost(n: int = 1):
global _ctr_moves;
_ctr_moves.add(n);
return;
def AddSpaceCost(n: int = 1): def AddSpaceCost(n: int = 1):
global _ctr_space; global _ctr_space;
_ctr_space.add(n); _ctr_space.add(n);
return; return;
def SetSpaceCost(n: int):
global _ctr_space;
_ctr_space.value = n;
return;
def GetTimeCost() -> int: def GetTimeCost() -> int:
return _ctr_time.numberOfStep; return _ctr_time.value;
def GetMovesCost() -> int:
return _ctr_moves.value;
def GetSpaceCost() -> int: def GetSpaceCost() -> int:
return _ctr_space.numberOfStep; return _ctr_space.value;
def GetTimeElapsed() -> timedelta: def GetTimeElapsed() -> timedelta:
global _tmr; global _tmr;

View File

@ -69,8 +69,9 @@ def DisplayEndOfAlgorithm(*_: Any, **outputs: Any):
def DisplayMetrics(): def DisplayMetrics():
logPlain('Dauer der Ausführung: t = \033[1m{}\033[0m'.format(GetTimeElapsed())); logPlain('Dauer der Ausführung: t = \033[1m{}\033[0m'.format(GetTimeElapsed()));
logPlain('Kosten (Zeit): T(n) = \033[1m{}\033[0m'.format(GetTimeCost())); logPlain('Kosten (Zeit): T(n) = \033[1m{}\033[0m'.format(displayCost(GetTimeCost())));
logPlain('Kosten (Platz): S(n) = \033[1m{}\033[0m'.format(GetSpaceCost())); logPlain('Kosten (#Züge): M(n) = \033[1m{}\033[0m'.format(displayCost(GetMovesCost())));
logPlain('Kosten (Platz): S(n) = \033[1m{}\033[0m'.format(displayCost(GetSpaceCost())));
return; return;
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -80,3 +81,6 @@ def DisplayMetrics():
def DisplayBar(n: int = 80): def DisplayBar(n: int = 80):
logPlain('+{}+'.format('-'*n)); logPlain('+{}+'.format('-'*n));
return; return;
def displayCost(cost: int) -> str:
return str(cost) if cost > 0 else '-';