Chứng minh rằng kích thước bước thời gian đủ nhỏ trong một mã với lựa chọn kích thước bước tự động


8

Gần đây tôi đã thừa hưởng một khối lớn mã di sản giải quyết một vấn đề rất khó khăn, thoáng qua. Tôi muốn chứng minh rằng kích thước bước không gian và thời gian đủ nhỏ để bản chất định tính của giải pháp tính toán sẽ không thay đổi nếu chúng bị giảm. Nói cách khác, tôi muốn chỉ ra rằng giải pháp được "hội tụ" theo nghĩa định tính. Vì tôi có thể thiết lập kích thước lưới không gian một cách rõ ràng, nên phần đó rất đơn giản. Tuy nhiên, vì mã sử dụng điều khiển kích thước bước thời gian tự động, tôi không thể đặt kích thước bước thời gian trực tiếp.

Thuật toán thay đổi bước thời gian giữa hai giới hạn dựa trên số lần lặp jacobian cần thiết để đạt được dung sai lỗi trong các bước thời gian cuối cùng . Việc nó sử dụng phép lặp jacobian làm cho tôi khá chắc chắn rằng đó là một loại sơ đồ ngầm, nhưng tôi không thể hoàn toàn chắc chắn. Nó không giải thích cho lỗi mà nó gặp trong bước thời gian hiện tại, điều này dẫn đến việc nó chạy đến giới hạn lặp lại (có thể hàng chục lần trong suốt vài nghìn bước thời gian, hầu như luôn luôn trong các phần năng động nhất của mô phỏng). Các hoạt động hiện tại tôi đang hoàn thành Tôi đang thiết lập các giới hạn bước hai bậc rưỡi cách nhau ( đến ). 10 - 13 5 10 - 11n101351011

Trong các lần chạy, tôi có quyền kiểm soát các giới hạn bước thời gian, số bước thời gian trong quá khứ mà nó xem xét để chọn bước thời gian hiện tại, thay đổi tối đa trong bước thời gian (tỷ lệ), số lần lặp mục tiêu của jacobian, số lần lặp tối đa và lỗi bị ràng buộc. Tôi muốn nếu ai đó có thể đưa tôi đi đúng hướng để phân tích sự độc lập theo thời gian, hoặc ít nhất là tìm ra thuật toán nào được sử dụng.


Bạn đang nói rằng bạn nghĩ rằng sẽ dễ dàng hơn để thiết kế thuật toán bước thời gian hơn là chỉ đọc mã?
David Ketcheson

mã này có khoảng 50 nghìn dòng fortran được viết trong 20 năm qua, vì vậy việc tìm kiếm các chi tiết của vòng lặp chính là không tầm thường. Tôi tin rằng đó là một phương pháp ngầm, đủ thông tin cho mục đích của tôi. Tôi quan tâm nhiều hơn đến những gì tôi cần thay đổi trong các lần chạy riêng biệt để xác định rằng bước thời gian của tôi là đủ nhỏ.
Godric Seer

Tôi đã cố gắng làm rõ những gì đang được hỏi; xin vui lòng sửa nó nếu tôi giải thích sai. Lưu ý rằng giải pháp không thể theo nghĩa đen là "độc lập bước thời gian", vì các lỗi cục bộ sẽ luôn phụ thuộc vào bước thời gian. Bạn chỉ có thể hy vọng rằng các lỗi đủ nhỏ cho mục đích của bạn.
David Ketcheson

Câu trả lời:


5

Mục đích của ước tính lỗi tự động và kiểm soát kích thước bước là để giải phóng bạn khỏi vấn đề xác định thủ công kích thước bước đủ nhỏ là gì. Vì vậy, câu hỏi của bạn giống như hỏi "ai đó đã cho tôi chiếc xe số tự động này, làm thế nào tôi có thể biết tôi đang sử dụng thiết bị gì?" Vấn đề là bạn không cần phải biết. Tất nhiên, nếu đường truyền bị lỗi, thì bạn có thể cần phải tháo nó ra và sửa nó, nhưng đó là một vấn đề lớn hơn nhiều.

Trong trường hợp của bạn, thông thường cách tiếp cận đúng là xác định loại lỗi nào được chấp nhận và áp dụng điều đó thông qua điều khiển kích thước bước tự động. Điều này không hoàn hảo vì kiểm soát lỗi theo nghĩa này thường chỉ là kiểm soát lỗi cục bộ , do đó bạn không trực tiếp kiểm soát lỗi toàn cầu, đây là điều bạn có thể quan tâm.

Một điều bạn có thể dễ dàng làm nếu bạn nghi ngờ, là chạy mô phỏng với một chuỗi dung sai lỗi ngày càng chặt chẽ (tức là nhỏ). Khi giải pháp có vẻ không nhạy cảm (trong bất kỳ số liệu nào của bạn) để giảm dung sai, bạn có thể dừng lại.

Phụ lục : Liên quan đến vấn đề giới hạn lặp tối đa đang đạt được (dẫn đến lỗi cục bộ vượt quá dung sai quy định), tôi đề nghị như sau.

Rõ ràng mã nghĩ rằng nếu nó vượt quá số lần lặp tối đa, điều đúng đắn cần làm là chấp nhận bước này. Tôi sẽ nói đó là điều sai. Một cách tiếp cận tốt hơn là từ chối bước và bắt đầu lại bước đó với kích thước bước giảm. Tất nhiên, có nguy cơ bước bị giảm xuống dưới kích thước bước tối thiểu. Trong trường hợp đó, điều đúng đắn là hủy bỏ mô phỏng. Nhưng nếu bạn tin rằng một giải pháp sai thì tốt hơn không có giải pháp nào, bạn có thể chấp nhận bước này và tiếp tục nếu cả hai điều kiện được đáp ứng: đạt được kích thước bước tối thiểu vượt quá số lần lặp tối đa.

Trong một mã được thiết kế tốt, việc thực hiện các loại thay đổi này là không đáng kể, nhưng trong một mã tùy ý, nó có thể khó tùy ý.


Đoạn cuối là đoạn quan trọng theo quan điểm thực tế. Chế độ tiệm cận đạt được một khi âm mưu của các đặc điểm giải pháp liên quan chống lại dung sai lỗi được chỉ định có vẻ đủ thường xuyên.
Arnold Neumaier

107102

Tôi chỉ chú ý đến phần phụ lục. Mô tả của bạn về những gì mã thực sự đồng ý với những gì tôi thấy từ logfiles. Hy vọng sự thay đổi mà bạn đề xuất là có thể mà không quá đau đầu.
Godric Seer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.