Apakah ada pemecah bilangan bulat campuran non-linier di Julia?
Aug 20 2020
tolong bantu saya dalam kesalahan ini. ERROR: Solver does not support discrete variables.
misalnya pada kode berikut
using JuMP,CPUTime, Distributions, Ipopt
#parameters--------------------------------------------------------
sig=0.86;
#---------------------------------------------------------------------------
ALT=Model(solver=IpoptSolver());
# variables-----------------------------------------------------------------
f(x) = cdf(Normal(0, 1), x);
JuMP.register(ALT, :f, 1, f; autodiff = true);
@variable(ALT, h >= 0);
@variable(ALT, L >= 0);
@variable(ALT, n, Int);
#-------------------------------------------------------------------
@NLexpression(ALT,k7,1-f(L-sig*sqrt(n))+f(-L-sig*sqrt(n)));
#constraints--------------------------------------------------------
@NLconstraint(ALT, f(-L) <= 1/400);
#-------------------------------------------------------------------
@NLobjective(ALT, Min, 1/k7)
solve(ALT)
Bagaimana mungkin untuk memecahkan masalah tersebut? Terima kasih banyak.
Jawaban
2 PrzemyslawSzufel Aug 20 2020 at 04:10
Daftar lengkap pemecah JuMP dan kemampuannya sehubungan dengan jenis model tersedia di sini https://jump.dev/JuMP.jl/dev/installation/
Menurut daftar ini pemecah berikut mendukung pemrograman nonlinier campuran-bilangan bulat:
- KNITRO.jl
- Juniper.jl
- SCIP.jl
Ada juga yang perlu diperhatikan Alpine.jl
dari Los Alamos yang tidak disebutkan dalam dokumen JuMP.
Saya sarankan untuk mencoba memulai Juniper.jl
. Karena menggunakan heuristik dan pemecah lain yang Anda buat Model
dapat terlihat seperti ini:
m = Model(optimizer_with_attributes(Juniper.Optimizer, "nl_solver"=>optimizer_with_attributes(Ipopt.Optimizer, "print_level" => 0), "mip_solver"=>optimizer_with_attributes(Cbc.Optimizer, "logLevel" => 0)))
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'