Vì vậy, tôi đang triển khai thuật toán heuristic và tôi đã thực hiện chức năng này.Hàm mật độ xác suất từ giấy, được triển khai bằng C++, không hoạt động như dự định
Tôi có một mảng từ 1 đến n (0 đến n-1 trên C, w/e). Tôi muốn chọn một số yếu tố tôi sẽ sao chép sang mảng khác. Với tham số y, (0 < y < = 1), tôi muốn phân phối các số có giá trị trung bình là (y * n). Điều đó có nghĩa là bất cứ khi nào tôi gọi hàm này, nó cho tôi một số, giữa 0 và n, và trung bình của những con số này là y * n.
Theo tác giả, "l" là một số ngẫu nhiên: 0 < l < n. Trên mã thử nghiệm của nó, nó hiện đang tạo 0 < = l < = n. Và tôi đã có mã đúng, nhưng tôi đang lộn xộn với điều này trong nhiều giờ, và tôi lười để mã hóa nó lại.
Vì vậy, tôi đã mã hóa phần đầu tiên của hàm, cho y < = 0.5 Tôi đặt y thành 0,2 và n đến 100. Điều đó có nghĩa là phải trả lại số từ 0 đến 99, với mức trung bình 20. kết quả không nằm trong khoảng từ 0 đến n, nhưng một số kết quả nổi. Và n lớn hơn, nhỏ hơn phao này.
Đây là mã kiểm tra C. "x" là tham số "l".
//hate how code tag works, it's not even working now
int n = 100;
float y = 0.2;
float n_copy;
for(int i = 0 ; i < 20 ; i++)
{
float x = (float) (rand()/(float)RAND_MAX); // 0 <= x <= 1
x = x * n; // 0 <= x <= n
float p1 = (1 - y)/(n*y);
float p2 = (1 - (x/n));
float exp = (1 - (2*y))/y;
p2 = pow(p2, exp);
n_copy = p1 * p2;
printf("%.5f\n", n_copy);
}
Và đây là một số kết quả (5 thập phân cắt ngắn):
0.03354
0.00484
0.00003
0.00029
0.00020
0.00028
0.00263
0.01619
0.00032
0.00000
0.03598
0.03975
0.00704
0.00176
0.00001
0.01333
0.03396
0.02795
0.00005
0.00860
bài viết là:
http://www.scribd.com/doc/3097936/cAS-The-Cunning-Ant-System
trang 6 và 7.
hoặc tìm kiếm " cAS: hệ thống kiến xảo quyệt "trên google.
Vì vậy, tôi đang làm gì sai? tôi không tin tác giả là sai, bởi vì có hơn 5 giấy tờ mô tả cùng chức năng này.
tất cả nội bộ của tôi cho bất kỳ ai giúp tôi. Điều này rất quan trọng đối với công việc của tôi.
Cảm ơn :)
Không sử dụng thẻ mã. SO là khủng khiếp, nó sử dụng 4 dấu cách để chỉ ra mã. Chỉ cần sao chép mã, sau đó chọn tất cả và sau đó nhấn nút 1010 để làm cho mã. –
Đó là vì hộp câu hỏi và câu trả lời sử dụng Markdown: http://daringfireball.net/projects/markdown/syntax – zwol