# MethodError: no method matching UnitCommitmentData

**URL:** https://discourse.julialang.org/t/methoderror-no-method-matching-unitcommitmentdata/127253
**Category:** General Usage
**Created:** [March 22, 2025, 6:25am UTC](https://discourse.julialang.org/t/methoderror-no-method-matching-unitcommitmentdata/127253 "2025-03-22T06:25:43Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![daiyucan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/daiyucan/32/215943_2.png) [@daiyucan](https://discourse.julialang.org/u/daiyucan)
#### Post date: [March 22, 2025, 6:25am UTC](https://discourse.julialang.org/t/methoderror-no-method-matching-unitcommitmentdata/127253/1 "2025-03-22T06:25:43Z")

</div>

using JuMP  
using HiGHS

# 定义UnitCommitmentData结构

struct UnitCommitmentData  
demand::Float64  
pmin::Vector{Float64}  
pmax::Vector{Float64}  
cfix::Vector{Float64}  
cvar::Vector{Float64}  
end

# 构建Unit Commitment模型

function build\_uc\_model(data::Union{String, UnitCommitmentData})  
# 如果数据是文件路径，加载数据  
if typeof(data) == String  
# 这里假设读取数据的逻辑  
# data = read\_pkl\_gz(data)  
end

```
# 创建优化模型
model = Model(HiGHS.Optimizer)

# 获取数据大小
n = length(data.pmin)

# 定义决策变量
@variable(model, x[1:n], Bin) # 二元决策变量
@variable(model, y[1:n] >= 0) # 非负连续决策变量

# 定义目标函数
@objective(
    model,
    Min,
    sum(data.cfix[i] * x[i] + data.cvar[i] * y[i] for i in 1:n)
)

# 定义约束条件
for i in 1:n
    @constraint(model, y[i] <= data.pmax[i] * x[i]) # 最大功率约束
    @constraint(model, y[i] >= data.pmin[i] * x[i]) # 最小功率约束
end

# 定义需求约束
@constraint(model, sum(y) == data.demand)

return model

```

end

# 创建并优化模型

data = UnitCommitmentData(  
demand = 100.0,  
pmin = [10, 20, 30],  
pmax = [50, 60, 70],  
cfix = [700, 600, 500],  
cvar = [1.5, 2.0, 2.5]  
)

model = build\_uc\_model(data)  
optimize!(model)

# 输出优化结果

println("Objective value = ", objective\_value(model))  
println("x = ", value.(model[:x]))  
println("y = ", value.(model[:y]))

ERROR: MethodError: no method matching UnitCommitmentData(; demand::Float64, pmin::Vector{…}, pmax::Vector{…}, cfix::Vector  
{…}, cvar::Vector{…})  
The type `UnitCommitmentData` exists, but no method is defined for this combination of argument types when trying to construc  
t it.

Closest candidates are:  
UnitCommitmentData(::Float64, ::Vector{Float64}, ::Vector{Float64}, ::Vector{Float64}, ::Vector{Float64}) got unsupported k  
eyword arguments “demand”, “pmin”, “pmax”, “cfix”, “cvar”  
@ Main g:\UnitCommitment.jl-dev\test\_miplearn2.jl:6  
UnitCommitmentData(::Any, ::Any, ::Any, ::Any, ::Any) got unsupported keyword arguments “demand”, “pmin”, “pmax”, “cfix”, "  
cvar"  
@ Main g:\checkin - Copy - Copy - Copy\00-国重5.3\0\_MY\_STUDY\7.STUDY\_优化方法类\1-vscode-julia-UnitCommitment.jl-dev\UnitC  
ommitment.jl-dev\test\_miplearn2.jl:6

Stacktrace:  
[1] top-level scope  
@ g:\UnitCommitment.jl-dev\test\_miplearn2.jl:51  
Some type information was truncated. Use `show(err)` to see complete types.
