FuncDesigner er en åpen kildekode CAS (Computer & nbsp; Algebra System) skrevet i Python. Nedenfor er tre eksempler, slik at du kan forstå hvordan prosjektet fungerer.
Eksempel:
fra 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 + sin (b) * (1 + 2 * c.size + 3 * f2.size)
f = 2 * a * b * c + f1 * f2 + f3 + dot (a + c, b + c)
punkt = {a: 1, b: 2, c: [3, 4, 5]} # men du bør nok bruke numpy arrays i stedet for Python lister
print (f (punkt))
print (f.D (punkt))
print (f.D (punkt, a))
print (f.D (punkt, [b]))
print (f.D (punkt, fixedVars = [a, c]))
Forventet produksjon:
[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, -,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; * Du kan bruke "for" syklus i FuncDesigner kode
Eksempel:
fra 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 + sin (b) * (1 + 2 * c.size + 3 * f2.size)
F = sin (f2) * f3 + 1
M = 15
for jeg er innen rekkevidde (M): F = 0,5 * F + 0,4 * f3 * cos (f1 + 2 * f2)
punkt = {a: 1, b: 2, c: [3, 4, 5]} # men du bør nok bruke numpy arrays i stedet for Python lister
print (F (punkt))
print (F.D (punkt))
print (F.D (punkt, a))
print (F.D (punkt, [b]))
print (F.D (punkt, 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])}
Eksempel:
fra FuncDesigner import *
fra openopt import NLP
a, b, c = oovars ('a', 'b', 'c')
f = sum (a * [1, 2]) ** 2 + b + c ** 2 ** 2
startpunkt = {a: [100, 12], b: 2, c: 40} # men du bør nok bruke numpy arrays i stedet for Python lister
p = NLP (f, startpunkt)
p.constraints = [(2 * c + a-10) ** 2 <1,5 + 0,1 * b, (a-10) ** 28,9, a + b> [7,97999836, 7,8552538],
a <9, (c-2) ** 2 <1, b <-1,02, c> 1,01, ((b + c * log10 (a) .sum () - 1) ** 2) .eq (0) ]
r = p.solve ('ralg')
print r.xf
Forventet produksjon:
...
objFunValue: 717,75631 (gjennomførbart, maks begrensning = 7.44605e-07)
{A: array ([8,99999792, 8,87525277]), b: array ([- 1,01999971]), c: array ([1,0613562])}
Hva er nytt i dette slipp:
- Interalg fungerer nå mange ganger (noen ganger bestillinger) raskere på (muligens flerdimensjonale) integreringsproblemer (IP) og på noen optimaliseringsproblemer
- Legg til modellering tett (MI) (QC) QP i FuncDesigner (alfa-versjon, kan gjengivelse jobbe sakte ennå)
- Bugfix for CPLEX wrapper
- Noen forbedringer for FuncDesigner intervall analyse (og dermed interalg)
- Legg FuncDesigner intervall analyse for brunfarge i området (-pi / 2, pi / 2)
- Noen andre feilrettinger og forbedringer
- (proprietær) FuncDesigner stokastisk addon er nå tilgjengelig som frittstående PYC-fil, ble tilgjengelig for Python3 samt
Hva er nytt i versjon 0.45:
- Essential forbedringer for FuncDesigner intervall analyse (dermed påvirke interalg)
- Midlertidig walkaround for en alvorlig feil i FD automatisk differensiering kjernen på grunn av en feil i noen versjoner av Python eller NumPy, kan påvirke optimalisering problemer, inkludert (MI) LP, (MI) NLP, TSP etc
- Noen andre mindre feilrettinger og forbedringer.
Hva er nytt i versjon 0.43:
- interalg nå kan løse SNLE i andre modus (parameter dataHandling = & quot; rå & quot ;, før - bare & quot; sortert & quot;)
- Mange andre forbedringer for interalg
- Noen forbedringer for FuncDesigner kernel
- FuncDesigner ODE har nå tre argumenter i stedet for 4 (bakover inkompatibilitet!), F.eks {T: np.linspace (0,1,100)} eller bare np.linspace (0,1,100) hvis din ODE høyre side er tids independend
- FuncDesigner stokastisk addon nå kan håndtere noen problemer med gradient-basert NLP / NSP løsere
- Mange mindre forbedringer og noen feilrettinger
Hva er nytt i versjon 0.39:
- interalg: legg kategoriske variabler og generelle logiske begrensninger, mange andre forbedringer
- Noen forbedringer for automatisk differensiering
- DerApproximator og noen OpenOpt / FuncDesigner funksjonaliteten fungerer nå med PYPY
- Ny løser LSMR for tett / sparsom LLSP
- oovar konstruktører nå kan håndtere parametre lb og ub, f.eks a = oovar ('a', lb = -1, ub = [1,2,3]) (dette oovar bør ha størrelse 3) eller x = oovars (10, lb = -1, ub = 1)
- Ny FuncDesigner funksjon hstack, lignende syntaks til numpy.hstack, f.eks f = hstack ((a, b, c, d))
- Noen feilrettinger
Hva er nytt i versjon 0.36:
- Intervall analyse nå kan involvere min, max og 1-d monotone splines R - & gt; R av første og tredje orden
- Noen feilrettinger og forbedringer
Hva er nytt i versjon 0.21:
- Nye funksjoner: Integrasjon, Overs
- Noen hastighetsøkning for funksjoner evaluering, automatisk differensiering, optimalisering problemer med noen faste variabler
- Ny parameter useSparse for optimalisering probs og automatisk differensiering (noen ganger Autoselect fungerer for tidlig)
- Ny parameter exactShape for automatisk differensiering (hindrer flatterende operasjoner)
- Noen feilrettinger (for det meste wrt hjelp sparsom matriser) og kode opprydding
Hva er nytt i versjon 0.18:
- Legg FuncDesigner operatør ifThenElse
- Personlige toleranser for FuncDesigner begrensninger
- nå å definere likestilling begrensningen du kan bruke expression_1 == expression_2, muligens med toleranse også: (xpression_1 == expression_2) (tol = 0,0001)
- noen forbedringer i automatisk differensiering (ennå litt mer gjenstår å gjøres)
- & quot; negative toleranser & quot; for begrensninger (for å være streng med passende skalering). Men kanskje i fremtiden vil det bli erstattet av noe som myConstr (streng = True) for bedre forståelse.
- heter () markert som foreldet
Krav :
- Python
- NumPy
Kommentarer ikke funnet