You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is my code. The first task from the tutorial "Brachistochrona".
using NLOptControl
using DataFrames, IndexedTables
using StatsPlots
using CSV
X0=[0.0,0.0,0.0]
XF=[2.,-2.,NaN]
n=define(numStates=3,numControls=1,X0=X0,XF=XF,XL=[0.0,-2.,NaN],XU=[2.,0.,NaN])
states!(n,[:x,:y,:v],descriptions=["x(t)","y(t)","v(t)"]);
controls!(n,[:u],descriptions=["u(t)"]);
typeof(n.r.ocp.x)
typeof(n.r.ocp.u)
dx=Array{Expr}(undef,3);
dx[1] = :(v[j]*sin(u[j]))
dx[2] = :(-v[j]cos(u[j]))
dx[3] = :(9.81cos(u[j]))
dynamics!(n,dx)
typeof(n.r.ocp.x)
typeof(n.r.ocp.u)
XX = 0.5
XY = -1.5
x_p = :(x[j])
y_p = :(y[j])
constraints!(n, [:((($x_p - $XX)^2 + ($y_p - $XY)^2) - 0.55 >= 0)])
configure!(n;(:Nck=>[100]),(:finalTimeDV=>true));
@NLobjective(n.ocp.mdl,Min,n.ocp.tf)
n.s.ocp.evalCostates = true
optimize!(n);
using Plots
allPlots(n)
st=statePlot(n,1,1,2)
df = n.r.ocp.dfs #записали путь до дата фрейма в переменную df
df[1][:c] = @. (df[1][:x] ^2 + df[1][:y] ^2) #записали новый столбец "c" в наш дата фрейм @show df
df_table = convert(Matrix, df[1][:1:6]) #перевели наш дата фрейм в массив и положили в новую переменную "df_table"
df2 = convert(DataFrame, df_table) #перевели наш массив в дата фрейм, чтоб получить новую переменную с дата фреймом(будем получать доступ к дата фрейму из одной переменной, не используя путь n.r.ocp.dfs) @show df2
b = @df df2 plot(:x1, [:x6], color = :red, size = (2500,2000), linewidth = 4, thickness_scaling = 4) #отрисовали наш график, используя настройки: цвет, размер графика, размер линии, размер надписей на графике
savefig("D:\Users\kolenov_va\Desktop\julia\Брахистохрона\5\results\c.png") #сохранили в нужную нам папку график в формате png
df[1][:d] = @. ((9.81 * df[1][:y]) + (df[1][:v] ^2 / 2)) @show df
df[1][:c] = @. (((df[1][:x] - XX)^2 + (df[1][:y] - XY)^2) - 0.55) @show df
m=JuMP.internalmodel(n.ocp.mdl);
c=MathProgBase.getconstrduals(m)
I want to use saveData(n) to save state, control, and costate (if applicable) data (about the collocation points and the Lagrange polynomial that runs through them). And also save the variables in which my Data Frames are written.
The text was updated successfully, but these errors were encountered:
This is my code. The first task from the tutorial "Brachistochrona".
using NLOptControl
using DataFrames, IndexedTables
using StatsPlots
using CSV
X0=[0.0,0.0,0.0]
XF=[2.,-2.,NaN]
n=define(numStates=3,numControls=1,X0=X0,XF=XF,XL=[0.0,-2.,NaN],XU=[2.,0.,NaN])
states!(n,[:x,:y,:v],descriptions=["x(t)","y(t)","v(t)"]);
controls!(n,[:u],descriptions=["u(t)"]);
typeof(n.r.ocp.x)
typeof(n.r.ocp.u)
dx=Array{Expr}(undef,3);
dx[1] = :(v[j]*sin(u[j]))
dx[2] = :(-v[j]cos(u[j]))
dx[3] = :(9.81cos(u[j]))
dynamics!(n,dx)
typeof(n.r.ocp.x)
typeof(n.r.ocp.u)
XX = 0.5
XY = -1.5
x_p = :(x[j])
y_p = :(y[j])
constraints!(n, [:((($x_p - $XX)^2 + ($y_p - $XY)^2) - 0.55 >= 0)])
configure!(n;(:Nck=>[100]),(:finalTimeDV=>true));
@NLobjective(n.ocp.mdl,Min,n.ocp.tf)
n.s.ocp.evalCostates = true
optimize!(n);
using Plots
allPlots(n)
st=statePlot(n,1,1,2)
df = n.r.ocp.dfs #записали путь до дата фрейма в переменную df
df[1][:c] = @. (df[1][:x] ^2 + df[1][:y] ^2) #записали новый столбец "c" в наш дата фрейм
@show df
df_table = convert(Matrix, df[1][:1:6]) #перевели наш дата фрейм в массив и положили в новую переменную "df_table"
df2 = convert(DataFrame, df_table) #перевели наш массив в дата фрейм, чтоб получить новую переменную с дата фреймом(будем получать доступ к дата фрейму из одной переменной, не используя путь n.r.ocp.dfs)
@show df2
b = @df df2 plot(:x1, [:x6], color = :red, size = (2500,2000), linewidth = 4, thickness_scaling = 4) #отрисовали наш график, используя настройки: цвет, размер графика, размер линии, размер надписей на графике
savefig("D:\Users\kolenov_va\Desktop\julia\Брахистохрона\5\results\c.png") #сохранили в нужную нам папку график в формате png
df[1][:d] = @. ((9.81 * df[1][:y]) + (df[1][:v] ^2 / 2))
@show df
df[1][:c] = @. (((df[1][:x] - XX)^2 + (df[1][:y] - XY)^2) - 0.55)
@show df
m=JuMP.internalmodel(n.ocp.mdl);
c=MathProgBase.getconstrduals(m)
I want to use saveData(n) to save state, control, and costate (if applicable) data (about the collocation points and the Lagrange polynomial that runs through them). And also save the variables in which my Data Frames are written.
The text was updated successfully, but these errors were encountered: