Luận văn Quản lý chi phí dự án Hồng Thịnh Residence project bằng hệ thống PMS ERP được hoàn thành với mục tiêu nhằm tổng quan thực trạng việc quản lý chi phí của cá dự án xây dựng; Tìm hiểu khái niệm, quy trình của h

25 4 0
Luận văn Quản lý chi phí dự án Hồng Thịnh Residence project bằng hệ thống PMS  ERP được hoàn thành với mục tiêu nhằm tổng quan thực trạng việc quản lý chi phí của cá dự án xây dựng; Tìm hiểu khái niệm, quy trình của h

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Khóa luận tốt nghiệp Kinh tế đối ngoại: Giải pháp nâng cao mức độ hài lòng của khách hàng khi sử dụng thẻ thanh toán tại Ngân hàng Sài Gòn Thương Tín chi nhánh Cà Mau được thực hiện với mục tiêu nhằm phân tích thực trạng kết quả hoạt động kinh doanh và phát hành thẻ tại Ngân hàng Sài Gòn Thương Tín chi nhánh Cà Mau giai đoạn 20102012. Phân tích... Đề tài Hoàn thiện công tác quản trị nhân sự tại Công ty TNHH Mộc Khải Tuyên được nghiên cứu nhằm giúp công ty TNHH Mộc Khải Tuyên làm rõ được thực trạng công tác quản trị nhân sự trong công ty như thế nào từ đó đề ra các giải pháp giúp công ty hoàn thiện công tác quản trị nhân sự tốt hơn trong thời gian tới.

lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN -*** - BÀI TẬP LỚN HỌC PHẦN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI: Ứng dụng mạng nơ ron vào thiết kế Trí Tuệ Nhân Tạo học chơi Flappy Bird Họ tên sinh viên: Mai Vĩnh Minh Lớp tín chỉ: Kinh tế trị Mác - Lênin(220) 07 Mã SV: 11206102 Hà Nội, 17 tháng năm 2022 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } MỤC LỤC TỔNG QUAN ĐỀ TÀI Giới thiệu đề tài Công cụ xây dựng Mục tiêu Phân tích NỘI DUNG TÌM HIỂU Trí tuệ nhân tạo AI Machine learning Reinforcement learning Mạng nơ ron Giải thuật NEAT Ứng dụng NEAT vào Flappy Bird LẬP TRÌNH Lập trình trị chơi Flappy bird Cài đặt ứng dụng giải thuật NEAT Kết Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } I TỔNG QUAN VỀ ĐỀ TÀI Giới thiệu đề tài Khi xã hội ngày phát triển, cơng nghệ, máy móc thể đột phá tính ứng dụng vấn đề hàng ngày Trí tuệ nhân tạo (cịn gọi Artificial Intelligence - AI) đà mà phát triển ngày mạnh mẽ nhiều lĩnh vực khác khoa học đời sống người, Để kiểm nghiệm mức độ thơng minh Trí tuệ nhân tạo, nhà khoa học thường thử kiểm nghiệm thơng qua trị chơi, từ họ đo lường so sánh sản phẩm AI để tìm sản phẩm tốt Trong nhiều thập kỷ qua, người ngày phát triển nhiều thuật tốn Trí tuệ nhân tạo đối đầu với người nhiều trò chơi khác biệt quy tắc thử thách cờ vua, cờ vây, poker, … Qua hoạt động thử nghiệm trên, nhà khoa học thu liệu sử dụng để phát triển ứng dụng sau Chính vậy,, em chọn đề tài huẩn luyện Trí tuệ nhân tạo chơi game Flappy Bird làm đề tài Bài tập lớn Cơng cụ xây dựng Em sử dụng Integrated Development Environment Pycharm lập trình chủ yếu ngơn ngữ lập trình python Ngoài ra, em sử dụng thư viện pygame để lập trình giao diện trị chơi thư viện neat-python để áp dụng thuật tốn NEAT huẩn luyện cho Trí tuệ nhân tạo Mục tiêu Tạo Trí tuệ nhân tạo có khả tự học hỏi sau lần thua ngày trở nên giỏi mức thua Phân tích Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Về trò chơi Flappy bird: Flappy Bird (tạm dịch Chú chim vỗ cánh) trò chơi điện tử điện thoại anh Nguyễn Hà Đông phát triển, dotGEARS, studio phát triển game quy mô nhỏ, hoạt động độc lập có trụ sở Việt Nam phát hành vào năm 2013 Trị chơi trình bày theo phong cách sidescroller (phong cách game với đối tượng nhìn thấy mặt bên (side-view) di chuyển từ cạnh trái sang cạnh phải hình), người chơi điều khiển chim, cố gắng vượt qua hàng ống màu xanh mà không chạm vào chúng Mục tiêu trò chơi điều khiển chim bay qua ống Nếu chim chạm vào chướng ngại vật trị chơi kết thúc Mỗi chim vượt qua cặp ống người chơi nhận điểm Về thuật toán AI phù hợp: Thuật toán NEAT viết tắt NeuroEvolution of Augmented Topologies Nó phương pháp để phát triển mạng nơ-ron nhân tạo thuật toán di truyền NEAT thực ý tưởng hiệu cách bắt đầu trình phát triển với mạng nhỏ, đơn giản cho phép chúng ngày trở nên phức tạp qua nhiều hệ Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } II NỘI DUNG TÌM HIỂU Trí tuệ nhân tạo AI - Artificial Intelligence hay cịn gọi Trí tuệ nhân tạo ngành khoa học, kỹ thuật chế tạo máy móc thơng minh, đặc biệt chương trình máy tính thơng minh AI thực cách nghiên cứu cách suy nghĩ người, cách người học hỏi, định làm việc giải vấn đề đó, sử dụng kết nghiên cứu tảng để phát triển phần mềm hệ thống thơng minh, từ áp dụng vào mục đích khác sống Nói cách dễ hiểu AI việc sử dụng, phân tích liệu đầu vào nhằm đưa dự đoán đến định cuối Trí tuệ nhân tạo khác với việc lập trình logic ngơn ngữ lập trình việc ứng dụng hệ thống học máy (machine learning) để mơ trí tuệ người xử lý mà người làm tốt máy tính Cụ thể, trí tuệ nhân tạo giúp máy tính có trí tuệ người như: biết suy nghĩ lập luận để giải vấn đề, biết giao tiếp hiểu ngơn ngữ, tiếng nói, biết học tự thích nghi,… Machine learning Machine learning (ML) hay máy học nhánh trí tuệ nhân tạo (AI), lĩnh vực nghiên cứu cho phép máy tính có khả cải thiện thân chúng dựa liệu mẫu (training data) dựa vào kinh nghiệm (những học) Machine learning tự dự đốn đưa định mà khơng cần lập trình cụ thể Q trình học bắt đầu quan sát liệu Ví dụ, để tìm kiếm mẫu liệu đưa định tốt tương lai dựa ví dụ mà chúng tơi cung cấp Mục đích cho phép máy Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } tính tự động học mà không cần can thiệp hay trợ giúp người điều chỉnh hành động tương ứng Học tăng cường (Reinforcement learning) Reinforcement learning lĩnh vực học máy, nghiên cứu cách thức agent môi trường nên chọn thực hành động để cực đại hóa khoản thưởng (reward) lâu dài Các thuật tốn học tăng cường cố gắng tìm chiến lược ánh xạ trạng thái giới tới hành động mà agent nên chọn trạng thái Mạng nơ ron (Neural network) Khái niệm: Mạng nơ-ron nhân tạo chuỗi thuật toán đưa để tìm kiếm mối quan hệ tập hợp liệu Thông qua việc bắt bước cách thức hoạt động từ não người Nói cách khác, mạng nơ ron nhân tạo xem hệ thống tế bào thần kinh nhân tạo Đây thường hữu nhân tạo chất Mạng nơ-ron có khả thích ứng với thay đổi từ đầu vào Do vậy, đưa kết cách tốt mà bạn khơng cần phải thiết kế lại tiêu chí đầu Đặc điểm: Trong lĩnh vực tài chính, mạng nơ ron nhân tạo hỗ trợ cho trình phát triển quy trình như: giao dịch thuật toán, dự báo chuỗi thời gian, phân loại chứng khốn, mơ hình rủi ro tín dụng xây dựng báo độc quyền công cụ phát sinh giá Mạng nơ ron nhân tạo hoạt động mạng nơ ron người Mỗi nơ ron thần kinh nơ ron nhân tạo hàm toán học với chức thu thập phân loại thông tin dựa theo cấu trúc cụ thể Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Neural Network có tương đồng chuẩn mạnh vối phương pháp thống kê đồ thị đường cong phân tích hồi quy Neural Network có chứa lớp bao hàm nút liên kết lại với Mỗi nút lại tri giác có cấu tạo tương tự với hàm hồi quy đa tuyến tính.Bên lớp tri giác đa lớp, chúng xếp dựa theo lớp liên kết với Lớp đầu vào thu thập mẫu đầu vào lớp đầu thu nhận phân loại tín hiệu đầu mà mẫu đầu vào phản ánh lại Kiến trúc: Neural Network kết hợp tầng perceptron hay gọi perceptron đa tầng Và mạng Neural Network thường bao gồm kiểu tầng là: Tầng input layer (tầng vào): Tầng nằm bên trái mạng, thể cho đầu vào mạng, bao gồm hiểu biết mà mạng sở hữu (Là mắt Trí tuệ nhân tạo Tầng output layer (tầng ra): Là tầng bên phải thể cho đầu mạng Tầng điều khiển hoạt động AI Để đưa giá trị từ input layer tới output layer cần sử dụng connection (liên kết) Mỗi input layer nối tới output layer để dịng thơng tin hiển thị hình Đặc biệt, connection có thuộc tính gọi weight (sức nặng) biểu diễn cho mạnh yếu connection Lưu ý: Mỗi Neural Network có tầng vào tầng lại có nhiều tầng ẩn Với mạng Neural Network nút mạng sigmoid neuron chúng lại có hàm kích hoạt khác Thực tế, người ta thường sử dụng có loại với để việc tính tốn Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } thuận lợi Tại tầng, số lượng nút mạng khác cịn tùy vào tốn cách giải Tuy nhiên, làm việc người ta để tầng ẩn số với số lượng neuron khác Ngoài ra, nơron nằm tầng thường liên kết đôi với để tạo thành mạng kết nối đầy đủ Khi đó, người dùng tính tốn kích cỡ mạng dựa vào tầng số lượng nơ ron Cài đặt mạng nơ ron vào toán Flappy bird: Chúng ta chuyển giá trị vào input neuron bao gồm: tung độ chim, khoảng cách chim với top đường ống khoảng cách chim tới bottom đường ống Những thông tin cung cấp cho output layer thông qua connection bao gồm weight để định nhảy hay không Weighted sum (tổng trọng số), cịn gọi tổ hợp tuyến tính có trọng số, phương pháp đa tiêu chí phân tích đơn giản biết đến nhiều để đánh giá số lựa chọn thay cho số định Do vậy, Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } weighted sum tính tốn đưa output layer thực phép toán cuối Weighted sum với TH input weight connection hình Phép tốn tính bias Bias thêm vào kết phép nhân trọng số với đầu vào Kết phép nhân hàm tuyến tính qua gốc tọa độ, sử dụng bias giúp mạng nơ ron dịch chuyển hàm tuyến tính cách linh hoạt Bias tham số học trình huấn luyện mạng nơ-ron Nhờ vậy, bias giúp dịch chuyển mạng nơ ron vào vị trí chuẩn xác chiều khơng gian Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } VD weighted sum sau cộng bias Điều cuối cần thực áp dụng hàm kích hoạt Hàm cho phép lấy giá trị cho đầu nơ ron tập số, từ dễ dàng việc kiểm tra số có gần với số khơng để định xem có nên nhảy hay khơng Có nhiều hàm để thực thi cơng việc TH này, hàm tính tan(x) phù hợp Hàm tan(x) truyền vào tham số weighted sum, weighted sum dương lớn hàm tan(weighted sum) trả giá trị gần weighted sum âm nhỏ hàm tan(weighted sum) trả giá trị gần -1 Và lấy số (-1, 1) để định việc có nên nhảy hay khơng Trong TH tập lớn em, em xin chọn số 0.5, tức Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } giá trị hàm kích hoạt tan(weighted sum) > 0.5 mạng nơ ron trả kết nhảy, TH cịn lại khơng nhảy Giải thuật NEAT Giải thuật NEAT (Neuronevolution of Augmenting Topologies) giải thuật tiến hóa mạng nơ ron nhân tạo phổ biến Trước tiên, cần hiểu tiến hóa nơ ron (Neuronevolution) ? Neuronevolution phát triển nhân tạo mạng nơ ron ứng dụng giải thuật di truyền, kết hợp giải thuật tiến hóa sinh học mô lại để thiết kế mạng nơ ron Neuronevolution cho thấy kết xuất sắc tác vụ học tăng cường (Reinforcement learning) Học tăng cường cho thấy hứa hẹn việc thiết kế cấu trúc mạng nơ ron, nhiên chậm số tìm kiểm khả vi Có thể nói, giải thuật NEAT lấy cảm hứng từ học thuyết chọn lọc tự nhiên Charles Darwin Để hiểu rõ giải thuật NEAT, cần hiểu khía cạnh thuật tốn bao gồm: mã hóa gen, đánh dấu lịch sử sinh sản, hình thành loài, đánh giá lực, cấu trúc tối thiểu Đầu tiên, mã hóa gen (Genetic encoding) cách NEAT mã hóa mạng nơ ron thành kiểu: Kiểu gen Kiểu hình Kiểu gen mã hóa mạng nơ ron, sử dụng sinh sản (crossover) đột biến (mutation) Kiểu hình kết mạng nơ ron, kết đánh giá sau 10 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Cách thuật tốn NEAT nhận biết kiểu gen kiểu hình Cách thuật toán NEAT tạo nên đột biến Tiếp theo, đánh dấu lịch sử sinh sản (Historical Marking Crossover) kĩ thuật cho phép sinh sản cấu trúc mạng nơ ron, gia tăng thêm độ phức tạp hệ sinh thái, cho phép cạnh tranh topo mạng nơ ron với ổ sinh thái 11 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } NEAT lấy cá thể có biểu xuất sắc để sản sinh hệ Đánh giá lực (Fitness sharing) cạnh tranh trang ổ sinh thái với khơng cạnh tranh mơ hình nhằm đạt khoản thưởng (reward) Việc tìm phương thức đánh giá khơng phải ln khả thi, ví dụ tồn tìm giai điệu mới, việc đánh giá giai điệu có “dễ nghe”, “hay” hay khơng thuộc cảm quan người, nên việc tìm hàm đánh giá xác khó khăn Nếu chi phí tính tốn phương thức đánh giá q lớn, việc sử dụng để tìm kiếm khơng gian nhiều thời gian, chí lâu vét cạn Cuối cấu trúc tối thiểu, đơn giản bắt đầu hệ thống mạng nơ ron với số lượng định Ứng dụng NEAT vào Flappy Bird Đầu tiên, tạo 100 cá thể chim, cá thể chim có mạng nơ ron điều khiển Mỗi mạng nơ ron khởi tạo với bias weight hoàn toàn ngẫu nhiên Kế tiếp, tiến hành 12 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } kiểm thử tất mạng nơ ron chơi đánh giá mức độ dựa kết mạng nơ ron Việc đánh giá dựa tiêu chí quãng đường mà chim vượt qua được, cụ thể frame trò chơi chim vượt qua mà khơng bị “gãy cánh” Sau hồn tất mơ kiểm thử lần (tất chim rơi), thu kết quả, từ đánh giá chim làm vượt trội so với chim thông thường khác Và từ chim đó, NEAT tiến hành đột biến sinh sản hệ vượt trội bao gồm 100 thuộc lồi chim Vì chim tới từ chim tốt kiểm thử lần nên kì vọng lần kiểm thử tiếp theo, hệ làm tốt hệ cũ Lặp lặp lại thao tác nhiều lần, ta thu “chú chim bất khả chiến bại, siêu sức mạnh” siêu nhân phim ảnh 13 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } LẬP TRÌNH Lập trình trị chơi Flappy Bird Load liệu, thư viện cần thiết phông chữ trị chơi: Lớp Bird: Lớp mơ đối tượng chim trị chơi Flappy Bird, có thuộc tính tọa độ (x, y), tilt: độ nghiêng, tick_count: số frame qua, height: độ cao, vel: vận tốc, img_count: sử dụng để theo dõi 14 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } animation chim, img: hình ảnh render chim Các thuộc tính sử dụng để xử lí logic vật lý animation cho đối tượng Các hàm lớp như: Hàm init : constructor Bird Hàm move(self): hàm xử lý phương thức di chuyển đối tượng Để tính qng đường rơi, ta sử dụng cơng thức d = v x t + x a x t2 Ngoài ra, hàm bao gồm số thao tác xử lý logic vật lý khác điểm rơi, độ nghiêng Hàm jump(self): xử lý đối tượng nhảy trục tọa độ Hàm draw(self): hàm xử lý animation bird, giữ cho chim bay trung tâm hình, chim rơi khơng đập cánh Hàm get_mask(self): Sử dụng thư viện pygame để lấy border chim theo hình ảnh, từ dễ dàng xử lý va chạm với cột sau 15 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Lớp Pipe: Lớp mô đối tượng ống trò chơi Flappy Bird, bao gồm thuộc tính x: hồnh độ trục tọa độ, height: độ cao ống, PIPE_TOP: hình ảnh ống trên, PIPE_BOTTOM: hình ảnh ống dưới, passed: Boolean kiểm tra chim bay qua ống chưa Hàm set_height(self): hàm xây dựng độ cao ống 16 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Hàm move(self): di chuyển ống Hàm draw(self): render ống ống dựa số liệu top bottom Hàm collide(self): Kiểm tra va chạm đối tượng chim ống, chim va chạm vào ống hàm trả True, ngược lại hàm trả False Lớp Base: 17 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Lớp base mô đối tượng mặt đất trò chơi Flappy Bird, bao gồm thuộc tính y: tung độ, x1: hồnh độ 1, x2: hoành độ Các hàm gồm có move(self): hàm dùng để khiến mặt đất di chuyển, di chuyển hết mặt đất vẽ tiếp mặt đất thứ hai đó, di chuyển hết mặt đất thứ hai liền vẽ tiếp mặt đất thứ nhất, từ tạo nên animation scrolling Hàm draw(self): render mặt đất di chuyển theo nguyên tắc move(self) Ngoài ra, hàm draw_ window() để render tất đối tượng Game loop xử lý hàm main 18 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Cài đặt ứng dụng giải thuật NEAT Cài đặt: File config-feedfoward.txt bao gồm thông số cài đặt mạng nơ ron, bias, thông số genomes để điều khiển fitness score, kích thước mẫu (pop_size)… Ứng dụng: Tiến hành load file config-feedfoward.txt từ local directory bắt đầu cài đặt NEAT từ thông số file Ngồi ra, thêm xuất thơng số đầu để tiện theo dõi thông số hệ sau Tiến hành khởi tạo neural network genome vào chim kích thước mẫu Mạng nơ ron cho chim biết nên nhảy, genome điều khiển thông số fitness chim 19 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Trong trường hợp hình hiển thị lúc ống, ta tiến hành đánh dấu index ống tới không quan tâm tới ống mà chim vượt qua rời hình 20 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Tiến hành truyền thông số vào input layer mạng nơ ron đề xuất phần Phân tích, từ giúp output layer định nhảy, không 21 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Để điều chỉnh fitness genome, ta kiểm tra score tăng thêm (Tức chim thành công bay qua ống), ta thưởng điểm fitness thêm cho tất chim vượt qua ống Cịn với chim (mạng nơ ron) thể không tốt để thua, trừ điểm fitness loại bỏ chim genome mạng nơ ron kèm 22 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } Nếu chim va vào ống, giảm điểm fitness điểm loại bỏ Nếu chim vượt ống thành công, cộng fitness thêm điểm Kết Như thấy, sau 17 hệ, chim mạnh có khả nhờ mạng nơ ron siêu đẳng kèm 23 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com) lOMoARcPSD|16991370 package connectDB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ConnectDB { public static Connection = null; private static ConnectDB instance = new ConnectDB(); public static ConnectDB getInstance() { return instance; } public void connect() throws SQLException { String url = "jdbc:sqlserver://localhost:1433;database name=QLNVIEN"; String user = "sa"; String pw = "123"; = DriverManager.getConnection(url, user, pw); if(con != null) { System.out.println("thanh cong"); } } public void disconnect() { if(con != null) { try { con.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } public static Connection getConnection() { return con; } } 24 Downloaded by nguyenphuong Phuong nguyen (Kimphuongrio@gmail.com)

Ngày đăng: 11/07/2023, 10:18

Tài liệu cùng người dùng

Tài liệu liên quan