第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

優(yōu)化解決時(shí)返回函數(shù)調(diào)用和其他信息

優(yōu)化解決時(shí)返回函數(shù)調(diào)用和其他信息

翻閱古今 2022-12-20 12:26:29
我正在使用 Gekko 對(duì)多個(gè)系統(tǒng)的多個(gè)問(wèn)題進(jìn)行基準(zhǔn)測(cè)試,我想讓我的代碼返回函數(shù)調(diào)用、迭代和解決所需的時(shí)間。我知道求解器會(huì)自動(dòng)打印所有這些數(shù)據(jù),但是是否有可以返回的對(duì)象或?qū)傩砸栽试S我的函數(shù)返回?cái)?shù)值?下面是如何設(shè)置代碼的示例。def model(plot=False):    t = np.linspace(0, 1, 101)    m = GEKKO(remote=False); m.time=t    fe = m.Param(np.cos(2*np.pi*t)+3)    de = m.Var(fe[0])    e = m.CV(0); e.STATUS=1; e.SPHI=e.SPLO=0; e.WSPHI=1000; e.WSPLO=1    der = m.MV(0, lb=-1, ub=1); der.STATUS=1    m.Equations([de.dt() == der,  e == fe-de])    m.options.IMODE=6; m.solve()    if plot:        import matplotlib.pyplot as plt        plt.plot(t, fe)        plt.plot(t, de)        plt.plot(t, der)        plt.show()    return m.fcallsif __name__ == "__main__":    model(plot=True)
查看完整描述

1 回答

?
BIG陽(yáng)

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

目標(biāo)函數(shù)、迭代次數(shù)、求解時(shí)間求解狀態(tài)在 Gekko 中可用:

  • m.options.OBJFCNVAL

  • m.options.ITERATIONS

  • m.options.SOLVETIME

  • m.options.APPSTATUS

您可以像我對(duì)summary.

from gekko import GEKKO

import numpy as np


def model(plot=False):

    t = np.linspace(0, 1, 101)

    m = GEKKO(remote=False); m.time=t


    fe = m.Param(np.cos(2*np.pi*t)+3)

    de = m.Var(fe[0])


    e = m.CV(0); e.STATUS=1; e.SPHI=e.SPLO=0; e.WSPHI=1000; e.WSPLO=1

    der = m.MV(0, lb=-1, ub=1); der.STATUS=1


    m.Equations([de.dt() == der,  e == fe-de])


    m.options.DIAGLEVEL=1

    m.options.SOLVER=1

    m.options.IMODE=6; m.solve()


    if plot:

        import matplotlib.pyplot as plt

        plt.plot(t, fe)

        plt.plot(t, de)

        plt.plot(t, der)

        plt.savefig('result.png')

    return [m.options.OBJFCNVAL,\

            m.options.ITERATIONS,\

            m.options.SOLVETIME,\

            m.options.APPSTATUS]



if __name__ == "__main__":

    summary = model(plot=True)

    print(summary)

如果你想要函數(shù)調(diào)用,那就稍微復(fù)雜一點(diǎn),因?yàn)橛胁煌?lèi)型的函數(shù)調(diào)用。有目標(biāo)函數(shù)和約束的函數(shù)調(diào)用、一階導(dǎo)數(shù)的函數(shù)調(diào)用和二階導(dǎo)數(shù)的函數(shù)調(diào)用。m.options.DIAGLEVEL=1您可以通過(guò)設(shè)置或更高獲得所有子程序調(diào)用以及每個(gè)子程序調(diào)用的個(gè)人和累積時(shí)間的完整報(bào)告。這是此問(wèn)題的求解器輸出:


 Number of state variables:    1900

 Number of total equations: -  1800

 Number of slack variables: -  0

 ---------------------------------------

 Degrees of freedom       :    100


 ----------------------------------------------

 Dynamic Control with APOPT Solver

 ----------------------------------------------


 Iter    Objective  Convergence

    0  9.81590E+01  1.00000E+00

    1  7.62224E+01  4.00000E-10

    2  7.62078E+01  1.10674E-02

    3  7.62078E+01  1.00000E-10

    4  7.62078E+01  8.32667E-17

    5  7.62078E+01  8.32667E-17

 Successful solution


 ---------------------------------------------------

 Solver         :  APOPT (v1.0)

 Solution time  :  0.5382 sec

 Objective      :  76.20778997271815

 Successful solution

 ---------------------------------------------------

某些求解器(如 IPOPT)沒(méi)有可從 API 輕松獲得的迭代,因此它們始終報(bào)告為零。對(duì)于 APOPT,摘要列表是[76.207789973, 5, 0.5253, 1]. 時(shí)序和函數(shù)調(diào)用報(bào)告在求解器摘要之后。


Timer #     1       0.70/       1 =       0.70 Total system time

Timer #     2       0.54/       1 =       0.54 Total solve time

Timer #     3       0.05/       9 =       0.01 Objective Calc: apm_p

Timer #     4       0.00/       5 =       0.00 Objective Grad: apm_g

Timer #     5       0.02/       9 =       0.00 Constraint Calc: apm_c

Timer #     6       0.00/       0 =       0.00 Sparsity: apm_s

Timer #     7       0.00/       0 =       0.00 1st Deriv #1: apm_a1

Timer #     8       0.00/       5 =       0.00 1st Deriv #2: apm_a2

Timer #     9       0.02/     200 =       0.00 Custom Init: apm_custom_init

Timer #    10       0.00/     200 =       0.00 Mode: apm_node_res::case 0

Timer #    11       0.00/     600 =       0.00 Mode: apm_node_res::case 1

Timer #    12       0.00/     200 =       0.00 Mode: apm_node_res::case 2

Timer #    13       0.00/     400 =       0.00 Mode: apm_node_res::case 3

Timer #    14       0.00/    4800 =       0.00 Mode: apm_node_res::case 4

Timer #    15       0.00/    2000 =       0.00 Mode: apm_node_res::case 5

Timer #    16       0.00/       0 =       0.00 Mode: apm_node_res::case 6

Timer #    17       0.00/       5 =       0.00 Base 1st Deriv: apm_jacobian

Timer #    18       0.02/       5 =       0.00 Base 1st Deriv: apm_condensed_jacobian

Timer #    19       0.00/       1 =       0.00 Non-zeros: apm_nnz

Timer #    20       0.00/       0 =       0.00 Count: Division by zero

Timer #    21       0.00/       0 =       0.00 Count: Argument of LOG10 negative

Timer #    22       0.00/       0 =       0.00 Count: Argument of LOG negative

Timer #    23       0.00/       0 =       0.00 Count: Argument of SQRT negative

Timer #    24       0.00/       0 =       0.00 Count: Argument of ASIN illegal

Timer #    25       0.00/       0 =       0.00 Count: Argument of ACOS illegal

Timer #    26       0.00/       1 =       0.00 Extract sparsity: apm_sparsity

Timer #    27       0.00/      17 =       0.00 Variable ordering: apm_var_order

Timer #    28       0.00/       1 =       0.00 Condensed sparsity

Timer #    29       0.00/       0 =       0.00 Hessian Non-zeros

Timer #    30       0.00/       3 =       0.00 Differentials

Timer #    31       0.00/       0 =       0.00 Hessian Calculation

Timer #    32       0.00/       0 =       0.00 Extract Hessian

Timer #    33       0.00/       1 =       0.00 Base 1st Deriv: apm_jac_order

Timer #    34       0.06/       1 =       0.06 Solver Setup

Timer #    35       0.40/       1 =       0.40 Solver Solution

Timer #    36       0.00/      23 =       0.00 Number of Variables

Timer #    37       0.00/      12 =       0.00 Number of Equations

Timer #    38       0.05/      17 =       0.00 File Read/Write

Timer #    39       0.00/       1 =       0.00 Dynamic Init A

Timer #    40       0.02/       1 =       0.02 Dynamic Init B

Timer #    41       0.02/       1 =       0.02 Dynamic Init C

Timer #    42       0.00/       1 =       0.00 Init: Read APM File

Timer #    43       0.00/       1 =       0.00 Init: Parse Constants

Timer #    44       0.00/       1 =       0.00 Init: Model Sizing

Timer #    45       0.00/       1 =       0.00 Init: Allocate Memory

Timer #    46       0.00/       1 =       0.00 Init: Parse Model

Timer #    47       0.00/       1 =       0.00 Init: Check for Duplicates

Timer #    48       0.00/       1 =       0.00 Init: Compile Equations

Timer #    49       0.00/       1 =       0.00 Init: Check Uninitialized

Timer #    50       0.00/     205 =       0.00 Evaluate Expression Once

Timer #    51       0.00/       0 =       0.00 Sensitivity Analysis: LU Factorization

Timer #    52       0.00/       0 =       0.00 Sensitivity Analysis: Gauss Elimination

Timer #    53       0.00/       0 =       0.00 Sensitivity Analysis: Total Time

計(jì)時(shí)器 3、4 和 5 可能與您的問(wèn)題最相關(guān)。它們是目標(biāo)函數(shù)請(qǐng)求、一階導(dǎo)數(shù)請(qǐng)求和約束評(píng)估請(qǐng)求。



查看完整回答
反對(duì) 回復(fù) 2022-12-20
  • 1 回答
  • 0 關(guān)注
  • 108 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)