Skip to content

Commit 486f369

Browse files
Merge pull request #80 from holgerteichgraeber/Float64
Float64 instead of AbstractFloat and testing added
2 parents f2965e4 + aacef5d commit 486f369

15 files changed

+112
-51
lines changed

.travis.yml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,19 @@ after_success:
1313

1414
jobs:
1515
include:
16-
- stage: "Documentation"
16+
- stage: "Testing"
1717
julia: 1.0
1818
os: linux
1919
script:
20-
- julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
21-
- julia --project=docs/ docs/make.jl
20+
- julia --project=test/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
21+
- julia --project=test/ test/clustering.jl
22+
- julia --project=test/ test/capacityexpansion.jl
2223
after_success:
23-
- stage: "Testing"
24+
- stage: "Documentation"
2425
julia: 1.0
2526
os: linux
2627
script:
27-
- julia --project=test/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
28-
- julia --project=test/ test/clustering.jl
28+
- julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
29+
- julia --project=docs/ docs/make.jl
2930
after_success:
3031
services: docker

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ keywords = ["clustering", "JuMP", "optimization"]
44
license = "MIT"
55
desc = "julia implementation of using different clustering methods for finding representative periods for the optimization of energy systems"
66
author = ["Holger Teichgraeber"]
7-
version = "0.3.3"
7+
version = "0.3.4"
88

99
[deps]
1010
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"

examples/workflow_introduction.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ ts_input_data = load_timeseries_data(data_path; T=24, years=[2016])
1414

1515
#= ClustData
1616
How the struct is setup:
17-
ClustData{region::String,K::Int,T::Int,data::Dict{String,Array},weights::Array{AbstractFloat},mean::Dict{String,Array},sdv::Dict{String,Array}} <: TSData
17+
ClustData{region::String,K::Int,T::Int,data::Dict{String,Array},weights::Array{Float64},mean::Dict{String,Array},sdv::Dict{String,Array}} <: TSData
1818
-region: specifies region data belongs to
1919
-K: number of periods
2020
-T: time steps per period

src/clustering/attribute_weighting.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
"""
2-
function attribute_weighting(data::ClustData,attribute_weights::Dict{String,AbstractFloat})
2+
function attribute_weighting(data::ClustData,attribute_weights::Dict{String,Float64})
33
44
apply the different attribute weights based on the dictionary entry for each tech or exact name
55
"""
66
function attribute_weighting(data::ClustData,
7-
attribute_weights::Dict{String,AbstractFloat}
7+
attribute_weights::Dict{String,Float64}
88
)
99
for name in keys(data.data)
1010
tech=split(name,"-")[1]

src/clustering/exact_kmedoids.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
"Holds results of kmedoids run"
44
mutable struct kmedoidsResult
5-
medoids::Array{AbstractFloat}
5+
medoids::Array{Float64}
66
assignments::Array{Int}
7-
totalcost::AbstractFloat
7+
totalcost::Float64
88
end
99

1010

1111
"""
1212
kmedoids_exact(
13-
data::Array{AbstractFloat},
13+
data::Array{Float64},
1414
nclust::Int,
1515
_dist::SemiMetric = SqEuclidean(),
1616
env::Any;
@@ -21,7 +21,7 @@ Performs the exact kmedoids algorithm as in Kotzur et al, 2017
2121
optimizer=Gurobi.Optimizer
2222
"""
2323
function kmedoids_exact(
24-
data::Array{AbstractFloat},
24+
data::Array{Float64},
2525
nclust::Int,
2626
optimizer::DataType;
2727
_dist::SemiMetric = SqEuclidean(),

src/clustering/extreme_vals.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ function simple_extr_val_ident(data::ClustData,
6767
end
6868

6969
"""
70-
simple_extr_val_ident(data::Array{AbstractFloat};extremum="max",peak_def="absolute")
70+
simple_extr_val_ident(data::Array{Float64};extremum="max",peak_def="absolute")
7171
identifies a single simple extreme period from the data and returns column index of extreme period
7272
- `data_type`: any attribute from the attributes contained within *data*
7373
- `extremum`: "min" or "max"

src/clustering/intraperiod_segmentation.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ function intraperiod_segmentation(data_merged::ClustDataMerged;
2828
end
2929

3030
"""
31-
run_clust_segmentation(period::Array{AbstractFloat,2};n_seg::Int=24,iterations::Int=300,norm_scope::String="full")
31+
run_clust_segmentation(period::Array{Float64,2};n_seg::Int=24,iterations::Int=300,norm_scope::String="full")
3232
!!! Not yet proven implementation of segmentation introduced by Bahl et al. 2018
3333
"""
34-
function run_clust_segmentation(period::Array{AbstractFloat,2};
34+
function run_clust_segmentation(period::Array{Float64,2};
3535
n_seg::Int=24,
3636
iterations::Int=300,
3737
norm_scope::String="full")

src/clustering/run_clust.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
"""
3-
run_clust(data::ClustData;norm_op::String="zscore",norm_scope::String="full",method::String="kmeans",representation::String="centroid",n_clust::Int=5,n_init::Int=100,iterations::Int=300,save::String="",attribute_weights::Dict{String,AbstractFloat}=Dict{String,AbstractFloat}(),get_all_clust_results::Bool=false,kwargs...)
3+
run_clust(data::ClustData;norm_op::String="zscore",norm_scope::String="full",method::String="kmeans",representation::String="centroid",n_clust::Int=5,n_init::Int=100,iterations::Int=300,save::String="",attribute_weights::Dict{String,Float64}=Dict{String,Float64}(),get_all_clust_results::Bool=false,kwargs...)
44
norm_op: "zscore", "01"(not implemented yet)
55
norm_scope: "full","sequence","hourly"
66
method: "kmeans","kmedoids","kmedoids_exact","hierarchical"
@@ -15,7 +15,7 @@ function run_clust(data::ClustData;
1515
n_seg::Int=data.T,
1616
n_init::Int=100,
1717
iterations::Int=300,
18-
attribute_weights::Dict{String,AbstractFloat}=Dict{String,AbstractFloat}(),
18+
attribute_weights::Dict{String,Float64}=Dict{String,Float64}(),
1919
save::String="",#QUESTION dead?
2020
get_all_clust_results::Bool=false,
2121
kwargs...
@@ -78,10 +78,10 @@ function run_clust(data_norm_merged::ClustDataMerged,
7878
orig_k_ids::Array{Int,1}=Array{Int,1}(),
7979
kwargs...)
8080
# initialize data arrays
81-
centers = Array{Array{AbstractFloat},1}(undef,n_init)
81+
centers = Array{Array{Float64},1}(undef,n_init)
8282
clustids = Array{Array{Int,1},1}(undef,n_init)
83-
weights = Array{Array{AbstractFloat},1}(undef,n_init)
84-
cost = Array{AbstractFloat,1}(undef,n_init)
83+
weights = Array{Array{Float64},1}(undef,n_init)
84+
cost = Array{Float64,1}(undef,n_init)
8585
iter = Array{Int,1}(undef,n_init)
8686

8787
# clustering
@@ -346,7 +346,7 @@ end
346346
Helper function to run run_clust_hierarchical_centroids and run_clust_hierarchical_medoid
347347
"""
348348
function run_clust_hierarchical(
349-
data::Array{AbstractFloat,2},
349+
data::Array{Float64,2},
350350
n_clust::Int,
351351
iterations::Int;
352352
_dist::SemiMetric = SqEuclidean()

src/clustering/shape_based/cluster_gen_dbaclust_parallel.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ writetable(joinpath("outfiles",string("parameters_dtw_",region,".txt")),df)
6464

6565
# Function that can be an input to pmap
6666

67-
@everywhere function dbac_par_sc(n_clust::Int,i::Int,rad_sc::Int,seq::Array{AbstractFloat,2},n_init::Int,iterations::Int,inner_iterations::Int) # function to use with pmap to parallelize sc band calculation
67+
@everywhere function dbac_par_sc(n_clust::Int,i::Int,rad_sc::Int,seq::Array{Float64,2},n_init::Int,iterations::Int,inner_iterations::Int) # function to use with pmap to parallelize sc band calculation
6868

6969
rmin,rmax=sakoe_chiba_band(rad_sc,24)
7070

src/utils/datastructs.jl

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ struct FullInputData <: TSData
1313
end
1414

1515
"""
16-
ClustData{region::String,K::Int,T::Int,data::Dict{String,Array},weights::Array{AbstractFloat,2},mean::Dict{String,Array},sdv::Dict{String,Array},delta_t::Array{AbstractFloat,2},k_ids::Array{Int}} <: TSData
16+
ClustData{region::String,K::Int,T::Int,data::Dict{String,Array},weights::Array{Float64,2},mean::Dict{String,Array},sdv::Dict{String,Array},delta_t::Array{Float64,2},k_ids::Array{Int}} <: TSData
1717
- region: optional information to specify the region data belongs to
1818
- K: number of periods
1919
- T: time steps per period
@@ -30,10 +30,10 @@ struct ClustData <: TSData
3030
K::Int
3131
T::Int
3232
data::Dict{String,Array}
33-
weights::Array{AbstractFloat}
33+
weights::Array{Float64}
3434
mean::Dict{String,Array}
3535
sdv::Dict{String,Array}
36-
delta_t::Array{AbstractFloat,2}
36+
delta_t::Array{Float64,2}
3737
k_ids::Array{Int}
3838
end
3939

@@ -45,24 +45,24 @@ struct ClustDataMerged <: TSData
4545
T::Int
4646
data::Array
4747
data_type::Array{String}
48-
weights::Array{AbstractFloat}
48+
weights::Array{Float64}
4949
mean::Dict{String,Array}
5050
sdv::Dict{String,Array}
51-
delta_t::Array{AbstractFloat,2}
51+
delta_t::Array{Float64,2}
5252
k_ids::Array{Int}
5353
end
5454

5555
"ClustResultAll"
5656
struct ClustResultAll <: ClustResult
5757
best_results::ClustData
5858
best_ids::Array{Int,1}
59-
best_cost::AbstractFloat
59+
best_cost::Float64
6060
data_type::Array{String}
6161
clust_config::Dict{String,Any}
62-
centers::Array{Array{AbstractFloat},1}
63-
weights::Array{Array{AbstractFloat},1}
62+
centers::Array{Array{Float64},1}
63+
weights::Array{Array{Float64},1}
6464
clustids::Array{Array{Int,1},1}
65-
cost::Array{AbstractFloat,1}
65+
cost::Array{Float64,1}
6666
iter::Array{Int,1}
6767
end
6868

@@ -71,7 +71,7 @@ end
7171
struct ClustResultBest <: ClustResult
7272
best_results::ClustData
7373
best_ids::Array{Int,1}
74-
best_cost::AbstractFloat
74+
best_cost::Float64
7575
data_type::Array{String}
7676
clust_config::Dict{String,Any}
7777
end
@@ -149,10 +149,10 @@ end
149149
el_demand::Array=[],
150150
solar::Array=[],
151151
wind::Array=[],
152-
weights::Array{AbstractFloat}=ones(K),
152+
weights::Array{Float64}=ones(K),
153153
mean::Dict{String,Array}=Dict{String,Array}(),
154154
sdv::Dict{String,Array}=Dict{String,Array}(),
155-
delta_t::Array{AbstractFloat,2}=ones(T,K),
155+
delta_t::Array{Float64,2}=ones(T,K),
156156
k_ids::Array{Int,1}=collect(1:K)
157157
)
158158
constructor 1 for ClustData: provide data individually
@@ -165,10 +165,10 @@ function ClustData(region::String,
165165
el_demand::Array=[],
166166
solar::Array=[],
167167
wind::Array=[],
168-
weights::Array{AbstractFloat}=ones(K),
168+
weights::Array{Float64}=ones(K),
169169
mean::Dict{String,Array}=Dict{String,Array}(),
170170
sdv::Dict{String,Array}=Dict{String,Array}(),
171-
delta_t::Array{AbstractFloat,2}=ones(T,K),
171+
delta_t::Array{Float64,2}=ones(T,K),
172172
k_ids::Array{Int,1}=collect(1:K)
173173
)
174174
dt = Dict{String,Array}()
@@ -212,8 +212,8 @@ end
212212
K::Int,
213213
T::Int,
214214
data::Dict{String,Array},
215-
weights::Array{AbstractFloat},
216-
delta_t::Array{AbstractFloat,2},
215+
weights::Array{Float64},
216+
delta_t::Array{Float64,2},
217217
k_ids::Array{Int,1};
218218
mean::Dict{String,Array}=Dict{String,Array}(),
219219
sdv::Dict{String,Array}=Dict{String,Array}()
@@ -225,8 +225,8 @@ function ClustData(region::String,
225225
K::Int,
226226
T::Int,
227227
data::Dict{String,Array},
228-
weights::Array{AbstractFloat},
229-
delta_t::Array{AbstractFloat,2},
228+
weights::Array{Float64},
229+
delta_t::Array{Float64,2},
230230
k_ids::Array{Int,1};
231231
mean::Dict{String,Array}=Dict{String,Array}(),
232232
sdv::Dict{String,Array}=Dict{String,Array}()
@@ -278,9 +278,9 @@ end
278278
T::Int,
279279
data::Array,
280280
data_type::Array{String},
281-
weights::Array{AbstractFloat},
281+
weights::Array{Float64},
282282
k_ids::Array{Int,1};
283-
delta_t::Array{AbstractFloat,2}=ones(T,K),
283+
delta_t::Array{Float64,2}=ones(T,K),
284284
mean::Dict{String,Array}=Dict{String,Array}(),
285285
sdv::Dict{String,Array}=Dict{String,Array}()
286286
)
@@ -292,9 +292,9 @@ function ClustDataMerged(region::String,
292292
T::Int,
293293
data::Array,
294294
data_type::Array{String},
295-
weights::Array{AbstractFloat},
295+
weights::Array{Float64},
296296
k_ids::Array{Int,1};
297-
delta_t::Array{AbstractFloat,2}=ones(T,K),
297+
delta_t::Array{Float64,2}=ones(T,K),
298298
mean::Dict{String,Array}=Dict{String,Array}(),
299299
sdv::Dict{String,Array}=Dict{String,Array}()
300300
)

0 commit comments

Comments
 (0)