# Carlos Pedro Gonçalves # Instituto Superior de Ciências Sociais e Políticas (ISCSP) - Universidade de Lisboa # E-mail: cgoncalves@iscsp.ulisboa.pt # # Aulas de programação aplicada à tomada de decisão em Gestão de Recursos Humanos: # Unidade Curricular de Estatística para a Gestão II # # Aplicação: Avaliador de desempenho - Inteligência Artificial aplicada à avaliação de desempenho # 16-04-2015 class UnidadeFabril: def __init__(self,nome,local,numTrab,pecaHora,formacao,acidentes,operarios,antiguidade): self.nome = nome self.local = local # Localização da Unidade (Portugal ou Espanha) self.numTrab = numTrab # Número de trabalhadores self.pecaHora = pecaHora # Número de peças produzidas por hora self.formacao = formacao # Número de horas de formação self.acidentes = acidentes # Número de acidentes de trabalho self.operarios = operarios # Número de operários self.antiguidade = antiguidade # Antiguidade máxima dos operários def avaliaProdutividade(self,objectivo,dmenos,dmais): print '\nAVALIAÇÃO DA PRODUTIVIDADE' avaliacao = float(self.pecaHora) / float(objectivo) distancia = abs(avaliacao - 1) if avaliacao < 1: print self.nome, 'não atingiu o objectivo de produtividade' if distancia > dmenos: print 'DISTÂNCIA EM RELAÇÃO AO OBJECTIVO DE PRODUTIVIDADE:', distancia print 'AVALIAÇÃO: A distância em relação ao objectivo é elevada' print 'CONCLUSÃO: Necessário desenvolver estratégia em torno da subida da produtividade' elif avaliacao == 1: print self.nome, 'atingiu o objectivo de produtividade' else: print self.nome, 'superou o objectivo de produtividade' if distancia > dmais: print 'DISTÂNCIA EM RELAÇÃO AO OBJECTIVO DE PRODUTIVIDADE:', distancia print 'AVALIAÇÃO: a distância em relação ao objectivo é elevada' print 'CONCLUSÃO: activar prémios de produtividade para a unidade' return avaliacao def avaliaFormacao(self,objectivo,dmenos,dmais): print '\nAVALIAÇÃO DA FORMAÇÃO' racio = float(self.formacao) / float(self.operarios) avaliacao = racio / float(objectivo) distancia = abs(avaliacao - 1) if avaliacao < 1: print self.nome, 'horas de formação por trabalhador inferiores ao objectivo' if distancia > dmenos: print 'DISTÂNCIA EM RELAÇÃO AO OBJECTIVO DE FORMAÇÃO:', distancia print 'AVALIAÇÃO: A distância em relação ao objectivo é elevada' print 'CONCLUSÃO: Necessário implementar acções de formação para os operários' elif avaliacao == 1: print self.nome, 'horas de formação por trabalhador iguais ao objectivo' else: print self.nome, 'horas de formação por trabalhador superiores ao objectivo' if distancia > dmais: print 'DISTÂNCIA EM RELAÇÃO AO OBJECTIVO DE FORMAÇÃO:', distancia print 'AVALIAÇÃO: A distância em relação ao objectivo é elevada' print 'CONCLUSÃO: Poderá diminuir o número de horas de formação, caso seja adequado' return avaliacao def avaliaAcidentes(self,objectivo,dmenos,dmais): print '\nAVALIAÇÃO DOS ACIDENTES' racio = float(self.acidentes) / float(self.operarios) avaliacao = racio / float(objectivo) distancia = abs(avaliacao - 1) if avaliacao < 1: print self.nome, 'superou o objectivo de acidentes por operário' if distancia > dmenos: print 'DISTÂNCIA EM RELAÇÃO AO OBJECTIVO DE ACIDENTES DE TRABALHO:', distancia print 'AVALIAÇÃO: A distância em relação ao objectivo é elevada' print 'CONCLUSÃO: Deverá activar prémio de segurança\n' elif avaliacao == 1: print(self.nome, 'atingiu o objectivo de acidentes por operário') else: print self.nome, 'não atingiu o objectivo de acidentes por operário' if distancia > dmais: print 'DISTÂNCIA EM RELAÇÃO AO OBJECTIVO DE ACIDENTES DE TRABALHO:', distancia print 'AVALIAÇÃO: A distância em relação ao objectivo é elevada' print 'CONCLUSÃO: Necessário desenvolver estratégia de diminuição do número de acidentes de trabalho\n' return 1 / avaliacao def avaliaUnidade(self,objectivos,pesos,listaDmenos,listaDmais): print 'Avaliação da', self.nome prod = self.avaliaProdutividade(objectivos[0],dmenos[0],dmais[0]) form = self.avaliaFormacao(objectivos[1],dmenos[1],dmais[1]) acid = self.avaliaAcidentes(objectivos[2],dmenos[2],dmais[2]) avaliacoes = [prod,form,acid] avaliacao = sum([avaliacoes[i] * pesos[i] for i in range(0,len(avaliacoes))]) print 'Valor Final:', avaliacao,'\n' #CodigoUnidade = UnidadeFabril(nome,local,numTrab,pecaHora,formacao,acidentes,operarios,antiguidade) unidadesFabris = [UnidadeFabril('Unidade 1','Portugal',200,20,2000,20,150,20)] unidadesFabris.append(UnidadeFabril('Unidade 2','Portugal',250,10,1200,10,120,15)) unidadesFabris.append(UnidadeFabril('Unidade 3','Portugal',300,25,2000,20,250,30)) unidadesFabris.append(UnidadeFabril('Unidade 4','Portugal',210,15,1500,30,110,20)) unidadesFabris.append(UnidadeFabril('Unidade 5','Portugal',220,16,1600,25,110,20)) unidadesFabris.append(UnidadeFabril('Unidade 6','Portugal',230,16,2000,15,150,25)) unidadesFabris.append(UnidadeFabril('Unidade 7','Espanha',250,25,2000,20,160,15)) unidadesFabris.append(UnidadeFabril('Unidade 8','Espanha',250,26,1100,14,160,16)) unidadesFabris.append(UnidadeFabril('Unidade 9','Espanha',210,17,1200,10,150,17)) unidadesFabris.append(UnidadeFabril('Unidade 10','Espanha',210,15,1200,20,150,20)) objectivos = [10,20,0.05] pesos = [0.35,0.35,0.3] listaDmenos = [0.2,0.2,0.2] listaDmais = [0.2,0.2,0.2] for Unidade in unidadesFabris: Unidade.avaliaUnidade(objectivos,pesos,dmenos,dmais)
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question