However Berkeley-AI-Pacman-Projects build file is not available. Once you have an admissible heuristic that works well, you can check whether it is indeed consistent, too. Berkeley Pac-Man Projects These are my solutions to the Pac-Man assignments for UC Berkeley's Artificial Intelligence course, CS 188 of Spring 2021. Piazza post with recordings of review sessions: W 3/10: Midterm 5-7 pm PT F 3/12: Rationality, utility theory : Ch. In this section, youll write an agent that always greedily eats the closest dot. These are my solutions to the Pac-Man assignments for UC Berkeley's Artificial Intelligence course, CS 188 of Spring 2021. Implement multiagent minimax and expectimax algorithms, as well as designing evaluation functions. Students implement Value Function, Q learning, Approximate Q learning, and a Deep Q Network to help pacman and crawler agents learn rational policies. Your code should quickly find a solution for: python pacman.py -l tinyMaze -p SearchAgent python pacman.py -l mediumMaze -p SearchAgent python pacman.py -l bigMaze -z .5 -p SearchAgent. Work fast with our official CLI. There are two ways of using these materials: (1) In the navigation toolbar at the top, hover over the "Projects" section and you will find links to all of the project documentations. You can download all the code and supporting files as a zip archive. If you copy someone elses code and submit it with minor changes, we will know. Instead, they teach foundational AI concepts, such as informed state-space search, probabilistic inference, and reinforcement learning. Make sure you understand why and try to come up with a small example where repeatedly going to the closest dot does not result in finding the shortest path for eating all the dots. As far as the numbers (nodes expanded) are concerned, they are obtained by running the program. 16.5-7 Note 6 The Pac-Man projects were developed for CS 188. Finally, Pac-Man provides a challenging problem environment that demands creative solutions; real-world AI problems are challenging, and Pac-Man is too. concepts, such as informed state-space search, probabilistic inference, and reinforcement learning. In corner mazes, there are four dots, one in each corner. Remember that a search node must contain not only a state but also the information necessary to reconstruct the path (plan) which gets to that state. Web# The core projects and autograders were primarily created by John DeNero # (denero@cs.berkeley.edu) and Dan Klein (klein@cs.berkeley.edu). # Student side autograding was added by Brad Miller, Nick Hay, and # Pieter Abbeel This code was written in the framework of Artificial Intelligence class in University. You will build general search algorithms and apply them to Pacman scenarios. Please do not change the names of any provided functions or classes within the code, or you will wreak havoc on the autograder. You will need to choose a state representation that encodes all the information necessary to detect whether all four corners have been reached. They apply an array of AI techniques to playing Pac-Man. Our new search problem is to find the shortest path through the maze that touches all four corners (whether the maze actually has food there or not). http://ai.berkeley.edu/search.html; http://ai.berkeley.edu/multiagent.html; Author. Note that for some mazes like tinyCorners, the shortest path does not always go to the closest food first! Now, your search agent should solve: To receive full credit, you need to define an abstract state representation that does not encode irrelevant information (like the position of ghosts, where extra food is, etc.). Note: Make sure to complete Question 4 before working on Question 6, because Question 6 builds upon your answer for Question 4. In order to perform all the test cases run: The Pac-Man projects are written in pure Python 3.6 and do not depend on any packages external to a standard Python distribution. Please do not change the other files in this distribution or submit any of our original files other than these files. In this project, your Pacman agent will find paths through his maze world, both to reach a particular location and to collect food efficiently. # Attribution Information: The Pacman AI projects were developed at UC Berkeley. If you find yourself stuck on something, contact the course staff for help. In this project, your Pacman agent will find paths through his maze world, both to reach a particular location and to collect food efficiently. # Student side autograding was added by Brad Miller, Nick Hay, and # Pieter Abbeel Useful data structures for implementing search algorithms. 1 branch 0 tags. Soon, your agent will solve not only tinyMaze, but any maze you want. Introduction. Students implement depth-first, breadth-first, uniform cost, and A* search algorithms. Important note: Make sure to use the Stack, Queue and PriorityQueue data structures provided to you in util.py! sign in As a reference, our implementation takes 2.5 seconds to find a path of length 27 after expanding 5057 search nodes. They apply an array of AI techniques to playing Pac-Man. This can be run with the command: See the autograder tutorial in Project 0 for more information about using the autograder. WebOverview. 16.1-3: 8: M 3/15: Decision nets, VPI, unknown preferences : Ch. Does Pacman actually go to all the explored squares on his way to the goal? designing evaluation functions. Our new search problem is to find the shortest path through the maze that touches all four corners (whether the maze actually has food there or not). I wanted to recreate a kind of step function, in that the values are negative when a ghost is in close proximity. Please do not change the other files in this distribution or submit any of our original files other than these files. Use Git or checkout with SVN using the web URL. Office hours, section, and the discussion forum are there for your support; please use them. These algorithms are used to solve navigation and traveling salesman problems in the
If you have written your general search methods correctly, A* with a null heuristic (equivalent to uniform-cost search) should quickly find an optimal solution to testSearch with no code change on your part (total cost of 7). master. A tag already exists with the provided branch name. As in Project 0, this project includes an autograder for you to grade your answers on your machine. Hint: the shortest path through tinyCorners takes 28 steps. This file describes a Pacman GameState type, which you use in this project. This stuff is tricky! Any non-trivial non-negative consistent heuristic will receive 1 point. Files to Edit and Submit: You will fill in portions of search.py and searchAgents.py during the assignment. Please do not change the names of any provided functions or classes within the code, or you will wreak havoc on the autograder. You will test your agents first on Gridworld (from class), then apply them to a simulated robot controller (Crawler) and Pacman. The weights, as it can be seen above, are adjusted accordingly for this agent. Your code will be very, very slow if you do (and also wrong). Instead, they teach foundational AI concepts, such as informed state-space search, probabilistic inference, and reinforcement learning. We'll get to that in the next project.) They apply an array of AI techniques to playing Pac-Man. Does BFS find a least cost solution? Code for reading layout files and storing their contents, Parses autograder test and solution files, Directory containing the test cases for each question, Project 1 specific autograding test classes. WebGitHub - PointerFLY/Pacman-AI: UC Berkeley AI Pac-Man game solution. sign in This solution is factorial in the number of fruits, and if it is greater then 20 - with naive bruteforce - it will take too long. In our course, these projects have boosted enrollment, teaching reviews, and student engagement. Complete sets of Lecture Slides and Videos. In our course, these projects have boosted enrollment, teaching reviews, and student engagement. Project Link : Designed game agents for the game Pacman using basic, adversarial and stochastic search algorithms, and reinforcement learning concepts. Berkeley-AI-Pacman-Projects has no bugs, it has no vulnerabilities and it has low support. Follow your instructor's guidelines to receive credit on your project! This way, by having as a second argument the logarithm of the distance of the nearest ghost + 1 divided by 3, as soon as Pac-Man is within 2 moves of a ghost it becomes negative. Berkeley Pac-Man Projects These are my solutions to the Pac-Man assignments for UC Berkeley's Artificial Intelligence course, CS 188 of Spring 2021. Now it's time to write full-fledged generic search functions to help Pacman plan routes! Petropoulakis Panagiotis petropoulakispanagiotis@gmail.com You signed in with another tab or window. The projects were developed by John DeNero, Dan Klein, Pieter Abbeel, and many others. Our agent solves this maze (suboptimally!) This stuff is tricky! Pacman uses probabilistic inference on Bayes Nets to calculate expected returns to find food in the dark. Use Git or checkout with SVN using the web URL. These cheat detectors are quite hard to fool, so please don't try. Fill in foodHeuristic in searchAgents.py with a consistent heuristic for the FoodSearchProblem. They apply an array of AI techniques to playing Pac-Man. Learn more. Ghostbusters: You signed in with another tab or window. WebMy solutions to the berkeley pacman ai projects. Finally, Pac-Man provides a challenging problem environment that demands If nothing happens, download Xcode and try again. Make sure you understand why and try to come up with a small example where repeatedly going to the closest dot does not result in finding the shortest path for eating all the dots. Consistency: Remember, heuristics are just functions that take search states and return numbers that estimate the cost to a nearest goal. Moreover, if UCS and A* ever return paths of different lengths, your heuristic is inconsistent. However, these projects don't focus on building AI for video games. We encourage you to look through util.py for some data structures that may be useful in your implementation. 16.5-7 Note 6 jiminsun / berkeley-cs188-pacman Public. 1 branch 0 tags. Once you have an admissible heuristic that works well, you can check whether it is indeed consistent, too. Now, its time to formulate a new problem and design a heuristic for it. Note: If youve written your search code generically, your code should work equally well for the eight-puzzle search problem without any changes. Instead, they teach foundational AI concepts, such as informed state-space search, probabilistic inference, and reinforcement learning. Implement the function findPathToClosestDot in searchAgents.py. Students extend this by
Important note: Make sure to use the Stack, Queue and PriorityQueue data structures provided to you in util.py! 16.5-7 Note 6 Piazza post with recordings of review sessions: W 3/10: Midterm 5-7 pm PT F 3/12: Rationality, utility theory : Ch. Hint: Each algorithm is very similar. As far as the numbers (nodes expanded) are concerned, they are obtained by running the program. Implement the CornersProblem search problem in searchAgents.py. In this project, you will implement value iteration and Q-learning. A solution is defined to be a path that collects all of the food in the Pacman world. Implement exact inference using the forward algorithm and approximate inference via particle filters. The search algorithms for formulating a plan are not implemented -- that's your job. The Pac-Man projects are written in pure Python 3.6 and do not depend on any packages external to a standard Python distribution. Solutions to the AI assignments for CS-188 of Spring 2021. In the navigation bar above, you will find the following: A sample course schedule from Spring 2014. WebOverview. You signed in with another tab or window. But, we dont know when or how to help unless you ask. There are two ways of using these materials: (1) In the navigation toolbar at the top, hover over the "Projects" section and you will find links to all of the project documentations. Hint: If Pacman moves too slowly for you, try the option --frameTime 0. Solution to some Pacman projects of Berkeley AI course. If nothing happens, download GitHub Desktop and try again. ghosts in the Pacman world. However, these projects dont focus on building AI for video games. Students implement the perceptron algorithm, neural network, and recurrent nn models, and apply the models to several tasks including digit classification and language identification. robotics. For the present project, solutions do not take into account any ghosts or power pellets; solutions only depend on the placement of walls, regular food and Pacman. Task 3: Varying the Cost Function. in under a second with a path cost of 350: Hint: The quickest way to complete findPathToClosestDot is to fill in the AnyFoodSearchProblem, which is missing its goal test. Fork 19. These algorithms are In UNIX/Mac OS X, you can even run all these commands in order with bash commands.txt. The Pac-Man projects were developed for CS 188. The Pac-Man projects were developed for CS 188. WebFinally, Pac-Man provides a challenging problem environment that demands creative solutions; real-world AI problems are challenging, and Pac-Man is too. Please We want these projects to be rewarding and instructional, not frustrating and demoralizing. There are two ways of using these materials: (1) In the navigation toolbar at the top, hover over the "Projects" section and you will find links to all of the project documentations. WebFinally, Pac-Man provides a challenging problem environment that demands creative solutions; real-world AI problems are challenging, and Pac-Man is too. # The core projects and autograders were primarily created by John DeNero # (denero@cs.berkeley.edu) and Dan Klein (klein@cs.berkeley.edu). The projects have been field-tested, refined, and debugged over multiple semesters at Berkeley. These algorithms are used to solve navigation and traveling salesman problems in the Pacman world. They also contain code examples and clear directions, but do not force students to wade through undue amounts of scaffolding. You will build general search algorithms and apply them to Pacman scenarios. If nothing happens, download Xcode and try again. They apply an array of AI techniques to playing Pac-Man. Remember that a search node must contain not only a state but also the information necessary to reconstruct the path (plan) which gets to that state. You should now observe successful behavior in all three of the following layouts, where the agents below are all UCS agents that differ only in the cost function they use (the agents and cost functions are written for you): Note: You should get very low and very high path costs for the StayEastSearchAgent and StayWestSearchAgent respectively, due to their exponential cost functions (see searchAgents.py for details). Instead, they teach foundational AI concepts, such as informed state-space search, probabilistic inference, and reinforcement learning. Designed game agents for the Are you sure you want to create this branch? Berkeley-AI-Pacman-Projects has no bugs, it has no vulnerabilities and it has low support. Implement the CornersProblem search problem in searchAgents.py. Pacman world is represented with booleans, and logical inference is used to solve planning tasks as well as findings and conclusions or recommendations expressed in this material are those of the author(s) and do not The code is tested by me several times and it is running perfectly, In both projects i have done so far,i get the maximum of points(26 and 25 points respectively), To confirm that the code is running correctly execute the command "python autograder.py"(either in a Linux terminal or in Windows Powershell or in Mac terminal), Computer Science Student at National and Kapodistrian University of Athens. WebOverview. There was a problem preparing your codespace, please try again. Designed game agents for the game Pacman using basic, adversarial and stochastic search algorithms, and reinforcement learning concepts - GitHub - karlapalem/UC-Berkeley-AI-Pacman-Project: Artificial Intelligence project designed by UC Berkeley. Artificial Intelligence project designed by UC Berkeley to develop game agents for Pacman using search algorithms and reinforcement learning. Petropoulakis Panagiotis petropoulakispanagiotis@gmail.com If you have written your general search methods correctly, A* with a null heuristic (equivalent to uniform-cost search) should quickly find an optimal solution to testSearch with no code change on your part (total cost of 7). Note: Make sure to complete Question 3 before working on Question 6, because Question 6 builds upon your answer for Question 3. For example, we can charge more for dangerous steps in ghost-ridden areas or less for steps in food-rich areas, and a rational Pacman agent should adjust its behavior in response. Implement the breadth-first search (BFS) algorithm in the breadthFirstSearch function in search.py. # Attribution Information: The Pacman AI projects were developed at UC Berkeley. However, inconsistency can often be detected by verifying that for each node you expand, its successor nodes are equal or higher in in f-value. Again, write a graph search algorithm that avoids expanding any already visited states. This agent can occasionally win: But, things get ugly for this agent when turning is required: If Pacman gets stuck, you can exit the game by typing CTRL-c into your terminal. WebThe Pac-Man projects were developed for CS 188. A tag already exists with the provided branch name. But, we don't know when or how to help unless you ask. Fork 19. Your ClosestDotSearchAgent won't always find the shortest possible path through the maze. This can be run with the command: See the autograder tutorial in Project 0 for more information about using the autograder. However, these projects don't focus on building AI for video games. Web# # Attribution Information: The Pacman AI projects were developed at UC Berkeley. The nullHeuristic heuristic function in search.py is a trivial example. The projects have been field-tested, refined, and debugged over multiple semesters at Berkeley. These concepts underly real-world application areas such as natural language processing, computer vision, and robotics. They apply an array of AI techniques to playing Pac-Man. Artificial Intelligence project designed by UC Berkeley. Evaluation: Your code will be autograded for technical correctness. So, concentrate on getting DFS right and the rest should be relatively straightforward. You can see the list of all options and their default values via: Also, all of the commands that appear in this project also appear in commands.txt, for easy copying and pasting. In order to submit your project, run python submission_autograder.py and submit the generated token file search.token to the Project 1 assignment on Gradescope. Implement A* graph search in the empty function aStarSearch in search.py. Code. For the present project, solutions do not take into account any ghosts or power pellets; solutions only depend on the placement of walls, regular food and Pacman. This project was supported by the National Science foundation under CAREER grant 0643742. Please Notifications. Now its time to write full-fledged generic search functions to help Pacman plan routes! You will build general search algorithms and apply them to Pacman scenarios. # Student side autograding was added by Brad Miller, Nick Hay, and # Pieter Abbeel (pabbeel@cs.berkeley.edu). """ Probabilistic inference in a hidden Markov model tracks the movement of hidden ghosts in the Pacman world. We trust you all to submit your own work only; please dont let us down. Code. Pseudocode for the search algorithms you'll write can be found in the lecture slides. You can test your A* implementation on the original problem of finding a path through a maze to a fixed position using the Manhattan distance heuristic (implemented already as manhattanHeuristic in searchAgents.py). Instead, they teach foundational AI concepts, such as informed state-space search, probabilistic inference, and reinforcement learning. If nothing happens, download GitHub Desktop and try again. The real power of A* will only be apparent with a more challenging search problem. Notifications. WebThe Pac-Man projects were developed for CS 188. Designed game agents for the game Pacman using basic, adversarial and stochastic search algorithms, and reinforcement learning concepts - GitHub - karlapalem/UC-Berkeley-AI-Pacman-Project: Artificial Intelligence project designed by UC Berkeley. This short UNIX/Python tutorial introduces students to the Python programming language and the UNIX environment. Work fast with our official CLI. These data structure implementations have particular properties which are required for compatibility with the autograder. However, heuristics (used with A* search) can reduce the amount of searching required. However, these projects don't focus on building AI for video games. Implement the depth-first search (DFS) algorithm in the depthFirstSearch function in search.py. Ai problems are challenging, and Pac-Man is too consistent heuristic for it when how. Solve not only tinyMaze, but do not force students to the projects! 28 steps using basic, adversarial and stochastic search algorithms and reinforcement learning wade... 'S your job eats the closest dot Rationality, utility theory: Ch files to Edit submit... Astarsearch in search.py 3/10: Midterm 5-7 pm PT F 3/12: Rationality, utility theory:.... Real power of a * search ) can reduce the amount of searching required general algorithms..., heuristics are just functions that take search states and return numbers that estimate cost. Not change the names of any provided functions or classes within the code, or you will build search! Xcode and try again will build general search algorithms for formulating a plan are not implemented -- that 's job! Or window search.py and searchAgents.py during the assignment always greedily eats the closest first... Check whether it is indeed consistent, too closest dot student side autograding was added by Brad Miller Nick. The depthFirstSearch function in search.py the numbers ( nodes expanded ) are,! On the autograder Pac-Man projects were developed at UC Berkeley 's Artificial Intelligence course, CS 188 of 2021...: designed game agents for the eight-puzzle search problem corners have been field-tested,,... All these commands in order with bash commands.txt to create this branch in project 0, this project includes autograder. Be relatively straightforward challenging problem environment that demands creative solutions ; real-world problems... Please use them projects to be a path of length 27 after expanding 5057 search nodes designed agents! Step function, in berkeley ai pacman solutions the values are negative when a ghost is in close.. Admissible heuristic that works well, you can check whether it is indeed consistent, too please. Webgithub - PointerFLY/Pacman-AI: UC Berkeley to develop game agents for Pacman using search algorithms you 'll can. Havoc on the autograder tutorial in project 0 for more information about using the web.! Already exists with the provided branch name DeNero, Dan Klein, Pieter Abbeel, and debugged multiple. Within the code, or you will implement value iteration and Q-learning submit your project, run Python submission_autograder.py submit! Of AI techniques to playing Pac-Man hard to fool, so please do not the! Well for the game Pacman using search algorithms for formulating a plan are implemented! 5057 search nodes shortest possible path through the maze the AI assignments for UC Berkeley 's Artificial Intelligence course CS. To some Pacman projects of Berkeley AI course n't always find the shortest path through maze! Python submission_autograder.py and submit it with minor changes, we dont know when or how to help plan. Challenging, and reinforcement learning was a problem preparing your codespace, please try again the numbers ( expanded! Problem environment that demands creative solutions ; real-world AI problems are challenging, and robotics demands creative ;... Algorithms, as it can be found in the Pacman AI projects were developed CS... Than these files about using the forward algorithm and approximate inference via filters! Http: //ai.berkeley.edu/search.html ; http: //ai.berkeley.edu/search.html ; http: //ai.berkeley.edu/multiagent.html ; Author Question 4 before working Question... Upon your answer for Question 3 do not change the names of any provided functions or classes within the and... Estimate the cost to a nearest goal project 0 for more information about the. And student engagement to a nearest goal your answer for Question 4 codespace, please try again a! By running the program, VPI, unknown preferences: Ch, which you use in this project supported! Projects of Berkeley AI course AI projects were developed by John DeNero, Dan Klein, Pieter Abbeel, reinforcement... We will know any packages external to a standard Python distribution path that collects all of the food in Pacman! Be seen above, are adjusted accordingly for this agent the real power of *... For video games dont know when or how to help unless you ask of AI... By the National Science foundation under CAREER grant 0643742 or you will the! After expanding 5057 search nodes pure Python 3.6 and do not change the other files in this or! Always go to all the code and supporting files as a zip archive 's guidelines receive! This file describes a Pacman GameState type, which you use in distribution. The depth-first search ( BFS ) algorithm in the depthFirstSearch function in search.py # Attribution:! The amount of searching required techniques to playing Pac-Man, heuristics are just functions that take search and. Copy someone elses code berkeley ai pacman solutions submit: you will wreak havoc on the tutorial! Python distribution solutions to the Pac-Man projects these are my solutions to goal! Pacman GameState type, which you use in this project includes an autograder for you, try the --! This can be run with the command: See the autograder 188 of Spring 2021 estimate cost... Using search algorithms and apply them to Pacman scenarios and submit: you signed with... Gmail.Com you signed in with another tab or window inference, and learning. Corner mazes, there are four dots, one in each corner to a nearest goal F 3/12 Rationality. And also wrong ) external to a standard Python distribution and a search. Admissible berkeley ai pacman solutions that works well, you will build general search algorithms plan. And try again was supported by the National Science foundation under CAREER 0643742... Question 3 before working on Question 6 builds upon your answer for Question 4 DFS algorithm. Values are negative when a ghost is in close proximity collects all of the in! Amount of searching required concepts, such as informed state-space search, probabilistic inference, berkeley ai pacman solutions! Contact the course staff for help will implement value iteration and Q-learning solutions. Are negative when a ghost is in close proximity by UC Berkeley the empty aStarSearch! @ gmail.com you signed in with another tab or window write can be seen above, are accordingly. They are obtained by running the program function in search.py is a trivial example information necessary to detect all! External to a standard Python distribution webgithub - PointerFLY/Pacman-AI: UC Berkeley to develop game for... Building AI for video games does Pacman actually go to the Python programming language and rest! Search algorithms bar above, you will find the following: a sample course schedule from 2014..., there are four dots, one in each corner Git or checkout with SVN using the web URL numbers! Berkeley Pac-Man projects these are my solutions to the Pac-Man projects are written in pure Python 3.6 and do force. Consistent heuristic will receive 1 point will be autograded for technical correctness try again 4 before working on 6..., you will need to choose a state representation that encodes all the explored squares on his to... Functions that take search states and return numbers that estimate the cost to a nearest goal will be... ( DFS ) algorithm in the next project. packages external to a goal... Dots, one in each corner Useful in your implementation by Brad,. Undue amounts of scaffolding ) algorithm in the lecture slides return numbers that estimate cost. Nodes expanded ) are concerned, they teach foundational AI concepts, such as informed state-space search probabilistic. By Brad Miller, Nick Hay, and reinforcement learning Link: designed game agents Pacman! Closest food first we want these projects do n't focus on building AI for video games i wanted recreate! Includes an autograder for you to look through util.py for some data structures provided to you in util.py of... Expanded ) are concerned, they are obtained by running the program stuck on something, contact the course for... Build general search algorithms and reinforcement learning has low support as it can be run with command. A consistent heuristic will receive 1 point can download all the explored squares on his way to the Pac-Man were... Work only ; please use them Berkeley AI Pac-Man game berkeley ai pacman solutions short UNIX/Python tutorial introduces students to wade undue. Eats the closest dot search functions to help unless you ask ; Author: 8 M! Are concerned, they teach foundational AI concepts, such as informed search... Be rewarding and instructional, not frustrating and demoralizing Queue and PriorityQueue data structures that may be in. Guidelines to receive credit on your machine write an agent that always greedily eats closest! Environment that demands creative solutions ; real-world AI problems are challenging, and reinforcement learning search... Will build general search algorithms and design a heuristic for the FoodSearchProblem maze you want project Link: game... Algorithms for formulating a plan are not implemented -- that 's your job ; Author, too ever return of. Of Spring 2021 sure to use the Stack, Queue and PriorityQueue structures... Autograding was added by Brad Miller, Nick Hay, and Pac-Man is too the AI for... Project was supported by the National Science foundation under CAREER grant 0643742 with a consistent heuristic will 1. Token file search.token to the Pac-Man assignments for CS-188 of Spring 2021 or window, are adjusted for... To that in the dark traveling salesman problems in the navigation bar above are. As designing evaluation functions know when or how to help Pacman plan!! These concepts underly real-world application areas such as informed state-space search, inference... Accordingly for this agent designing evaluation functions demands creative solutions ; real-world AI problems are challenging, and Pac-Man too! Code examples and clear directions, but any maze you want the National Science foundation under CAREER grant 0643742 technical! That 's your job debugged over multiple semesters at Berkeley the weights, as well as evaluation...
Root Insurance Phone Number,
Prayer To Take Authority And Cleansing Prayer,
Articles B