FuncDesigner es un código abierto CAS (Computer & nbsp; Algebra System) escrito en Python. A continuación se presentan tres ejemplos, para que pueda entender cómo funciona el proyecto.
Ejemplo:
desde FuncDesigner import *
a, b, c = oovars ('a', 'b', 'c')
f1, f2 = sin (a) + cos (b) - log2 (c) + sqrt (b), sum (c) + c * cosh (b) / arctan (a) + c [0] * c [1] c + [-1] / (a * c.size)
f3 = f1 * f2 + 2 * a + sen (b) * (1 + 2 * 3 * + c.size f2.size)
f = 2 * a * b * f1 + c * f2 f3 + + punto (a + c, b + c)
punto = {a: 1, b 2, c: [3, 4, 5]} # Sin embargo, es mejor utilizar matrices numpy en lugar de las listas de Python
print (f (punto))
print (f.D (punto))
print (f.D (punto, a))
print (f.D (punto, [b]))
impresión (f.D (punto, fixedVars = [a, c]))
Resultados previstos:
[140.9337138 110.16255336 80.67870244]
{A: array ([69.75779959, 88.89020412, 109,93551537]), b: array ([- 23.10565554, -39,41138045, -59,08378522]),
c: array ([[6.19249888, 38.261221, 38.261221],
[29.68377935, -0.18961959, 29,68377935],
[23.03059873, 23.03059873, -6.22406763]])}
[69.75779959 88.89020412 109.93551537]
{B: array ([- 23.10565554, -39,41138045, -59,08378522])}
{B: array ([- 23.10565554, -39,41138045, -59,08378522])}
& Nbsp; * Usted puede usar "para" ciclo en el código FuncDesigner
Ejemplo:
desde FuncDesigner import *
a, b, c = oovars ('a', 'b', 'c')
f1, f2 = sin (a) + cos (b) - log2 (c) + sqrt (b), sum (c) + c * cosh (b) / arctan (a) + c [0] * c [1] c + [-1] / (a * c.size)
f3 = f1 * f2 + 2 * a + sen (b) * (1 + 2 * 3 * + c.size f2.size)
F = sin (f2) * f3 + 1
M = 15
for i in range (M): F = 0,5 * F + 0,4 * f3 * cos (f1 + 2 * f2)
punto = {a: 1, b 2, c: [3, 4, 5]} # Sin embargo, es mejor utilizar matrices numpy en lugar de las listas de Python
print (F (punto))
print (F.D (punto))
print (F.D (punto, a))
print (F.D (punto, [b]))
impresión (F.D (punto, fixedVars = [a, c]))
[4.63468686 0.30782902 1.21725266]
{A: array ([- 436,83015952, 204,25331181, 186,38788436]), b: array ([562,63390316, -273,23484496, -256.32464645]),
c: array ([[395,96975635, 167,24928464, 55,74976155],
& Nbsp; [-74,80518167, -129,34496329, -19,94804845],
& Nbsp; [-57,42472654, -45,93978123, -66,30049589]])}
[-436.83015952 204,25331181 186,38788436]
{B: array ([562,63390316, -273.23484496, -256,32464645])}
{B: array ([562,63390316, -273.23484496, -256,32464645])}
Ejemplo:
desde FuncDesigner import *
desde PNL importación openopt
a, b, c = oovars ('a', 'b', 'c')
f = suma (a * [1, 2]) ** 2 + b + c ** 2 ** 2
startPoint = {a: [100, 12], b 2, c: 40} # Sin embargo, es mejor utilizar matrices numpy en lugar de las listas de Python
p = PNL (f, startPoint)
p.constraints = [(2 * c + a-10) ** 2 <1,5 + 0,1 * b, (a-10) ** 28,9, a + b> [7.97999836, 7,8552538],
un <9, (c-2) ** 2 <1, b <-1,02, c> 1,01, ((b + c * log10 (a) .sum () - 1) ** 2) .EQ (0) ]
r = p.solve ('ralg')
r.xf impresión
Resultados previstos:
...
objFunValue: 717.75631 (factible, restricción max = 7.44605e-07)
{A: array ([8.99999792, 8.87525277]), b: array ([- 1.01999971]), c: array ([1,0613562])}
¿Qué hay de nuevo en este liberar:
- Interalg ahora trabaja muchas veces (a veces órdenes) más rápido en (posiblemente multidimensionales) problemas de integración (IP) y sobre algunos problemas de optimización
- Añadir modelado densa (MI) (QC) QP en FuncDesigner (alfa-versión, prestación puede trabajar lentamente aún)
- Solución de error para envoltura CPLEX
- Algunas mejoras para el análisis del intervalo FuncDesigner (y por lo tanto interalg)
- Añadir análisis de intervalos FuncDesigner para broncearse en rango (pi / 2, pi / 2)
- Algunas otras correcciones y mejoras
- (Propietario) FuncDesigner estocástico addon ahora está disponible como independiente pyc-archivo, se hizo disponible para python3 así
¿Cuál es nuevo en la versión 0.45:
- mejoras esenciales para el análisis del intervalo FuncDesigner (por lo tanto afectar interalg)
- walkaround temporal para un grave error en el kernel FD diferenciación automática debido a un error en algunas versiones de Python o NumPy, puede afectar a los problemas de optimización, incluyendo (MI) LP, (MI) PNL, TSP etc
- Algunas otras correcciones de errores y mejoras menores.
¿Qué hay de nuevo en la versión 0.43:
- interalg ahora puede resolver SNLE en segundo modo (parámetro dataHandling = & quot; & quot ;, prima antes - sólo & quot; ordenados & quot;)
- Muchas otras mejoras para interalg
- Algunas mejoras para kernel FuncDesigner
- ODE FuncDesigner ahora tiene 3 argumentos en lugar de 4 (incompatibilidad hacia atrás!), Por ejemplo, {T: np.linspace (0,1,100)} o mera np.linspace (0,1,100) si su lado derecho ODE es tiempo independend
- FuncDesigner estocástico addon ahora puede manejar algunos problemas con PNL basados en gradiente / solucionadores NSP
- Muchas pequeñas mejoras y algunas correcciones
¿Qué hay de nuevo en la versión 0.39:
- interalg: añadir variables categóricas y las limitaciones lógicas generales, muchos otros mejoras
- Algunas mejoras para la diferenciación automática
- DerApproximator y algunas funciones OpenOpt / FuncDesigner ahora trabaja con PyPy
- Nueva lsmr solucionador densa LLSP / ralo
- constructores oovar ahora pueden manejar parámetros libras y ub, por ejemplo, a = oovar ('a', libra = -1, ub = [1,2,3]) (este oovar debe tener el tamaño 3) o x = oovars (10, libra = -1, ub = 1)
- Nueva FuncDesigner función hstack, sintaxis similar a numpy.hstack, por ejemplo, f = hstack ((a, b, c, d))
- Algunas correcciones de errores
¿Qué hay de nuevo en la versión 0.36:
- Análisis de intervalo ahora puede implicar mínimo, máximo y 1-d estrías monótonas R - & gt; R de primera y tercera orden
- Algunas correcciones de errores y mejoras
¿Qué hay de nuevo en la versión 0.21:
- Nuevas características: Integración, Traductor
- Algunos aceleración para la evaluación funciones, la diferenciación automática, problemas de optimización con algunas variables fijas
- Nueva useSparse parámetro para hubieron problemas de optimización y diferenciación automática (a veces autoselect funciona prematuramente)
- Nueva exactShape parámetro para la diferenciación automática (evita operaciones halagadoras)
- Algunas correcciones de errores (en su mayoría WRT usando matrices dispersas) y código de limpieza
¿Qué hay de nuevo en la versión 0.18:
- Añadir operador FuncDesigner ifThenElse
- tolerancias personales para limitaciones FuncDesigner
- ahora para definir restricción de igualdad puede utilizar expresión_1 == expresión_2, posiblemente con la tolerancia, así: (xpression_1 == expresión_2) (tol = 0,0001)
- algunas mejoras en la diferenciación automática (aún un poco más queda por hacer)
- & quot; & quot tolerancias negativas; por limitaciones (que ser estricto con escala apropiado). Sin embargo, tal vez en el futuro, será reemplazado por algo como myConstr (estricta = True) para una mejor comprensión.
- nombre () marcado como obsoleto
Requisitos :
- Python
- NumPy
Comentarios que no se encuentran