aula 3asilva/resources/home-page/rbc-tp-1.… · motivação – o saber da experiência •...

38
1 Aula 3 Raciocínio Baseado em Casos Monday, March 21, 2011

Upload: others

Post on 21-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

  • 1

    Aula 3Raciocínio Baseado em Casos

    Monday, March 21, 2011

  • Definição

    O raciocínio baseado em casos (RBC) é uma técnica que pretende resolver novos problemas adaptando soluções anteriormente utilizadas na resolução de problemas similares.

    RBC baseia-se no uso da Analogia

    Monday, March 21, 2011

  • RBC versus RBM

    Monday, March 21, 2011

  • Motivação – O saber da experiência

    • Classificação: “Os problemas de ouvido deste paciente são casos típicos de otite média”

    • Soluções compiladas: “Os sintomas de coração do paciente X podem ser explicados da mesma maneira que aquele paciente Y”

    • Avaliar medidas: A minha casa é como aquela que foi vendida mais em baixo nesta rua por 120.000€ mas esta tem uma vista melhor”

    • Concepção (design): para projectar este hospital, vou-me basear naquele que já fiz com um número de camas parecido, embora tenha de adaptá-lo pois este é de esquina

    • Avaliando opções: se nós atacássemos as instalações dos mísseis cubanos/russos, seria como no caso de Pearl Harbor

    Monday, March 21, 2011

  • Vantagens

    • Fac i l i t a o p rocesso de aqu i s i ção de conhecimento (ao não exigir modelos)

    • Amostragem antecipada do tipo de problemas

    • Permite a reutilização do conhecimento armazenado em bases de dados e outras fontes

    • O conhecimento é encapsulado na solução aplicada

    • Permite aprendizagem automática de novos casos

    Monday, March 21, 2011

  • Desvantagens

    • Dificuldade em obter casos disponíveis e confiáveis

    • Não cobrem todo o domínio

    • Recuperação por similaridade tem desempenho medíocre em aplicações reais

    • Não existem bons algoritmos de adaptação

    • Espaço de armazenamento do conhecimento muito maior do que modelos

    Monday, March 21, 2011

  • Algumas críticas ao Raciocínio Baseado em Modelos

    • Fase de desenvolvimento pode ser longa

    • Aprendizagem complexa

    • Não é robusto

    • Tratamento de incerteza complicado

    • Manutenção e refinamento são delicados

    • Baixo desempenho

    Monday, March 21, 2011

  • Funcionamento: ciclo dos 4 Rs

    Monday, March 21, 2011

  • Ciclo de funcionamento

    • Recuperação: quando se apresenta ao sistema um novo problema é feita a recuperação na base de casos do caso mais parecido com o problema em questão, identificando as características mais significantes comuns aos dois casos.

    • Reutilização: a partir do caso recuperado é feita a reutilização da solução a ele associada. Geralmente a solução do caso recuperado é transferida para o novo problema directamente como a sua solução.

    • Revisão: é feita quando a solução não pode ser aplicada directamente ao novo problema. O sistema avalia as diferenças entre os problemas (o novo e o recuperado), quais as partes do caso recuperado que são semelhantes ao novo caso e podem ser transferidas. A solução do caso recuperado da base é adaptada para obter a solução do novo caso.

    • Retenção: é o processo de armazenar o novo caso e sua respectiva solução para futuras recuperações. O sistema irá decidir qual a informação a armazenar e de que forma.

    Monday, March 21, 2011

  • Aquisição de Casos

    • Processo mais complexo no desenvolvimento de uma aplicação. Algumas situações:

    • Os dados não existem numa fonte externa

    A técnica de RBC pode ficar impossibilitada. A construção de casos é tão ou mais complexa que a de modelos

    • Estão semi-disponíveis numa fonte externa Situação mais comum, os dados podem ser complementados por

    um especialista

    • Os dados existem mas contêm erros

    Situação comum, os dados podem ser verificados e validados por um especialista

    • Os dados estão registrados de forma correcta e disponíveis Situação rara, só é necessário eliminar dados repetidos ou não

    relevantes

    Monday, March 21, 2011

  • Representação de Casos

    • A estrutura de representação utilizada deve permitir que o utilizador da aplicação consiga facilmente entender/manipular os dados correctamente

    • A gestão da aplicação deve ser eficiente (indexação...)• Somente os atributos que influenciam na solução

    devem ser representados• Aspectos da estrutura de um caso:

    • Problema • Solução• Avaliação da solução

    • A organização pode ser sequencial ou estruturada• No caso de ser estruturada, a hierarquia pode considerar

    semelhanças de atributos ou classificação de casos

    Monday, March 21, 2011

  • Indexação

    • Índices apontam para atributos mais discriminantes e/ou significativos

    • Apontam similaridades úteis entre os casos, construindo “atalhos” para os casos candidatos

    (Mesma ocupação? Mesmo salário?)

    • O objetivo é evitar ter de percorrer toda a base na busca do caso mais similar

    • Devem prever a utilização da informação em diferentes problemas

    • A indexação pode ser manual ou automática

    (Automáticos: Métodos de indução, análise de sensibilidade, cálculo de semelhanças, arvores de decisão)

    Monday, March 21, 2011

  • Recuperação

    • Selecção dos casos mais parecidos com a situação actual

    • Os algoritmos baseiam-se nos índices e na organização de memória para realizar a pesquisa dos casos

    • A selecção do melhor caso é realizada através de uma medida da similaridade

    • Podem ser utilizados algoritmos de buscas exaustivas e outros baseados em heurísticas

    Monday, March 21, 2011

  • Similaridade

    wi - peso da característica iaxi e ayi - valores da característica i nos casos C e Ssimi - função primitiva para a característica i

    • Observações• similaridade global [0-1] • mais fácil introduzir conhecimento do domínio: pesos• os pesos podem ser definidos manualmente ou por

    métodos automáticos

    Monday, March 21, 2011

  • Exemplo

    • Pesos• ano = 2, modelo = 3, marca = 2, cor = 1, preco =1

    • Funções primitivas• ano: (diferença ≤ 2) => 1; (2 < dif ≤ 4) => 0,5; (dif > 4) => 0

    • modelo: igual => 1; diferente => 0• marca: igual => 1; diferente => 0• cor: igual => 1; parecida => 0,5; diferente => 0

    • preço: (dif ≤ 250) => 1; (250 < dif < 1000) => 0,5); (dif > 1000) => 0

    Carro 1 Carro 1 Carro 1

    Ano 1997 1996 1995

    Marca Polo Golf Tempra

    Modelo VW VW Fiat

    Cor Azul Vermelho Azul

    Preço 1000 1500 1300

    Monday, March 21, 2011

  • Similaridade

    • De tipos numéricos• Considera uma distribuição uniforme (linear) para os valores

    dos atributos• Distribuições mais complexas devem usar funções que avaliam

    a distribuição

    • Similaridade de tipos simbólicos• São definidas enumerações

    Branco Amarelo Vermelho Castanho Preto

    Branco 1 0.8 0.4 0.15 0

    Amarelo 1 0.5 0.2 0

    Vermelho 1 0.7 0.6

    Castanho 1 0.85

    Preto 1

    Monday, March 21, 2011

  • Adaptação

    • Procura diferenças salientes entre as duas descrições e aplica regras para compensá-las

    • As regras de adaptação podem ser automáticas ou manuais

    • Geralmente, a adaptação é realizada pelo utilizador do sistema, pois a adaptação automática, se for realizada de forma errada, pode comprometer todo o sistema

    • Adaptação automática através de Substituição ou Transformação

    • Reinstanciação• Ajuste de Parâmetros• Substituição baseada em casos

    Monday, March 21, 2011

  • Solução / Aprendizagem

    • Ocorre quando um caso é solucionado com sucesso

    • O caso é armazenado no banco de casos, para que possa ser usado na solução de novos problemas

    • Podem também ser armazenados casos de insucesso

    • Quan to ma io r fo r o número de casos armazenados, melhor o índice de similaridade é gerado

    Monday, March 21, 2011

  • Alguns Problemas

    • Aquisição & descrição dos casos • nem sempre é trivial encontrar conhecimento do domínio!

    • O controle da medida de similaridade é fraco pois o matching é parcial • A acumulação de semelhanças “irrelevantes” faz com que

    certos casos sejam escolhidos em detrimento dos outros

    • como ter certeza que as propriedades A e B serão determinantes na recuperação de um caso que contém 20 atributos?

    • A explicação • pode ser prejudicada quando a recuperação é baseada numa

    medida de similaridade numérica

    Monday, March 21, 2011

  • Aplicação

    • Grande diversidade de classes de problemas• diagnóstico, planeamento, escalonamento, selecção, design,

    interpretação, ensino,....

    • Ferramentas (shells)• ReMind, CAsePOint,CASUEL, ReCall, CBR-Express, ART*,...

    • Exemplos Machine Tool Fault Diagnosis; Computer Network Diagnosis;

    Credit Analysis; Geological Deposit Prediction; Battle Planning; Bank Telex Classification; Natural Language Understanding ; Network Management; Legal Reasoning; Claims Settlement; Medical Diagnosis; Weather Prediction; Fraud Detection; Industrial Planning and Scheduling; Residential Domain; Aircraft Maintenance Domain; Helpdesk Systems for PC Network Diagnostics

    Monday, March 21, 2011

  • Sistema PROLOG CASE

    • PROLOG CASE (escrito por Bruno Gonçalves) URL - http://iscte.pt/~luis/aulas/tsi/PrologCASE.zip

    • Apontamentos e Manual do PROLOG CASE (Luís Botelho - ISCTE - Instituto Superior de Ciências do Trabalho e da EmpresaURL - http://iscte.pt/~luis/aulas/tsi/ApontamentosCBR.zip

    Monday, March 21, 2011

    http://iscte.pt/~luis/aulas/tsi/PrologCASE.ziphttp://iscte.pt/~luis/aulas/tsi/PrologCASE.ziphttp://iscte.pt/~luis/aulas/tsi/ApontamentosCBR.ziphttp://iscte.pt/~luis/aulas/tsi/ApontamentosCBR.zip

  • CBR – Exemplo Simples

    Exemplo de Conhecimento geral

    IF Heroi(H) AND Vilao(V) AND Pos(H, Pos) AND Pos(V, Pos)

    THEN Disparar(H, V)

    Neste jogo, isto é uma regra aplicável a qualquer herói e a qualquer vilão, sejam eles quais forem, que se encontrem em qualquer posição do mundo do jogo.

    Raciocínio por analogia: enquanto que a lógica e as regras representam conhecimento geral, o raciocínio por analogia baseado em casos, representa casos particulares.

    Monday, March 21, 2011

  • CBR – Exemplo Simples(Conhecimento de casos)

    Caso 1

    ProblemaHeroi(James)

    Vilao(Jaws).Pos(James, (2,5)).

    Pos(Jaws, (2, 5)).

    SoluçãoDisparar(James, Jaws).

    Caso 2Problema

    Heroi(Batman)Vilao(Pinguin).

    Pos(Batman, (10,4)).

    Pos(Pinguin, (10, 4)).

    Solução

    Disparar(Batman, Pinguin).

    Caso 3Problema

    Heroi(James)Vilao(Jaws).Pos(James, (2,10)).Pos(Jaws, (2, 5)).

    SoluçãoPassoBaixo(James).

    ProblemaHeroi(SpiderMan)Vilao(Octopus).Pos(SpiderMan, (3,10)).Pos(Octopus, (3, 5)).

    Solução: ???

    Monday, March 21, 2011

  • Qual é a solução deste problema? Isto é, que acção deverá realizar o SpiderMan?P: Qual é o caso da base de conhecimentos mais parecido com o problema actual?R: Caso 3P: Qual é a analogia entre os dois casos (o novo e o caso 3):R:

    i.e., { James/SpiderMan, Jaws/Octupus, 2/3 }

    CBR – Exemplo Simples

    Novo Problema Caso 3

    SpiderMan James

    Octopus Jaws

    3 2

    Monday, March 21, 2011

  • CBR – Exemplo Simples

    P: Qual é a solução do caso novo?R: PassoBaixo(SpiderMan), a qual resulta da aplicação da analogia estabelecida à solução do caso 3.

    Notas:★ Pode formar‑se um novo caso constituído pelo novo problema

    e a solução derivada por analogia. ★ Se este novo caso for suficientemente diferente dos casos já

    armazenados deve ser guardado na base de casos, aumentando assim o conhecimento do sistema.

    ★ É natural que haja problemas futuros que sejam mais semelhantes ao novo caso do que os outros casos já existentes.

    ★ Se o novo caso não for suficientemente diferente dos casos existentes não vale a pena armazená-lo pois a rapidez do sistema diminui com o aumento de casos armazenados.

    Compromisso

    Monday, March 21, 2011

  • Utilização do PROLOG CASE

    ★ Para utilizar o Prolog Case, é necessário carregar os seus ficheiros no interpretador de Prolog.

    ★ De seguida realizam-se as seguintes tarefas:1. Criar e armazenar uma base de casos;2. Parametrizar o sistema;3. Utilizar o raciocinador Prolog Case para obter soluções para

    problemas.

    ★ Os casos de uma base de casos são representados através do predicado case/2. ★ Primeiro argumento - descrição de um problema. ★ Segundo argumento - solução para esse problema.

    Monday, March 21, 2011

  • Utilização do PROLOG CASE• O Prolog Case tem de ser configurado através de um conjunto de

    parâmetros a serem definidos pelo programador:• comparison_threshold: Limiar de semelhança a partir do qual o sistema

    considera que um dado caso pode fornecer a solução para o novo problema;

    • storage_threshold: Limiar de semelhança até ao qual o sistema decide guardar o novo caso que resulta da junção do novo problema com a solução sugerida pelo sistema;

    • problem_matching_method: Método a ser usado pelo Prolog Case para comparar o novo problema com o problema armazenado num caso.

    • Também é necessário especificar (nos predicados top_comparable/5 e comparable_args/8):• quais os termos que são comparáveis;• qual é o método usado na comparação dos seus argumentos;• qual o valor a usar para multiplicar o resultado da comparação dos

    argumentos de modo a obter o resultado da comparação entre os termos.

    Monday, March 21, 2011

  • Utilização do PROLOG CASE(Base de Casos)

    • Os casos, no Prolog Case, são guardados em ficheiro e carregados no interpretador de Prolog. Cada caso é armazenado num facto que recorre ao predicado case/2.

    • Em vez de representar cada caso num facto case/2, usando a base de conhecimento interna do Prolog, o programador é livre de definir o predicado case/2 de outra forma qualquer, • Por exemplo, pode definir case/2 como um predicado de acesso a uma

    base de dados relacional que armazenaria os casos de forma permanente.

    • Neste caso, a consulta dos casos seria por acesso à base de dados, não sendo necessário ter em memória todos os casos.

    Monday, March 21, 2011

  • Utilização do PROLOG CASE(Exemplo de Base de Casos)

    case([ artigo_desejado(‘Learning through observation’),

    autor(‘Learning through observation’, jaçanã),

    paginaWeb(jaçanã, ‘http://iscte.pt/~jacana/’)

    ],

    [ abrir_pagina(‘http://iscte.pt/~jacana/’) ]

    ).

    case([ artigo_desejado(‘Agent based simulation’),

    autor(‘Agent based Simulation’, bruno),

    telefone(bruno, 960860360) ],

    [ telefonar(960860360) ]

    ).

    case([ artigo_desejado(‘Brainstorm assistance tool’),

    autor(‘Brainstorm assistance tool’, antonio),

    paginaWeb(antonio, ‘http://www.we-b-mind.org/~tony/’),

    telefone(antonio, 931111333) ],

    [ abrir_pagina(‘http://www.we-b-mind.org/~tony/’) ]

    ).

    Monday, March 21, 2011

    http://www.we-b-mind.org/~tony/http://www.we-b-mind.org/~tony/

  • Utilização do PROLOG CASE(Parameterização do Sistema)

    % Parâmetros

    comparison_threshold(0.5).

    storage_threshold(0.7).

    problem_matching_method(permutations).

    % Termos comparáveis

    /* top_comparable(ComparableId, FunctorSpec1, FunctorSpec2, ArgsComparisonMethod, Similarity) */

    % Functores dos termos comparáveis dos problemas

    top_comparable(1, artigo_desejado/1, artigo_desejado/1, match, 1).

    top_comparable(2, autor/2, autor/2, match, 1).

    top_comparable(3, paginaWeb/2, paginaWeb/2, match, 1).

    top_comparable(4, telefone/2, telefone/2, match, 1).

    /*top_comparable(2, autor/2, autor/2, match, 1) estabelece o contexto de comparação 2, e significa que, em qualquer contexto, dois termos de aridade 2 formados a partir do functor autor são comparáveis, que as respectivas colecções de argumentos devem ser comparadas através do método match de comparação e que a semelhança entre os dois functores é 1 */

    Monday, March 21, 2011

  • Utilização do PROLOG CASE(métodos de comparação)

    • match - compara-se a lista de termos que representa o novo problema com a lista de termos que representa o problema de um caso armazenado. O termo de ordem i do novo problema só pode ser comparado com o termo de ordem i do problema armazenado.

    • Subsequences – comparar as duas sequências S1 : [t1.1, t1.2, t1.3] e S2 : [t2.1, t2.2]

    Analogia 1 Analogia 2 Analogia 3• T1.1 corresponde

    a T2.1

    • T1.2 corresponde a T2.2

    • Em S2, falta o elemento correspondente a T1.3

    • T1.1 corresponde a T2.1

    • Em S2, falta o elemento correspondente a T1.2

    • T1.3 corresponde a T2.2

    • Em S2, falta o elemento correspondente a T1.1

    • T1.2 corresponde a T2.1

    • T1.3 corresponde a T2.2

    Monday, March 21, 2011

  • Utilização do PROLOG CASE(métodos de comparação)

    • permutations – comparar as duas sequências S1 : [t1.1, t1.2, t1.3] e S2 : [t2.1, t2.2]Analogia 1 Analogia 2 Analogia 3

    • T1.1 corresponde a T2.1

    • T1.2 corresponde a T2.2

    • Em S2, falta o elemento correspondente a T1.3

    • T1.1 corresponde a T2.1

    • T1.3 corresponde a T2.2

    • Em S2, falta o elemento correspondente a T1.2

    • T1.2 corresponde a T2.1

    • T1.1 corresponde a T2.2

    • Em S2, falta o elemento correspondente a T1.3.

    Analogia 4 Analogia 5 Analogia 6• T1.2 corresponde a

    T2.1

    • T1.3 corresponde a T2.2

    • Em S2, falta o elemento correspondente a T1.1

    • T1.3 corresponde a T2.1

    • T1.1 corresponde a T2.2

    • Em S2, falta o elemento correspondente a T1.2

    • T1.3 corresponde a T2.1

    • T1.2 corresponde a T2.2

    • Em S2, falta o elemento correspondente a T1.1

    Monday, March 21, 2011

  • Utilização do PROLOG CASE(Parameterização do Sistema)

    /* comparable_args(ComparableId, ContextId, Term1Index, Term2Index, Arg1, Arg2, ComparisonMethod, Similarity) */

    % Artigo

    comparable_args(5, 1, 1, 1, Artigo1, Artigo2, no_comparison, 1):-

    artigo(Artigo1), artigo(Artigo2), Artigo1 \= Artigo2.

    comparable_args(6, 2, 1, 1, Artigo1, Artigo2, no_comparison, 1):-

    artigo(Artigo1), artigo(Artigo2), Artigo1 \= Artigo2.

    % Autor

    comparable_args(7, 2, 2, 2, Autor1, Autor2, no_comparison, 1):-

    pessoa(Autor1), pessoa(Autor2), Autor1 \= Autor2.

    comparable_args(8, 3, 1, 1, Autor1, Autor2, no_comparison, 1):-

    pessoa(Autor1), pessoa(Autor2), Autor1 \= Autor2.

    comparable_args(9, 4, 1, 1, Autor1, Autor2, no_comparison, 1):-

    pessoa(Autor1), pessoa(Autor2), Autor1 \= Autor2.

    % URL

    comparable_args(10, 3, 2, 2, Url1, Url2, no_comparison, 1):-

    url(Url1), url(Url2), Url1 \= Url2. artigo(Artigo):- atom(Artigo).

    pessoa(Autor):- atom(Autor).

    url(Url):- atom(Url).

    Monday, March 21, 2011

  • A cláusulacomparable_args(7, 2, 2, 2, Autor1, Autor2, no_comparison, 1):-

    pessoa(Autor1), pessoa(Autor2), Autor1 \= Autor2.

    significa que, • no contexto de comparação nº 2 (estabelecido por uma cláusula

    top_comparable/5 ou comparable_args/8) (neste exemplo, é o contexto de comparação de dois termos autor/2),

    • o segundo argumento (2) de um termo pode ser comparado com o segundo argumento (2) do outro termo desde que esses argumentos sejam pessoas (pessoa(Autor1) e pessoa(Autor2)) e sejam diferentes um do outro. Se forem iguais, o sistema usa o método de comparação por omissão.

    • neste contexto e nestas circunstâncias, a semelhança entre os valores dos segundos argumentos dos dois termos é 1.

    • o método de comparação no_comparison indica que os argumentos não têm argumentos ou, se os tiverem, a semelhança não depende deles.

    Utilização do PROLOG CASE(Parameterização do Sistema)

    Monday, March 21, 2011

  • Utilização do PROLOG CASE(um pequeno programa…)

    :- ensure_loaded(cbr).

    :- ensure_loaded(kb_of_cases).

    :- ensure_loaded(parameters).

    solve(CaseNb) :-

    problem(CaseNb, Problem), cbr(Problem, Action, Simil),

    write('Problema :'), nl, write(Problem), nl, write('Accao : '), write(Action), write(' - Semelhanca : '), write(Simil), nl.

    problem(1, [artigo_desejado('The use of plans'),

    autor('The use of plans', martha),

    paginaWeb(martha, 'http://www.eecs.umich.edu/~~pollackm/')]).

    problem(2, [artigo_desejado('The Role of Emotions'),

    autor('The Role of Emotions', paolo),

    paginaWeb(paolo, 'http://www.ofai.at/~~paolo.petta/'),

    telefone(paolo, 777999555)]).

    problem(3, [artigo_desejado('A caça aos gambusinos'),

    autor('A caça aos gambusinos', pedro),

    telefone(pedro, 395564456)]).

    Monday, March 21, 2011

  • Utilização do PROLOG CASE(interacção na consola)

    | ?- solve(1).

    Problema :

    [artigo_desejado(The use of plans),autor(The use of plans,martha),paginaWeb(martha,http://www.eecs.umich.edu/~pollackm/)]

    Accao : [abrir_pagina(http://www.eecs.umich.edu/~pollackm/)] - Semelhanca : 1

    yes

    | ?- solve(2).

    Problema :

    [artigo_desejado(The Role of Emotions),autor(The Role of Emotions,paolo),paginaWeb(paolo,http://www.ofai.at/~paolo.petta/),telefone(paolo,777999555)]

    Accao : [abrir_pagina(http://www.ofai.at/~paolo.petta/)] - Semelhanca : 0.875

    yes

    | ?- solve(3).

    Problema :

    [artigo_desejado(A caça aos gambusinos),autor(A caça aos gambusinos,pedro),telefone(pedro,395564456)]

    Accao : [telefonar(395564456)] - Semelhanca : 0.833333333333333

    yes

    | ?-

    Monday, March 21, 2011

  • Mais um Exercício para o PROLOG CASE

    Caso 1Caso 1 Caso 2Caso 2 Caso 3Caso 3

    SituaçãoSituação SituaçãoSituação SituaçãoSituação

    Evento 1 O João empurrou a Ana

    Evento 1 A Maria atropelou o Ricardo

    Evento 1 O António atropelou o Zé

    Evento 2 O João roubou a carteira da Ana

    Evento 2 A Maria saiu do carro

    Evento 2 O António arranca no carro

    Evento 2 O João roubou a carteira da Ana

    Evento 3 A Maria meteu o Ricardo no carro

    Evento 2 O António arranca no carro

    Evento 3 O João fugiu Evento 3 A Maria meteu o Ricardo no carro

    Evento 2 O António arranca no carro

    Evento 3 O João fugiu

    Evento 4 A Maria entrou no carro

    Evento 2 O António arranca no carro

    Evento 3 O João fugiu

    Evento 5 A Maria arranca no carro

    Evento 2 O António arranca no carro

    ClassificaçãoClassificação ClassificaçãoClassificação ClassificaçãoClassificação

    Assalto e fuga: João, Ana, Carteira da AnaAssalto e fuga: João, Ana, Carteira da Ana

    Atropelamento e ajuda: Maria, RicardoAtropelamento e ajuda: Maria, Ricardo

    Atropelamento e fuga: António, ZéAtropelamento e fuga: António, Zé

    Monday, March 21, 2011

  • Fim

    ?

    Monday, March 21, 2011