- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道是否有人能够提出一些解决非线性优化问题的软件包的方法,而非线性优化问题可以为优化解决方案提供整数变量?问题是使具有相等约束的函数最小化,该函数受某些上下边界约束的约束。
我已经在R中使用了'nloptr'软件包来解决非线性优化问题,该问题效果很好,但现在想扩展该方法,使某些变量为整数。到目前为止,从我对nloptr的使用和理解来看,它只能返回连续的值,而不能返回整数变量以获得最佳解决方案。
我相信这类问题需要使用混合整数非线性编程来解决。
nloptr形式的问题的一个示例:
min f(x) (x-y)^2/y + (p-q)^2/q
so that (x-y)^2/y + (p-q)^2/q = 10.2
Ở đâu
x and p are positive integers not equal to 0
Và
y and q may or may not be positive integers not equal to 0
library('nloptr')
x1 <- c(50,25,20,15)
fn <- function(x) {
(((x[1] - x[2])^2)/x[2]) + (((x[3] - x[4])^2)/x[4])
}
heq <- function(x) {
fn(x)-10.2
}
lower_limit <- c(0,0,0,0)
upper_limit <- c(67.314, 78, 76.11, 86)
slsqp(x1, fn, lower = lower_limit, upper = upper_limit, hin = NULL, heq = heq, control = list(xtol_rel = 1e-8, check_derivatives = FALSE))
$par
[1] 46.74823 29.72770 18.93794 16.22137
$value
[1] 10.2
$iter
[1] 6
$convergence
[1] 4
$message
[1] "NLOPT_XTOL_REACHED: Optimization stopped because xtol_rel or xtol_abs (above) was reached."
1 Câu trả lời
这是一个示例,说明在没有更简单的目标函数的情况下不能与CVXR一起使用的情况。我怀疑即使有约束条件,问题也不是凸面的,因此需要替代方法。
#base example from https://cvxr.rbind.io/cvxr_examples/cvxr_gentle-intro/
#install.packages("CVXR")
library(CVXR)
#modified for Stackoverflow integer MIQP ####
#Solves, but terms not normalised by y and q respectively
# Variables minimized over
x <- Variable(1, integer=TRUE)
y <- Variable(1)
p <- Variable(1, integer=TRUE)
q <- Variable(1)
# Problem definition (terms not normalised by y and q respectively)
objective <- Minimize((x - y)^2 + (p - q)^2)
constraints <- list(x >= 0, y >= 0, p >= 0, q >= 0,
x <= 67.314, y <= 78, p <= 76.11, q <= 86)
prob2.1 <- Problem(objective, constraints)
# Problem solution
solution2.1 <- solve(prob2.1)
solution2.1$status
solution2.1$value
solution2.1$getValue(x)
solution2.1$getValue(y)
solution2.1$getValue(p)
solution2.1$getValue(q)
#modified for Stackoverflow integer NLP (not integer) ####
#Does not solve, not convex?
# Variables minimized over
x <- Variable(1)
y <- Variable(1)
p <- Variable(1)
q <- Variable(1)
# Problem definition
objective <- Minimize((x - y)^2/y + (p - q)^2/q)
constraints <- list(x >= 0, y >= 0, p >= 0, q >= 0,
x <= 67.314, y <= 78, p <= 76.11, q <= 86)
prob2.1 <- Problem(objective, constraints)
# Problem solution
solution2.1 <- solve(prob2.1, gp = TRUE)
solution2.1 <- solve(prob2.1, gp = FALSE)
# solution2.1$status
# solution2.1$value
# solution2.1$getValue(x)
# solution2.1$getValue(y)
# solution2.1$getValue(p)
# solution2.1$getValue(q)
#modified for Stackoverflow integer MINLP ####
#Does not solve
# Variables minimized over
x <- Variable(1, integer=TRUE)
y <- Variable(1)
p <- Variable(1, integer=TRUE)
q <- Variable(1)
# Problem definition
objective <- Minimize((x - y)^2/y + (p - q)^2/q)
constraints <- list(x >= 0, y >= 0, p >= 0, q >= 0,
x <= 67.314, y <= 78, p <= 76.11, q <= 86)
prob2.1 <- Problem(objective, constraints)
# Problem solution
solution2.1 <- solve(prob2.1, gp = TRUE)
solution2.1 <- solve(prob2.1, gp = FALSE)
# solution2.1$status
# solution2.1$value
# solution2.1$getValue(x)
# solution2.1$getValue(y)
# solution2.1$getValue(p)
# solution2.1$getValue(q)
#modified for Stackoverflow integer NLP (not integer) ####
#objective multiplied by y*q, Does not solve, not convex?
# Variables minimized over
x <- Variable(1)
y <- Variable(1)
p <- Variable(1)
q <- Variable(1)
# Problem definition
objective <- Minimize((x - y)^2*q + (p - q)^2*y)
constraints <- list(x >= 0, y >= 0, p >= 0, q >= 0,
x <= 67.314, y <= 78, p <= 76.11, q <= 86)
prob2.1 <- Problem(objective, constraints)
# Problem solution
solution2.1 <- solve(prob2.1, gp = TRUE)
solution2.1 <- solve(prob2.1, gp = FALSE)
# solution2.1$status
# solution2.1$value
# solution2.1$getValue(x)
# solution2.1$getValue(y)
# solution2.1$getValue(p)
# solution2.1$getValue(q)
关于r - R中具有整数变量的非线性优化/编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61047653/
Tôi đang cố gắng in một giá trị có kiểu timeval. Thực ra tôi có thể in nó nhưng tôi nhận được cảnh báo sau: Nhiều mã thông báo trong định dạng dòng này '%ld' yêu cầu loại 'long int' nhưng đối số 2 có loại 'struct timeval'
Tôi đang viết trình đầu cuối Unix của riêng mình và tôi gặp sự cố khi thực hiện lệnh: Đầu tiên, tôi nhận dữ liệu đầu vào của người dùng và lưu trữ vào bộ đệm, sau đó tôi tách các từ và lưu trữ chúng vào mảng argv[] của mình. Lệnh IE là "firefox" để khởi chạy tệp được lưu trữ trong
Tôi mới biết đến CUDA. Tôi có một câu hỏi liên quan đến một chương trình đơn giản và hy vọng ai đó có thể nhận ra lỗi của tôi. __toàn cục__ void ADD(float* A, float* B, float* C) { con
Tôi có một câu hỏi chung về lập trình CGI bằng C. Tôi sử dụng máy chủ web nhúng để xử lý giao diện web. Để thực hiện việc này, tôi đã lưu trữ một tệp HTML trên máy chủ. Bao gồm JavaScript và
**Tóm tắt: ** Trong thế giới mã hóa, có nhiều cách viết mang tính nghệ thuật, đây cũng có thể là động lực bên trong khiến một số lập trình viên theo đuổi sự nghiệp lập trình. Bài viết này được chia sẻ từ Cộng đồng Huawei Cloud "[Đồng sáng tạo cư dân đám mây] Sử dụng 4 loại nghệ thuật trong mã để cố gắng khơi dậy lại sự quan tâm của bạn đối với lập trình", tác giả: break
Tôi có một hàm có nhiệm vụ tạo một biến trong đối tượng cha. Điều tôi muốn là hàm này tạo ra biến ở cấp độ mà nó được gọi. createVariable testFunc() [1] "test" > testFunc2() [1]
Đoạn mã sau được sử dụng để thay thế nhiều khoảng trắng liên tiếp bằng 1 khoảng trắng. Mặc dù tôi đã làm được nhưng tôi vẫn bối rối về cách sử dụng dấu ngoặc nhọn. Điều này thực sự hoạt động tốt: #include #include int main() { int ch, la
Tôi đang cố gắng ghi một tập tin vào đĩa và sau đó tự động biên dịch lại tập tin đó. Thật không may, có vẻ như có điều gì đó không ổn và tôi nhận được thông báo lỗi mà tôi vẫn chưa hiểu (tôi là người mới bắt đầu học C :-). Nếu tôi biên dịch hello.c được tạo theo cách thủ công thì mọi thứ sẽ hoạt động tốt phải không? ! #bao gồm
Cách truyền giá trị con trỏ vào mảng cấu trúc; Ví dụ, trên txt tôi có: John Doe;xxxx@hotmail.com;214425532; Mã của tôi: typedef struct Person{
Tôi đã thử viết một số mã để lấy objectID và kết quả là 2B-06-01-04-01-82-31-01-03-01-01. Giá trị này có sai không? // Gửi yêu cầu SNMP SysObjectId
Xin chào, cảm ơn trước vì sự giúp đỡ của bạn, (lưu ý phần bình luận để hiểu rõ hơn: ví dụ, cột chi phí trong ví dụ bên dưới đã được thêm vào câu hỏi này; Simon đã cung cấp một câu trả lời tuyệt vời, nhưng bản thân cột chi phí không xuất hiện trong phản hồi dữ liệu của anh ấy, mặc dù hàm anh ấy cung cấp hoạt động với cột chi phí) Tôi
Tôi tự hỏi liệu có ai có thể gợi ý một số cách để tạo ra một gói phần mềm có thể xử lý các bài toán tối ưu hóa phi tuyến tính, trong đó tôi có thể cung cấp các biến số nguyên cho giải pháp tối ưu hóa không? Vấn đề là phải giảm thiểu một hàm có ràng buộc bằng nhau, tuân theo một số giới hạn trên và dưới. Tôi đã sử dụng 'n
Tôi là người mới bắt đầu học lập trình R và đang cố gắng thêm một cột vào ma trận có 50 cột. Cột mới này sẽ là giá trị trung bình của 10 giá trị đầu tiên trong hàng đó. randomMatrix <- generateMatrix(1,5000,100,
Tôi đọc trong cuốn sách "K&R II C Programming ANSI C" rằng ">>" và "0; nwords--) sum += *buf++; sum = (sum >>
Khi lựa chọn thả xuống thay đổi, tôi muốn: 1) hiển thị một số GUI trên toàn bộ trang web thông qua một div chặn lớp phủ 2) sau đó xử lý một số mã 3) sau đó ẩn lớp phủ. Vấn đề là khi tôi viết logic này trong hàm trình lắng nghe sự kiện, onC được thực thi
Tôi đang thiết kế một máy chủ REST JAX-RS sử dụng Clojure và RESTEasy. Theo tôi hiểu, các ứng dụng được viết bằng họ ngôn ngữ Lisp được xây dựng nhiều hơn dưới dạng "ngôn ngữ dành riêng cho miền" so với các ứng dụng được viết bằng ngôn ngữ mệnh lệnh "truyền thống".
Hiện tại tôi đang thực hiện sáng kiến xây dựng hệ thống giám sát chấm công thay thế. Hiện tại, biểu mẫu người dùng tôi thiết kế trông như thế này: Biểu mẫu người dùng Dấu thời gian Nó hoạt động như thế này: Nhân viên sẽ chọn loại dấu thời gian mà anh ấy/cô ấy sẽ sử dụng: Thời gian bắt đầu, Thời gian chờ, Lần đầu tiên
Tôi là một sinh viên đang cố gắng tự học lập trình, tìm kiếm sự trợ giúp từ các nguồn trực tuyến và những người như bạn. Tôi tìm thấy một bài tập trực tuyến để tạo một chương trình nhỏ để thực hiện việc này: Viết một chương trình đọc các số a và b (số nguyên dài) và liệt kê có bao nhiêu số nằm giữa a và b
Tôi đang cố viết một chương trình shell, khi được cung cấp một đối số, sẽ in ra tên chương trình và mọi từ lẻ trong đối số (tức là không phải các từ chẵn). Tuy nhiên, tôi không nhận được kết quả như mong đợi. Trong khi theo dõi chương trình của mình, tôi nhận thấy rằng mặc dù có những từ kỳ lạ (ví dụ: từ thứ 5, 5%
Tôi chỉ muốn biết liệu có API Java nào cho phép bạn điều khiển đèn LED trên vỏ máy tính để bàn/máy tính xách tay không? Hoặc nếu không thể thì liệu có thể không? Câu trả lời hay nhất Nếu ý bạn là đèn LED ở mặt trước cho biết trạng thái nguồn và trạng thái bận của ổ cứng thì tôi e là không
Tôi là một lập trình viên xuất sắc, rất giỏi!