Theo dòng phát triển của lịch sử, xã hội loài người tồn tại và phát triển song hành với quá trình sáng tạo không ngừng. Với khả năng sáng tạo vô tận, con người ngày càng đạt được những thành tựu vượt bậc và xây dựng nền văn minh vĩ đại cho xã hội loài người. Xã hội càng văn minh, yêu cầu khả tư duy sáng tạo càng tăng cao. Theo thống kê cho thấy các nước trên thế giới đã bắt đầu đào tạo cử nhân, thạc sỹ về chuyên ngành sáng tạo và đổi mới. Từ đó, ra đời các khóa học về “Phương pháp luận sáng tạo”. Giống như An.Tôlxtôi đã từng nói:” Trong con người vốn có những nguồn sáng tạo vô tận, nếu khác đi thì đã không thành người. Cần giải phóng và khơi thông chúng.”
Nói một cách ngắn gọn, “Phương pháp luận sáng tạo ”(PPLST) là bộ môn khoa học có mục đích trang bị cho người học hệ thống các phương pháp, các kỹ năng thực hành về suy nghĩ để giải quyết các vấn đề và ra quyết định một cách sáng tạo, về lâu dài, tiến tới điều khiển được tư duy.
Trên thế giới, các trung tâm,trường học, công ty chuyên về sáng tạo được thành lập cách đây chưa lâu. Ở Mỹ, lâu đời nhất là Trung tâm nghiên cứu sáng tạo (Center for Studies in Creativity) thuộc Đại học Buffalo, New York ra đời năm 1967. Ngày nay, ít nhất đã có 12 nước Tây Âu triển khai các chương trình tương tự. Các hiệp hội, mạng lưới về sáng tạo được thành lập ở nhiều nước và nhiều khu vực trên thế giới.
30 trang |
Chia sẻ: luyenbuizn | Lượt xem: 1359 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Nghiên cứu phương pháp luận sáng tạo, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MỤC LỤC
DANH MỤC HÌNH ẢNH
Hình 1.1 Giao diện của chương trinh Robot tìm đừờng về đích 11
Hình 1.2 Danh sách liên kết 12
Hình 1.3 Robot di chuyển qua các đối tượng vùng 13
Hình 1.4 Ma trận bản đồ định vị robot khi di chuyển 14
Hình 1.5 Đánh dấu vị trí vừa là đích vừa là điểm xuất phát 15
Hình 1.6 Hướng dẫn sử dụng chương trình 17
Hình 1.7 Cảnh báo lỗi không tìm thấy đường đi khi đánh dấu sai vị trí 17
Hình 1.8 Lỗi không load được bản đồ 18
Hình 1.9 Robot xoay đổi chiều tìm đường thích hơp đi về đích 19
Hình 1.10 Hình ảnh các loại địa hình 21
Hình 1.11 Trường hợp phải hủy bỏ một phần tử trong danh sách 23
LỜI NÓI ĐẦU
Theo dòng phát triển của lịch sử, xã hội loài người tồn tại và phát triển song hành với quá trình sáng tạo không ngừng. Với khả năng sáng tạo vô tận, con người ngày càng đạt được những thành tựu vượt bậc và xây dựng nền văn minh vĩ đại cho xã hội loài người. Xã hội càng văn minh, yêu cầu khả tư duy sáng tạo càng tăng cao. Theo thống kê cho thấy các nước trên thế giới đã bắt đầu đào tạo cử nhân, thạc sỹ về chuyên ngành sáng tạo và đổi mới. Từ đó, ra đời các khóa học về “Phương pháp luận sáng tạo”. Giống như An.Tôlxtôi đã từng nói:” Trong con người vốn có những nguồn sáng tạo vô tận, nếu khác đi thì đã không thành người. Cần giải phóng và khơi thông chúng.”
Nói một cách ngắn gọn, “Phương pháp luận sáng tạo ”(PPLST) là bộ môn khoa học có mục đích trang bị cho người học hệ thống các phương pháp, các kỹ năng thực hành về suy nghĩ để giải quyết các vấn đề và ra quyết định một cách sáng tạo, về lâu dài, tiến tới điều khiển được tư duy.
Trên thế giới, các trung tâm,trường học, công ty chuyên về sáng tạo được thành lập cách đây chưa lâu. Ở Mỹ, lâu đời nhất là Trung tâm nghiên cứu sáng tạo (Center for Studies in Creativity) thuộc Đại học Buffalo, New York ra đời năm 1967. Ngày nay, ít nhất đã có 12 nước Tây Âu triển khai các chương trình tương tự. Các hiệp hội, mạng lưới về sáng tạo được thành lập ở nhiều nước và nhiều khu vực trên thế giới.
Ở nước ta, lớp học đầu tiên về tư duy sáng tạo được tổ chức vào năm 1977. Người Thầy đầu tiên truyền bá bộ môn khoa học này vào Việt Nam là Giáo sư, Tiến sĩ vật lý thực nghiệm Phan Dũng .
Hòa mình với sự phát triển của thời đại, của khoa học sáng tạo, Trường Đại học Công nghệ thông tin – Đại học quốc gia thành phố Hồ Chí Minh đã mở ra lớp học đầu tiên về Phương pháp luận sáng tạo khoa học dưới sự dìu dắt tận tình của Giáo sư, Tiến sĩ Hoàng Kiếm. Với đề tài:” Áp dụng một số nguyên tắc và phương pháp trực tiếp trong bài toán Robot tìm đường” em hi vọng đúc kết ra được những kinh nghiệm, những bài học quý báu sau khi hoàn khóa học này. Mục đích của đồ án này là vận dụng vài thủ thuật sáng tạo và phương pháp đệ quy để cho Robot có thể tìm đường đi đến đích đã được đánh dấu từ trước. Tuy nhiên, vì khả năng của bản thân còn nhiều hạn chế, nên vẫn còn gặp nhiều vướng mắc khi giải quyết vấn đề. Dù đề tài đã được hoàn thành nhưng đó chỉ là một phần rất nhỏ trong hệ thống bài giảng của Thầy. Trong tương lai, em mong muốn có thể vận dụng thành thạo những lời giảng của Thầy, không ngừng nâng cao khả năng tư duy sáng tạo để không phụ lòng người Thầy mà chúng em mãi tri ân và tôn kính.
Chúng em, thế hệ sinh viên đầu tiên của trường đã may mắn là những sinh viên được tiếp cận với bộ môn khoa học còn khá mới và đầy sáng tạo này. Em xin chân thành cảm ơn Thầy, Thầy đã cho thế hệ chúng em những bài học quý giá nhất trong suốt cuộc hành trình chinh phục cuộc sống. Những bài học về sự sáng tạo không ngừng, những phương pháp giải quyết vấn đề đầy khó khăn thử thách.
TỔNG QUAN
Trước một vấn đề cần giải quyết trong cuộc sống, người ta thường hoặc là không biết cách đạt được mục đích, hoặc là không biết giải pháp tối ưu để đạt được mục đích. PPLST giúp nhanh chóng tìm ra con đường xử lý ngắn nhất dựa trên các quy luật phát triển của tư duy và khoa học.
Dù công nhân, nông dân, học sinh, sinh viên, giảng viên đại học, doanh nhân, cán bộ nhà nước, tiến sĩ, giáo sư,...đều cần nắm vững 40 thủ thuật sáng tạo cơ bản, các quy luật phát triển khách quan, các phương pháp nghiên cứu giải quyết vấn đề,... Học viên trải qua các khoá học PPLST đều tự tin, mạnh dạn hơn khi hành động để theo đuổi những dự định và ước mơ của mình, biết cách làm nẩy sinh các ý tưởng giải thích dễ hiểu rồi thực hiện. PPLST giúp bổ sung, hoàn thiện kiến thức, tiến thêm một bước trong tư duy sáng tạo khoa học công nghệ.
Suy nghĩ một cách sáng tạo, thông minh luôn là yêu cầu thiết yếu để có thể đưa ra những sáng kiến. Điều này đặc biệt quan trọng đối với sinh viên. Tuy vậy, để có thể tư duy sáng tạo cần có phương pháp. Áp dụng các thủ thuật và phương pháp giải quyết vấn đề, em đã lựa chọn đề tài ”Áp dụng một số nguyên tắc và phương pháp trực tiếp trong bài toán Robot tìm đường” đề làm bài luận văn.
Với yêu cầu bài toán đặt ra: Các nhà khoa học vũ trụ gởi lên mặt trăng một robot thám hiểm mặt trăng. Địa điểm hạ cánh của tàu vũ trụ không người lái đã được xác định trước. Từ vị trí này, một robot thám hiểm sẽ xuất phát và di chuyển đến một địa điểm được xác định trước. Robot vừa di chuyển vừa phải biết cách phân biệt địa hình sao cho có thể vượt qua hay đi vòng qua chướng ngại vật để về đich. Vị trí xuất phát và đích đều có thể khởi tạo ngẫu nhiên trên bản đồ. Bài luận được chia làm các chương như sau:
Chương 1: Đưa ra cơ sở lý thuyết cũng như xây dựng bài toán cơ bản, đưa ra cách giải quyết vấn đề .
Chương 2: Đi sâu vào phân tích nội dung bao gồm: 15 thủ thuật sáng tạo, và phương pháp đệ quy tìm đường.
Chương 3: Nêu ra những hạn chế cần được giải quyết. Hướng giải quyết vấn đề.
CƠ SỞ LÝ THUYẾT VÀ PHƯƠNG PHÁP NGHIÊN CỨU
Phương pháp trực tiếp
Đặc điểm của cách giải quyết này xác định trực tiếp được lời giải qua một thủ tục tính toán,.. hoặc qua các bước căn bản để có được lời giải. Đối với phương pháp này, việc giải quyết vấn đề trên máy tính chỉ là thao tác lập trình hay là sự chuyển đổi lời giải từ ngôn ngữ bên ngoài sang các ngôn ngữ được sử dụng bên trong máy tính. Tìm hiểu về phương pháp này chính là tìm hiểu về kỹ thuật lập trình trên máy tính.
Áp dụng nguyên lý 6 trong phương pháp trực tiếp.
Nguyên lý 6 : Biểu diễn các tính toán không tường minh bằng đệ quy, có nghĩa là “Quá trình đệ quy trong máy tính không đơn giản như các biểu thức quy nạp trong toán học”.
Một số nguyên tắc sáng tạo.
Dựa trên việc phân tích hàng trăm ngàn sáng chế trong những ngành kỹ thuật mũi nhọn người ta đã tìm được 40 nguyên tắc sáng tạo cơ bản. Chúng còn có tên gọi là các thủ thuật khắc phục mâu thuẫn kỹ thuật.
15 nguyên tắc được vận dụng trong bài toán tìm đường:
1.Nguyên tắc 1- Nguyên tắc phân nhỏ
Chia đối tượng thành các phần độc lập
Làm đối tượng trở nên tháo lắp được
Tăng mức độ phân nhỏ của đối tượng
2. Nguyên tắc 2- Nguyên tắc tách khỏi
Tách phần gây phiền phức ra khỏi đối tượng hoặc ngược lại. Tách lấy phần cần thiết
3. Nguyên tắc 3- Nguyên tắc phẩm chất cục bộ
Chuyển đối tượng (hay môi trường bên ngoài, tác động bên ngoài) có cấu trúc đồng nhất thành không đồng nhất.
Các phần khác nhau của đối tượng phải có các chức năng khác nhau.
Mỗi phần của đối tượng phải có các chất năng khác nhau.
4. Nguyên tắc 5- Nguyên tắc kết hợp
Kết hợp các đối tượng đồng nhất hoặc các đối tượng dùng cho các hoạt động kế cận.
Kết hợp về mặt thời gian các hoạt động đồng nhất hoặc kế cận
5. Nguyên tắc 6- Nguyên tắc vạn năng
Đối tượng thực hiện một số chức năng khác nhau do đó không cần sự tham gia của đối tượng khác.
6. Nguyên tắc 7- Nguyên tắc chứa trong
Một đối tượng chứa bên trong nó đối tượng khác và đối tượng khác đó lại chứa đối tượng thứ 3,…
Một đối tượng chuyển động xuyên suốt bên trong đối tượng khác.
7. Nguyên tắc 10- Nguyên tắc thực hiện sơ bộ
Thực hiện trước sự thay đổi, tác động cần có, hoàn toàn hoặc từng phần, đối tượng với đối tượng.
Cần sắp xếp các đối tượng trước, sao cho chúng có thể hoạt động từ vị trí thuận lợi nhất và không mất thời gian dịch chuyển.
8. Nguyên tắc 11- Nguyên tắc dự phòng
Bù đắp độ tin cậy không lớn của đối tượng bằng cách chuẩn bị trước các phương tiện báo động, ứng cứu dự phòng.
9. Nguyên tắc 15- Nguyên tắc linh động
Cần thay đổi các đặc trưng của đối tượng hay môi trường bên ngoài sao cho chúng tối ưu trong từng giai đoạn làm việc.
Phân chia đối tượng thành từng phần có khả năng dịch chuyển đối với nhau
Nếu đối tượng nhìn chung bất động làm nó di động.
10. Nguyên tắc 17- Nguyên tắc chuyển sang chiều khác
Những khó khăn do chuyển động (hay sắp xếp) đối tượng theo đường (một chiều) sẽ được khắc phục nếu cho đối tượng khả năng di chuyển trên mặt phẳng( hai chiều), tương tự những bài toán liên quan đến chuyển động (hay sắp xếp) các đối tượng trên mặt phẳng sẽ được đơn giản hóa khi chuyển sang không gian (ba chiều).
Chuyển các đối tượng có kết cấu một tầng thành nhiều tầng.
Đặt đối tượng nằm nghiêng.
Sử dụng mặt sau của diện tích cho trước.
Sử dụng các luồng ánh sáng tới diện tích bên cạnh hoặc tới mặt sau của diện tích cho trước
11. Nguyên tắc 19- Nguyên tắc hoạt động theo chu kỳ
Chuyển các tác động liên tục thành tác động theo chu kỳ(xung)
Nếu đã có tác động theo chu kỳ hãy thay đổi chu kỳ
Sử dụng khoảng thời gian giữa các xung để thực hiện tác động khác nhau.
12. Nguyên tắc 26- Nguyên tắc sao chép
Thay vì sử dụng những cái không được phép, phức tạp, đắt tiền, không tiện lợi hoặc dễ vỡ, sử dụng bản sao.
Thay thế đối tượng hoặc hệ các đối tượng bằng bản sao quang học (ảnh, hình vẽ) với các tỷ lệ cần thiết.
Nếu không thể sử dụng bản sao quang học ở vùng biểu kiến (vùng ánh sáng nhìn thấy được bằng mắt thường), chuyển sang sử dụng bản sao hồng ngoại hoặc tử ngoại.
13. Nguyên tắc 32- Nguyên tắc thay đổi màu sắc
Thay đổi màu sắc của đối tượng hay môi trường bên ngoài.
Thay đổi độ trong suốt của đối tượng hay môi trường bên ngoài.
Để có thể quan sát được những đối tượng hoặc những quá trình, sử dụng các chất phụ gia màu, huỳnh quang.
Nếu các chất phụ gia đó đã được sử dụng, dùng các nguyên tử đánh dấu.
Sử dụng các hình vẽ, ký hiệu thích hợp
14. Nguyên tắc 33- Nguyên tắc đồng nhất
Những đối tượng, tương tác với đối tượng cho trước phải được làm từ cùng một vật liệu ( hoặc từ vật liệu gần với các tính chất) với vật liệu chế tạo đối tượng cho trước.
15. Nguyên tắc 34- Nguyên tắc phân hủy hay tái sinh các phần
Phần đối tượng đã hoàn thành nhiệm vụ hoặc trở nên không cần thiết phải tự phân hủy (hòa tan, bay hơi) hoặc phải biếng dạng.
Các phần mất mát của đối tượng phải được phục hồi trực tiếp trong quá trình làm việc.
Xây dựng yêu cầu cơ bản cho bài toán
Xây dựng Robot có các tính năng sau: Tiến 1 bước, lùi 1 bước, xoay trái một góc 45 độ, xoay phải một góc 45 độ. Khoảng đường di chuyển này có thể có một số chướng ngại đất đá mà robot phải vượt qua. Do đó, robot cũng được thiết kế thêm một tính năng để vượt qua các chướng ngại vật có chiều cao thấp hơn hoặc bằng 50 cm. Nếu chướng ngại vật cao hơn 50 cm, robot phải đi vòng. Robot cũng tránh không đi vào các vùng quá trũng. Robot được xây dựng sẵn các nguyên tắc cho việc di chuyển để phù hợp với địa hình trên. Robot được cung cấp một bản đồ địa hình về quãng đường mà nó sẽ phải di chuyển. Trong đó có: các vùng trũng nhiều, các chướng ngại vật đất đá lớn nhỏ khác nhau. Trên bản đồ cần xác định trước vị trí xuất phát của robot và vị trí đích mà robot phải di chuyển đến. Bản đồ có cấu trúc của một ma trận n x n, trên đó mỗi ô có một tọa độ và có thông tin về địa hình của vị trí đó.
ÁP DỤNG PHƯƠNG PHÁP ĐỆ QUY VÀ CÁC NGUYÊN TẮC SÁNG TẠO GIẢI QUYÊT BÀI TOÁN
Vận dụng nguyên lý 6 và một số nguyên tắc sáng tạo để giải quyết toàn bộ vấn đề của bài toán tìm đường đến đích cho Robot. Xây dựng nên cái nhìn tổng quan về toàn bộ quá trình.
Áp dụng 15 nguyên tắc sáng tạo vào bài toán
Thủ thuật sáng tạo là thao tác tư duy đơn lẻ kiểu: Hãy đặc biết hóa bài toán , hãy phân nhỏ đối tượng, hãy làm cho đối tượng linh động…
Khi giải quyết những vấn đề tìm đường, áp dụng cụ thể vào bài toán 15 nguyên tắc sau:
Áp dụng nguyên tắc 1- Nguyên tắc phân nhỏ
Khi xây dựng bản đồ để quản lý toàn bộ bề mặt địa hình của mặt trăng . Vì địa hình quá lớn và có nhiều loại nên cần chia nhỏ địa hình để dễ quản lý. Xây dựng bản đồ để quản lý địa hình và phân nhỏ bản đồ này thành 225 (n*n) vùng con, mỗi vùng là một đối tượng. Số lượng đối tượng có thể được thay đổi: tăng hoặc giàm tùy theo mô hình giải quyết bài toán. Bản đồ này sẽ được quản lý bởi ma trận 2 chiều n*n (15*15) nhằm xác định vị trí của từng vùng trên bản đồ dễ dàng hơn. Nhờ việc phân nhỏ thành các vùng mà ta có thể dễ dàng thay thế các đối tượng vùng, di chuyển đối tượng trên các vùng và nhờ đó mà bản đồ có thêm những tính chất mới: mỗi vùng có một giá trị khác nhau để xác định loại địa hình.
Ngoài ra khi xây dựng code cho chương trình, ta sẽ phân chương trình thành nhiều lớp. Mỗi lớp thực hiện các chức năng nhiệm vụ khác nhau. Ví dụ: xây dựng một lớp robot.cs, một lớp MoonMap.cs, một lớp MyPoint để thể hiện cho từng vùng và một lớp thực hiện các thao tác xử lý.
Các class này có thể được đặt chung trong một class lớn nhưng nên tách ra thành các class riêng biệt , độc lập để quản lý dễ dàng hơn. Muốn mở rộng hơn giả sử có 2,4,5.. con robot di chuyển trên bản đồ thì lúc này xây dựng chương trình đỡ phức tạp.
Hình 1.1 Giao diện của chương trinh Robot tìm đừờng về đích
Khi phân nhỏ đối tượng ta cũng nên kết hợp chúng lại thành thể thống nhất. Các đối tượng này có thể thực hiện nhiều chức năng, mỗi đối tượng thì có tính cục bộ và phải linh động…Vì vậy nguyên tắc phân nhỏ thường đi kèm theo một số nguyên tắc:ckết hợp, vạn năng, cục bộ.. Tiếp theo sau là nguyên tắc kết hợp.
Áp dụng nguyên tắc 5- Nguyên tắc kết hợp
Khi xây dựng nguyên tắc phân nhỏ thường lúc nào cũng có mặt của nguyên tắc kết hợp. Nếu các đối tượng này nằm rời rạc trên bản đồ thì robot không thể di chuyển từ vùng này sang vùng khác. Điều đặc biệt là các đối tượng này phải đồng loại.Trong chương trình xây dựng các đối tượng vùng này đều là đối tượng MyPoint( Đối tượng do ta tự định nghĩa). Các đối tượng này có vị trí trên bản đồ, có các hình ảnh để xác định địa hình là đồng bằng, đầm lầy hay đá cao, đá thấp. Khi nhìn trên giao diện thì ta thấy đó là một tấm ảnh địa hình mặt trăng. Nhưng trên thực tế nó là 225(15*15) phần tử kết hợp lại với nhau tạo thành.
Chương trình là một tổng thể kết hợp từ các class khác nhau. Hay khi sử dụng danh sách liên kết để lưu đường đi của robot thì ta đã sử dụng nguyên tắc kết hợp. Kết hợp nhiều phần tử lại với nhau, mỗi phần tử thể hiện một vùng mà ta đã đi qua.
List PathToTarget = new List()
Hình 1.2 Danh sách liên kết
Ngoài ra, nguyên tắc kết hợp cần hiểu theo nghĩa rộng là thiết lập mối liên kết chớ không đơn thuần là cộng thêm hay gắn thêm, nó kế hợp nhiều chức năng lại để thực hiện toàn bộ yêu cầu của bài toán đặt ra.
Cũng như, ta gán cho mỗi vùng một giá trị. Mỗi đối tượng vùng đó dựa vào giá trị được gán là 0, 1,2 ,3 mà xác định xem đó là loại địa hình gì để kết hợp với hình ảnh địa hình tương ứng đồng thời dựa vào những giá trị đó để xét xem robot có thể di chuyển vào vùng đó hay không.
Như vậy cũng có thể xem nguyên tắc kết hợp là nguyên tắc ngược của nguyên tắc phân nhỏ.
Áp dụng nguyên tắc 3- Nguyên tắc phẩm chất cục bộ
Các vùng đối tượng có thể được thay đổi mà không làm ảnh hưởng đến toàn bộ bản đồ. Ví dụ như trên bản đồ thể hiện khu vực đó là đồng bằng nhưng khi Robot ( ô vuông khac màu ) đi ngang thì vị trí đó được thay thế bởi robot, các vùng lân cận vẫn không thay đổi. Khi Robot đi qua khỏi vị trí đó thì nó được trả về trạng thái ban đầu.
Hình 1.3 Robot di chuyển qua các đối tượng vùng
Hay trong quá trình xây dựng code cho chương trình thường có nhiều thay đổi. Vì vậy người ta chia chương trình thành các class riêng. Trong mỗi class sẽ có các hàm thực hiện các chức năng riêng biệt. Như vậy khi cần thay đổi, sửa chữa ta chỉ cần thay đổi cục bộ mà không ảnh hưởng đến toàn bộ chương trình.
Các phẩm chất cục bộ phát triển từ đơn giản đến phức tạp để tạo ra những ưu điểm riêng biệt. Nguyên tắc phẩm chất cục bộ tạo ra những sản phẩm tối ưu, có thể mở rộng.
Các nguyên tắc kết hợp, phân nhỏ, phẩm chất cục bộ còn phản ảnh khuynh hướng phát triển biện chứng : Sự liên kết , hợp tác hóa đi kèm với sự phân công chức năng nhiệm vụ và chuyên sâu hơn.
Áp dụng nguyên tắc 2- Nguyên tắc tách khỏi
Thiết kế sao cho Robot là một đối tượng riêng biệt so với bản đồ. Robot di chuyển trên bản đồ qua từng vùng và tiến về đích. Bản đồ lúc này thể hiện là nền cho ta nhìn thấy sự di chuyển của Robot. Những thay đổi trên Robot không làm ảnh hưởng đến bản đồ. Như vậy Robot và bản đồ là hai đối tượng riêng biệt.
Hình 1.4 Ma trận bản đồ định vị robot khi di chuyển
Các chương trình có thể quá lớn nên khi xây dựng ta tách ra thành nhiều phần riêng biệt. Chương trình được tách thành các thư mục khác nhau. Như thư mục Resource để chứa các file hình ảnh đưa vào chương trình. Thư mục bin, obj, …
Trong class robot có rất nhiều phần nhưng ta tách phần quản lý tọa độ khi di chuyển thành một class con. Để dễ sử dụng lại nhiều lần mà không phải tốn thời gian và tài nguyên.
Tương tự, khi xây dựng bản đồ để tạo 255, mỗi vùng ta lại phải gán giá trị, gán hình ảnh. Để đơn giản hơn ta tách phần thể hiện các giá trị của mỗi vùng thành 1 file text map.txt sẵn bên ngoài. Viết đoạn chương trình đọc các giá trị trong file text để gán vào từng phần từ. Như vậy khi muốn thay đổi giá trị ta chỉ việc điền giá trị vào file text.
Vì các đối tượng thường có nhiều thành phần tính chất, khía cạnh khác nhau nên nhiều khi ta chỉ cần một trong những số đó. Tách khỏi không có nghĩa là bỏ, là vứt đi mà là cách để tận dụng những tính chất những khả năng đem lại những lợi ích cao nhất.
Nguyên tắc tách khỏi thường đi kèm với nguyên tắc phân nhỏ, kết hợp, cục bộ, nguyên tắc vạn năng ..
Áp dụng nguyên tắc 6- Nguyên tắc vạn năng
Đây là nguyên tắc làm cho đối tượng được cải tiến có nhiều chức năng mới. Tạo ma trận 2 chiều để quản lý bản đồ. Mỗi phần tử của mảng vừa chịu sự quản lý của mảng vừa được dùng cho nhiều nhiệm vụ khác nhau.Ví dụ như giá trị của mỗi phần tử vùng vửa để thể hiện hình ảnh loại địa hình: đá cao, đá thấp, vùng đàm lầy hay đồng bằng, vừa dùng thể hiện robot hay là đích. Nếu phần tử nào là robot hay là đích sẽ được gán hình ảnh khác để thay thế cho hình ảnh loại địa hình.
Ví dụ khác, khi ta đánh dầu vị trí đích mà Robot phải đi đến. Để cải tiến chương trình, sau khi robot di chuyển đến đích thì biến vị trí đích thành vị trí xuất phát mới của Robot. Như vậy Robot sẽ tiếp tục di chuyển đến đích mới. Một vị trí vừa là đích đến vừa là điểm xuất phát.
Hình 1.5 Đánh dấu vị trí vừa là đích vừa là điểm xuất phát
Xét theo một ý nghĩa nào đó thì nguyên tắc vạn năng là trường hợp riêng của nguyên tắc kết hợp. Kết hợp nhiều chức năng trên cùng một đối tượng. Nguyên tắc này làm cho các đối tượng trở nên linh động hơn và thực hiện nhièu chức năng khác nhau làm cho chương trình đơn giản hơn.
Áp dụng nguyên tắc 7- Nguyên tắc chứa trong
Đối tượng robot di chuyển xuyên suốt bên trong bản đồ. Bản đồ là một đối tượng lớn chứa đối tượng robot.Vi dụ khác, khi xây dựng chương trình, thường xuất hiện trường hợp class này lồng class khác vào bên trong của nó, và hàm này gọi hàm khác.Ví dụ trong class Robot thì sử dụng class vec.cs để xác định vị trí của robot trên bản đồ.
Trong class MoonMap.cs thì khai báo class Mypoint.cs. Hay trong hàm ClickMap() (đánh dấu vị trí đích mà robot cần di chuyển đến) ta phải gọi hàm SearchPath() kiểm tra xem vị trí đó robot có thể đi được hay không.
public void MapClick(object sender, EventArgs e)
{
// Reset MapFooted va bat dau goi de qui tim duong di
Map.ResetFooted();
// Xoa du lieu cu trong PathToTarget
robo.ClearPath();
if (SearchPath(robo.srcPoint, target) == true)
{
robo.ResetMove();
timer.Enabled = true;
Map.Reset(robo.targetPoint);
Map.SetTarget(target);
robo.targetPoint = target;
}
}
Trong hàm khởi tạo gọi hàm Tick() thời gian, sau 1 lần tick thì robot sẽ di chuyển thêm một bước.
Xét theo một góc độ nào đó thì chứa trong là một trường hợp riêng của nguyên tắc phẩm chất cục bộ. Phân biệt”trong” ,”ngoài”giúp vấn đề được giải quyết một cách đơn giản.
Nguyên tắc chứa trong thường dùng kết hợp với phân nhỏ, tách khỏi, vạn năng….
Áp dụng nguyên tắc 10- Nguyên tắc thực hiện sơ bộ
Trước khi Robot thực hiện di đến bước tiếp theo thì cần phải được kiểm tra xem vị trí đó có thể di chuyển được hay không để giảm thời gian di chuyển cũng như tiết kiệm đường đi.
Khi viết chương trình, để người khác nhìn vào có thể hiểu được để chạy cho đúng. Người ta thường tạo ra phần hướng dẫn để sử dụng chương trình.Ví dụ trong bài toán tìm đường này, khi chạy chương trình, đầu tiên sẽ hiện ra hướng dẫn:
Hình 1.6 Hướng dẫn sử dụng chương trình
Khi đọc hướng dẫn này thì người chạy chương trình dễ dàng sử dụng chương trình. Biét cách đánh dấu vị trí đích đến.
Nguyên tắc này đòi hỏi khả năng thực hiện trước một phần nào đó hoặc toàn bộ và đạt được rất nhiều lợi ích. Nguyên tắc thực hiện sơ bộ giúp đề ra cách giải quyết vấn đề. Có thể dựa vào tuần tự thời gian mà ta sắp xếp trước các sự việc. Từ thủ thuật này ta hiểu vấn đề muốn thực hiện tốt bất cứ việc gì cần có sự chuẩn bị một cách toàn diện chu đáo.
Chuẩn bị tốt là đã giành được một phần trong sự thành công.
Áp dụng nguyên tắc 11- Nguyên tắc dự phòng
Nguyên tắc này được xây dựng để kịp thời báo hiệu những vấn đề rắc rối. Ví dụ những vị trí không được phép đánh dấu như trên đá hay đầm lầy thì khi click chuột vào đó sẽ hiện ra thông báo khu vực này không được đánh dấu.
Hình 1.7 Cảnh báo lỗi không tìm thấy đường đi khi đánh dấu sai vị trí
Khi tập tin map.txt có lỗi: sửa giá trị không hợp lệ, thiếu phần tử, file hỏng do virut phá hoại,..thì chương trình không đọc được giá trị để gán vào các phần tử trong mảng hai chiều. Trong trường hợp này chương trình sẽ hiện ra thông báo lỗi:
Hình 1.8 Lỗi không load được bản đồ
Và để dự phòng cho trường hợp này, ta tạo một file bản đồ dự phòng. Trường hợp bản đồ đầu tiên không load được thì sẽ hiện ra thông báo và bước tiếp theo chương trình sẽ tự động load file bản đồ dự phòng.
Có thể nói nguyên tắc dự phòng là phần chi phi thêm làm tăng độ tin cậy cho đối tượng, chương trình. Nguyên tắc này nhằm chuẩn bị các biện pháp để đối phó với những rủi ro, những bất ngờ , những lỗi mắc phải. Nguyên tắc dự phòng giúp chương trình hoạt động với độ tin cậy cao nhất.
Áp dụng nguyên tắc 15- Nguyên tắc linh động
Vị trí bắt đầu xuất phát được khởi tạo trước đáng lẽ là bất động như vì linh động nên ta thiết kế chương trình sao cho khi Robot đã đi đến đích thì từ đích đó lại đi đến một đích khác.Như vậy vị trí xuất phát đã bị thay đổi.
Một trường hợp khác, ta có thể sửa giá trị của các phần tử của bản đồ mảng hai chiều. Như vậy giá trị được gán bằng tay, có thể thay đổi linh động để tối ưu chương trình.
Các hằng số được định nghĩa trong chương trình: độ lớn bản đồ, thời gian Tick() (Thời gian để Robot di chuyển một bước đi),…có thể thay đổi tùy ý. Các biến khởi tạo trong chương trình có thể thay đổi giá trị tùy theo từng trường hợp cụ thể .
Nguyên tắc này giúp đối tượng có những thay đồi phù hợp theo thời gian, theo từng trường hợp cụ thể, tạo ra sự thống nhất chặt chẽ cho chương trình. Giúp chương trình phát triển có định hướng. Sự thay đổi cần hiểu theo nghĩa rộng về mọi mặt: bản chất, chức năng, giá trị ,.. sao cho tạo mối liên kết giúp chương trình tối ưu trong từng giai đoạn. Tư duy sáng tạo không chỉ là áp dụng lý thuyết mà phải biết cách vận dụng linh động sao cho đạt hiệu quả cao nhất. Đây chính là đặc trưng của môn phương pháp luận sáng tạo khoa học.
Áp dụng nguyên tắc 17- Nguyên tắc chuyển sang chiều khác
Trên thực tế bản đồ địa hình cần phải lớn. Khi Robot di chuyển cần chọn bước tiếp theo sao cho có thể về đich nhanh nhất. Nhưng trong quá trình di chuyển do gặp phải chướng ngại vật: đá lớn, đầm lầy làm cho Robot không thể di chuyển được theo chiều ban đầu. Lúc này Robot cần thực hiện động tác xoay đổi chiều để tìm chiều thích hợp cho việc di chuyển.
Hình 1.9 Robot xoay đổi chiều tìm đường thích hơp đi về đích
Khi duyệt mảng các phần tử thường ta sẽ duyệt từ đầu mảng đến cuối mảng, nhưng có một vài trường hợp người ta cần duyệt tìm theo chiều ngược lại. Hệ trục tọa độ trong không gian này được xây dựng theo chiều âm và chiều dương. Có đôi khi ta không cho Robot đi theo chiều dương mà phải đi theo chiều âm về phía cuối bản đồ để về đích tùy thuộc vào vị trí của Robot và bản đồ lúc đó.
Nguyên tắc chuyển sang chiều khác cho ta cái nhìn tổng quan, nhìn từ nhiều khía cạnh khác nhau. Tránh tính ì tâm lý trong việc sử dụng một chiều nào đó vốn đã quen thuộc.
Chuyển đổi “chiều” giúp giải quyết vấn đề linh động hơn, trong nhiều trường hợp lại có thêm nhiều khả năng hay hơn, nhiều tính chất mới hơn giúp cho chương trình đạt hiệu quả cao hơn. Đây là cách giải quyết vấn đề đặc biệt, cần có cái nhìn linh động sáng tạo trong mọi trường hợp.
Áp dụng nguyên
Các file đính kèm theo tài liệu này:
- M7908C L7908Cwww.doc