IStatMethod.PerformanceTime

Синтаксис

PerformanceTime: Double;

PerformanceTime: double;

Описание

Свойство PerformanceTime возвращает время выполнения метода.

Комментарии

Свойство содержит время в миллисекундах от начала выполнения метода IStatMethod.Execute до его завершения.

Пример

Для выполнения примера добавьте ссылку на системную сборку Stat.

Sub UserProc;
Var
    QP: SmQuadraticProgramming;
    i, Res: Integer;
    time: double;
    LinC1, CF, Lb, Ub, init: Array[
3Of Double;
    H: Array[
33Of Double;
    Bound: ISlBoundaryRegion;
    LCon1: ISlLinearConstraint;
Begin
    QP := 
New SmQuadraticProgramming.Create;
    
// Задаем начальные приближения
    init[0] := 6; init[1] := 0; init[2] := 0;
    QP.InitialApproximation.AutoCreate := 
False;
    QP.InitialApproximation.InitValues := init;
    
// Задаем линейную часть целевой функции
    CF[0] := -1; CF[1] := 0; CF[2] := -2;
    QP.CriterionFunction := CF;
    
//Задаем квадратичную часть целевой функции
    H[00] := 2; H[01] := 0; H[02] := 0;
    H[
10] := 0; H[11] := 2; H[12] := 0;
    H[
20] := 0; H[21] := 0; H[22] := 0;
    QP.QuadraticForm := H;
    
// Задаем область определения
    Lb[0] := 0; Ub[0] := double.PositiveInfinity;
    Lb[
1] := 0; Ub[1] := double.PositiveInfinity;
    Lb[
2] := 0; Ub[2] := double.PositiveInfinity;
    Bound := QP.Boundary;
    
// Задаем границы области
    Bound.BoundaryLower := Lb;
    Bound.BoundaryUpper := Ub;
    
// Задаем коэффициент линейного ограничения
    LinC1[0] := 1; LinC1[1] := -1; LinC1[2] := 2;
    LCon1 := QP.LinearConstraints.Add;
    LCon1.Value := LinC1;
    
// Задаем границы коэффициента линейного ограничения
    LCon1.BoundaryLower := 6;
    LCon1.BoundaryUpper := 
6;
    
// Выполняем расчёт и выводим результаты
    Res := QP.Execute;
    time := QP.PerformanceTime / 
1000;
    Debug.WriteLine(
"Время выполнения[sec] = " + time.ToString);
    Debug.WriteLine(
"RES=" + Res.ToString);
    Debug.WriteLine(QP.Errors);
    
If res = 0 Then
        Debug.WriteLine(
"== Значение целевой функции ==");
        Debug.WriteLine(QP.OptimalFunctionValue.ToString);
        Debug.WriteLine(
"== Решение ==");
        
For i := 0 To QP.Solution.Length - 1 Do
            Debug.WriteLine(i.ToString + 
": " + QP.Solution[i].ToString);
        
End For;
    
End If;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub Main(Params: StartParams);
Var
    QP: SmQuadraticProgramming;
    i, Res: Integer;
    time: double;
    LinC1, CF, Lb, Ub, init: Array[
3Of Double;
    H: Array[
33Of Double;
    Bound: ISlBoundaryRegion;
    LCon1: ISlLinearConstraint;
Begin
    QP := 
New SmQuadraticProgramming.Create();
    
// Задаем начальные приближения
    init[0] := 6; init[1] := 0; init[2] := 0;
    QP.InitialApproximation.AutoCreate := 
False;
    QP.InitialApproximation.InitValues := init;
    
// Задаем линейную часть целевой функции
    CF[0] := -1; CF[1] := 0; CF[2] := -2;
    QP.CriterionFunction := CF;
    
//Задаем квадратичную часть целевой функции
    H[00] := 2; H[01] := 0; H[02] := 0;
    H[
10] := 0; H[11] := 2; H[12] := 0;
    H[
20] := 0; H[21] := 0; H[22] := 0;
    QP.QuadraticForm := H;
    
// Задаем область определения
    Lb[0] := 0; Ub[0] := double.PositiveInfinity;
    Lb[
1] := 0; Ub[1] := double.PositiveInfinity;
    Lb[
2] := 0; Ub[2] := double.PositiveInfinity;
    Bound := QP.Boundary;
    
// Задаем границы области
    Bound.BoundaryLower := Lb;
    Bound.BoundaryUpper := Ub;
    
// Задаем коэффициент линейного ограничения
    LinC1[0] := 1; LinC1[1] := -1; LinC1[2] := 2;
    LCon1 := QP.LinearConstraints.Add();
    LCon1.Value := LinC1;
    
// Задаем границы коэффициента линейного ограничения
    LCon1.BoundaryLower := 6;
    LCon1.BoundaryUpper := 
6;
    
// Выполняем расчёт и выводим результаты
    Res := QP.Execute();
    time := QP.PerformanceTime / 
1000;
    System.Diagnostics.Debug.WriteLine(
"Время выполнения[sec] = " + time.ToString());
    System.Diagnostics.Debug.WriteLine(
"RES=" + Res.ToString());
    System.Diagnostics.Debug.WriteLine(QP.Errors);
    
If res = 0 Then
        System.Diagnostics.Debug.WriteLine(
"== Значение целевой функции ==");
        System.Diagnostics.Debug.WriteLine(QP.OptimalFunctionValue.ToString());
        System.Diagnostics.Debug.WriteLine(
"== Решение ==");
        
For i := 0 To QP.Solution.Length - 1 Do
            System.Diagnostics.Debug.WriteLine(i.ToString() + 
": " + QP.Solution.GetValue(i).ToString());
        
End For;
    
End If;
End Sub;

В результате выполнения примера в окно консоли будут выведены время выполнения и результат расчёта.

См. также:

IStatMethod