错误显示如下:
WARNING: deprecated syntax "abstract AbstractTransitionProbability" at D:\JuliaPro-0.6.2.2\pkgs-0.6.
2.2\v0.6\MDPs\src\transition.jl:16.
Use "abstract type AbstractTransitionProbability end" instead.
WARNING: deprecated syntax "abstract AbstractArrayTransitionProbability<:AbstractTransitionProbabili
ty" at D:\JuliaPro-0.6.2.2\pkgs-0.6.2.2\v0.6\MDPs\src\transition.jl:29.
Use "abstract type AbstractArrayTransitionProbability<:AbstractTransitionProbability end" instead.
WARNING: deprecated syntax "inner constructor ArrayTransitionProbability(...) around D:\JuliaPro-0.6
.2.2\pkgs-0.6.2.2\v0.6\MDPs\src\transition.jl:50".
Use "ArrayTransitionProbability{T}(...) where T" instead.
WARNING: deprecated syntax "abstract AbstractReward" at D:\JuliaPro-0.6.2.2\pkgs-0.6.2.2\v0.6\MDPs\s
rc\reward.jl:17.
Use "abstract type AbstractReward end" instead.
WARNING: deprecated syntax "abstract AbstractArrayReward<:AbstractReward" at D:\JuliaPro-0.6.2.2\pkg
s-0.6.2.2\v0.6\MDPs\src\reward.jl:19.
Use "abstract type AbstractArrayReward<:AbstractReward end" instead.
WARNING: deprecated syntax "inner constructor ArrayReward(...) around D:\JuliaPro-0.6.2.2\pkgs-0.6.2
.2\v0.6\MDPs\src\reward.jl:37".
Use "ArrayReward{T,N}(...) where {T,N}" instead.
WARNING: deprecated syntax "abstract AbstractQFunction" at D:\JuliaPro-0.6.2.2\pkgs-0.6.2.2\v0.6\MDP
s\src\qfunction.jl:26.
Use "abstract type AbstractQFunction end" instead.
WARNING: deprecated syntax "inner constructor VectorQFunction(...) around D:\JuliaPro-0.6.2.2\pkgs-0
.6.2.2\v0.6\MDPs\src\qfunction.jl:113".
Use "VectorQFunction{V,A}(...) where {V,A}" instead.
WARNING: Method definition isequal(MDPs.ArrayQFunction{T} where T<:Real, MDPs.ArrayQFunction{T} wher
e T<:Real) in module MDPs at D:\JuliaPro-0.6.2.2\pkgs-0.6.2.2\v0.6\MDPs\src\qfunction.jl:51 overwrit
ten at D:\JuliaPro-0.6.2.2\pkgs-0.6.2.2\v0.6\MDPs\src\qfunction.jl:138.
WARNING: deprecated syntax "abstract AbstractMDP" at D:\JuliaPro-0.6.2.2\pkgs-0.6.2.2\v0.6\MDPs\src\
mdp.jl:2.
Use "abstract type AbstractMDP end" instead.
ERROR: LoadError: LoadError: LoadError: LoadError: UndefVarError: FloatingPoint not defined
while loading D:\JuliaPro-0.6.2.2\pkgs-0.6.2.2\v0.6\MDPs\src\random.jl, in expression starting on li
ne 2
while loading D:\JuliaPro-0.6.2.2\pkgs-0.6.2.2\v0.6\MDPs\src\examples.jl, in expression starting on
line 11
while loading D:\JuliaPro-0.6.2.2\pkgs-0.6.2.2\v0.6\MDPs\src\MDPs.jl, in expression starting on line
59
while loading C:\Users\zhtrb\Desktop\LowRankMDP-master\mdps\MountainCar.jl, in expression starting o
n line 3
我这个是从github上找的代码,它里面也有一个MDPs,但是无法调用,所以我就Pkg.add("MDPs")
这个代码是Julia 0.3的我用的Julia0.6.22解释应该不会有什么问题吧
代码如下:
module MountainCar
using MDPs, PGFPlots
export state_space, action_space, transition, reward, simulate,
viz_policy, viz_trajectory
export XMIN, XMAX, VMIN, VMAX
# mdp
const MX = 50
const MV = 50
const N = 1000
# state
const XMIN = -1.2
const XMAX = 0.5
const VMIN = -0.07
const VMAX = 0.07
# action
const AMIN = -1.0
const AMAX = 1.0
# reward
const TERM_REWARD = 10
const NONTERM_REWARD = -1
# test
const T = 500
function state_space(mx::Int64=MX, mv::Int64=MV)
xs = linspace(XMIN, XMAX, mx)
vs = linspace(VMIN, VMAX, mv)
return RectangleGrid(xs, vs)
end # function state_space
function action_space(n::Int64=N)
return linspace(AMIN, AMAX, n)
end # function action_space
function transition(state::Vector{Float64}, action::Float64)
snext = zeros(length(state))
snext[2] = state[2] + 0.001 * action - 0.0025 * cos(3 * state[1])
snext[2] = clip(snext[2], VMIN, VMAX)
snext[1] = clip(state[1] + snext[2], XMIN, XMAX)
return snext
end # function transition
function clip(val::Float64, minval::Float64, maxval::Float64)
return min(maxval, max(minval, val))
end # function clip
function reward(state::Vector{Float64}, action::Float64)
if state[1] == XMAX
return TERM_REWARD
else
return NONTERM_REWARD
end # if
end # function reward
function simulate(mdp::MDP, policy::Policy, state::Vector{Float64})
trajectory = zeros(T, dimensions(mdp.S))
actions = zeros(T)
for t = 1:T
trajectory[t, :] = state
if state[1] == XMAX
trajectory = trajectory[1:t, :]
actions = actions[1:t - 1]
break
end # if
action = policy!(policy, get_belief(mdp, state))
state = mdp.transition(state, action)
actions[t] = action
end # for t
return trajectory, actions
end # function simulate
function viz_policy(mdp::MDP, policy::Policy)
function getmap(x::Float64, v::Float64)
return policy!(policy, get_belief(mdp, [x, v]))
end # function getmap
Axis([Plots.Image(getmap, (XMIN, XMAX), (VMIN, VMAX),
xbins = 250, ybins = 250,
colormap = ColorMaps.Named("RdBu"))],
width="14cm", height="14cm",
xlabel="position", ylabel="speed",
title="Policy heatmap")
end # function viz_policy
function viz_trajectory(trajectory::Matrix{Float64}, actions::Vector{Float64})
g = GroupPlot(2, 1, groupStyle="horizontal sep=1.5cm")
push!(g, Axis([Plots.Linear(trajectory[:, 1])],
width="12cm", height="12cm",
xlabel="time", ylabel="position",
title="position over time"))
push!(g, Axis([Plots.Linear(actions)],
width="12cm", height="12cm",
xlabel="time", ylabel="acceleration",
title="acceleration over time"))
g
end # function viz_trajectory
end # module
还有一个问题怎么去调用自己的模块呢,我是放在一个文件夹下面的。