Tôi đã tự hỏi nếu có ai có bất kỳ đề xuất nào để giảm thiểu hàm, f (x, y), trong đó x và y là số nguyên. Tôi đã nghiên cứu rất nhiều kỹ thuật tối ưu hóa và tối ưu hóa, như BFGS và các kỹ thuật khác trong GSL, và những thứ trong số Công thức số. Cho đến nay, tôi đã thử implenting một vài đề án khác nhau. Các công trình đầu tiên bằng cách chọn hướng lớn nhất f (x + 1, y), f (x-1, y), f (x, y + 1), f (x, y-1), và làm theo hướng đó với giảm thiểu dòng. Tôi cũng đã thử sử dụng phương thức downhill simplex (Nelder-Mead). Cả hai phương pháp đều bị kẹt ở mức tối thiểu. Cả hai đều xuất hiện để làm việc trên các chức năng đơn giản, như tìm tối thiểu paraboloid, nhưng tôi nghĩ rằng cả hai, và đặc biệt là trước đây, được thiết kế cho các chức năng trong đó x và y có giá trị thực (tăng gấp đôi). Một vấn đề nữa là tôi cần gọi f (x, y) càng ít lần càng tốt. Nó nói chuyện với phần cứng bên ngoài, và mất một vài giây cho mỗi cuộc gọi. Bất kỳ ý tưởng cho điều này sẽ được đánh giá rất nhiều.Giảm thiểu f (x, y) trong đó x và y là số nguyên
Dưới đây là ví dụ về chức năng lỗi. Xin lỗi tôi đã không đăng bài này trước đây. Hàm này mất một vài giây để đánh giá. Ngoài ra, thông tin chúng tôi truy vấn từ thiết bị không thêm vào lỗi nếu nó thấp hơn giá trị mong muốn của chúng tôi, chỉ khi nó ở trên
double Error(x,y)
{
SetDeviceParams(x,y);
double a = QueryParamA();
double b = QueryParamB();
double c = QueryParamC();
double _fReturnable = 0;
if(a>=A_desired)
{
_fReturnable+=(A_desired-a)*(A_desired-a);
}
if(b>=B_desired)
{
_fReturnable+=(B_desired-b)*(B_desired-b);
}
if(c>=C_desired)
{
_fReturnable+=(C_desired-c)*(C_desired-c);
}
return Math.sqrt(_fReturnable)
}
Bất kỳ ý tưởng nào về lớp học và hành vi của hàm cũng sẽ được đánh giá cao. – EFraim
Câu hỏi thú vị. Hài hước như thế nào toán học đầu tiên trở nên khó khăn khi bạn bắt đầu tìm hiểu về phân số và số thực, và khó khăn một lần nữa một khi bạn loại bỏ chúng và quay trở lại các số tự nhiên. =) –
Bạn có biết phương trình cho f (x, y) không? – Noldorin