tac scm - negociação automatizada para uma cadeia de ... · 3.2 estrutura geral da cadeia de...

74
TAC SCM - Negociação automatizada para uma Cadeia de Fornecimento Henrique Pires dos Santos da Fonseca Dissertação para a obtenção do Grau de Mestre em: Engenharia de Telecomunicações e Informática Orientador: Prof. José Alberto Rodrigues Pereira Sardinha Júri Presidente: Prof. Paulo Jorge Pires Ferreira Orientador: Prof. José Alberto Rodrigues Pereira Sardinha Vogal: Prof. Diogo Manuel Ribeiro Ferreira Maio 2014

Upload: nguyenthuan

Post on 12-Nov-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

TAC SCM - Negociação automatizada para uma Cadeiade Fornecimento

Henrique Pires dos Santos da Fonseca

Dissertação para a obtenção do Grau de Mestre em:

Engenharia de Telecomunicações e Informática

Orientador: Prof. José Alberto Rodrigues Pereira Sardinha

JúriPresidente: Prof. Paulo Jorge Pires Ferreira

Orientador: Prof. José Alberto Rodrigues Pereira SardinhaVogal: Prof. Diogo Manuel Ribeiro Ferreira

Maio 2014

Abstract

Nowadays, supply chains are central entities in our global economy with a tendency to become

bigger and more complex. Regarding the digital era, it is imperative to use Information Systems

in order to support the supply chains business processes. This way the information flow will

become more fluid resulting in an improved efficiency. The simulator TAC-SCM (Trading Agent

Competition - Supply Chain Management) [1] was developed with the goal to explore and test

Intelligent Agents with autonomous negotiation capabilities in a supply chain where computers

are produced from computer components and then sold, in order to generate profit margin for

the producer. This work documents an agent for an extension to TAC-SCM, the TAC-SCM-

Procurement Challenge [2], which focuses it’s activities on component procurement.

Keywords: TAC SCM, Supply Chain Management, Business Automation, Procurement

Market

i

Resumo

As cadeias de fornecimento são um ponto fulcral no panorama económico global tendo vindo a

aumentar exponencialmente a sua dimensão e complexidade. É imperativo recorrer ao uso de

Sistemas de Informação para suportar as atividades constituintes das cadeias de fornecimento

promovendo um melhor fluxo de informação resultando assim numa maior eficiência. O simula-

dor Trading Agent Competion - Supply Chain Management (TAC-SCM) [1] foi desenvolvido com

o intuito de explorar o desenvolvimento de Agentes Inteligentes com a capacidade de negociar

de forma autónoma numa cadeia de fornecimento onde são produzidos e transaccionados com-

putadores. Este trabalho tem como foco o desenvolvimento dum agente para este ambiente

com foco na aquisição de componentes, sendo baseado na extensão TAC-SCM-Procurement

Challenge [2]

Keywords: TAC SCM, Supply Chain Management, Business Automation, Procurement Market

iii

Conteúdo

Abstract i

Resumo iii

1 Introdução 1

2 Definição do Problema 3

2.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Background 5

3.1 Simulador TAC-SCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.1.1 Agentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.1.2 Fornecedores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.1.3 Clientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.2 Extensão TAC-SCM-PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.2.1 Negociação, produção e entrega entre os agentes produtores e os clientes 14

3.2.2 Negociação de Long-term Contracts . . . . . . . . . . . . . . . . . . . . . . 15

3.2.3 Gameplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.2.4 Agente Padrão - Dummy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4 Trabalho Relacionado 19

4.1 CMieux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

v

4.1.2 Módulo de Previsões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.1.3 Módulo de Estratégia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.1.4 Módulo de Escalonamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4.1.5 Módulo de Venda de Computadores . . . . . . . . . . . . . . . . . . . . . . 23

4.1.6 Módulo de Compra de Componentes . . . . . . . . . . . . . . . . . . . . . 24

4.2 TacTex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.2.2 Módulo de Gestão de Vendas . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4.2.3 Módulo de Gestão de Compras . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.3 CMieux - Procurement Challenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.3.1 Negociação de Long-term contracts . . . . . . . . . . . . . . . . . . . . . . 30

4.4 CrocodileAgent - Procurement Challenge . . . . . . . . . . . . . . . . . . . . . . . 31

4.4.1 Negociação de Long-term contracts . . . . . . . . . . . . . . . . . . . . . . 31

4.4.2 Negociação de Short-term contracts . . . . . . . . . . . . . . . . . . . . . . 31

5 Implementação do Agente - Bull 33

5.1 Módulo de estratégia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5.2 Módulo de previsão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5.3 Módulo de negociação de Long-term Contracts . . . . . . . . . . . . . . . . . . . . 35

5.4 Módulo de negociação de Short-term Contracts . . . . . . . . . . . . . . . . . . . . 37

5.4.1 Decisão de Compra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

6 Análise dos resultados 41

6.1 Análise do agente ao longo da implementação . . . . . . . . . . . . . . . . . . . . 42

6.1.1 Versão 1 - Implementação da estratégia de Long-term Contracts . . . . . . 42

6.1.2 Versão 2 - Implementação dos mecanismos Threshold e cutoff de inventário 44

6.1.3 Versão Final - Implementação dos mecanismos de previsão . . . . . . . . 45

6.2 Análise da performance do agente . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

6.2.1 Versus Warrior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

vi

6.2.2 Versus CrocodileAgent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

6.2.3 Versus CMieux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

7 Conclusão 55

7.1 Trabalho futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Bibliografia 57

vii

Lista de Tabelas

3.1 Parâmetros do simulador TAC-SCM-PC . . . . . . . . . . . . . . . . . . . . . . . . 15

3.2 Parâmetros de negociação de Long-term Contracts . . . . . . . . . . . . . . . . . 15

6.3 Erro dos mecanismos de previsão . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

ix

Lista de Figuras

1.1 Exemplo duma Cadeia de Fornecimento. . . . . . . . . . . . . . . . . . . . . . . . 1

3.2 Estrutura geral da cadeia de fornecimento. . . . . . . . . . . . . . . . . . . . . . . 6

3.3 Estrutura geral da cadeia de fornecimento. . . . . . . . . . . . . . . . . . . . . . . 14

3.4 Negociação de um Long-term Contract. . . . . . . . . . . . . . . . . . . . . . . . . 16

3.5 Fornecedores e componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.6 Modelo Geral do Agente CMieux a) Business to Consumer b) Business to Business 20

4.7 Arquitetura geral do Agente TacTex. . . . . . . . . . . . . . . . . . . . . . . . . . . 25

5.8 Constituição modular do agente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

5.9 Constituição modular do agente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5.10 Análise de sensibilidade do valor de Qmax. . . . . . . . . . . . . . . . . . . . . . . 36

5.11 Diagrama de negociação de Short-term contracts . . . . . . . . . . . . . . . . . . 38

6.12 Lucro no final do jogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

6.13 Percentagem de uso da capacidade de fábrica. . . . . . . . . . . . . . . . . . . . . 42

6.14 Percentagem de encomendas entregues. . . . . . . . . . . . . . . . . . . . . . . . 43

6.15 Stock em inventário no final do jogo. . . . . . . . . . . . . . . . . . . . . . . . . . . 43

6.16 Lucro no final do jogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6.17 Percentagem de uso da capacidade de fábrica. . . . . . . . . . . . . . . . . . . . . 44

6.18 Percentagem de encomendas entregues. . . . . . . . . . . . . . . . . . . . . . . . 45

6.19 Stock em inventário no final do jogo. . . . . . . . . . . . . . . . . . . . . . . . . . . 45

6.20 Lucro no final do jogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

6.21 Percentagem de uso da capacidade de fábrica. . . . . . . . . . . . . . . . . . . . . 46

xi

6.22 Percentagem de encomendas entregues. . . . . . . . . . . . . . . . . . . . . . . . 46

6.23 Stock em inventário no final do jogo. . . . . . . . . . . . . . . . . . . . . . . . . . . 47

6.24 Lucro no warrior do jogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

6.25 Percentagem de uso da capacidade de fábrica. . . . . . . . . . . . . . . . . . . . . 48

6.26 Percentagem de encomendas entregues. . . . . . . . . . . . . . . . . . . . . . . . 49

6.27 Stock em inventário no warrior do jogo. . . . . . . . . . . . . . . . . . . . . . . . . 49

6.28 Lucro no crocodile do jogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

6.29 Percentagem de uso da capacidade de fábrica. . . . . . . . . . . . . . . . . . . . . 50

6.30 Percentagem de encomendas entregues. . . . . . . . . . . . . . . . . . . . . . . . 51

6.31 Stock em inventário no crocodile do jogo. . . . . . . . . . . . . . . . . . . . . . . . 51

6.32 Lucro no cmieux do jogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6.33 Percentagem de uso da capacidade de fábrica. . . . . . . . . . . . . . . . . . . . . 52

6.34 Percentagem de encomendas entregues. . . . . . . . . . . . . . . . . . . . . . . . 53

6.35 Stock em inventário no cmieux do jogo. . . . . . . . . . . . . . . . . . . . . . . . . 53

xii

Lista de Acrónimos

TAC-SCM Trading Agent Competition - Supply Chain Management

PC Procurement Challenge

RFQ Request For Quotes

API Application programming interface

KPI Key performance indicator

xiii

1Introdução

No panorama económico actual é necessário efetuar uma gestão eficaz da cadeia de forneci-

mento permitindo uma correcta reacção às flutuações de mercado. Tendo em conta o potencial

de evolução pelo meio de certas optimizações (sendo abordadas neste trabalho) e também o

facto da grande maioria das cadeias de fornecimento serem estáticas (apostando na relação a

longo prazo com fornecedores e clientes), torna-se necessário introduzir dinamismo nas mes-

mas promovendo assim uma melhor reacção à mudança [1].

Figura 1.1: Exemplo duma Cadeia de Fornecimento.

Uma cadeia de fornecimento é constituída por uma rede de organizações interligadas por pro-

cessos de negócio com o objetivo de adquirir matéria prima, transformá-la em produtos intermé-

dios e finais, e distribuindo-os para os consumidores finais [3]. Na figura 1.1 podemos observar

1

2 CAPÍTULO 1. INTRODUÇÃO

uma cadeia de fornecimento com vários níveis de fornecedores e com vários intermediários até

ao consumidor final existindo sistemas no mundo real com números muito superiores ao ilus-

trado. Gerir uma cadeia de fornecimento é por norma um processo logístico complexo em que é

mandatária a coordenação entre os vários intervenientes. Mesmo com uma coordenação rígida

podem surgir ineficiências na cadeia de fornecimento tais como a falta de matéria prima, subutili-

zação da capacidade de fábrica, acumulação de stock, custos elevados de distribuição, atrasos.

Estes problemas surgem devido ao fraco e defeituoso fluxo de informação entre as várias entida-

des [3]. Um exemplo bem conhecido derivado do fluxo defeituoso de informação é o fenómeno

de bullwhip effect popularizado pelo MIT Beer Game [4] que aquando do aumento da procura

os vários fornecedores e produtores ao receberem essa informação podem adoptar uma estra-

tégia de safety stock, em que adquirem uma quantidade considerável de matéria prima podendo

levar à acumulação de stock ao longo da cadeia de fornecimento. Suportar as atividades da

cadeia de fornecimento com sistemas de informação é não só um passo importante em direção

ao melhor fluxo e processamento de informação como também na previsão do comportamento

das várias entidades. Este trabalho consiste no desenvolvimento dum agente inteligente [5]

que por definição é uma entidade computacional autónoma. Este agente vai ser implementado

numa cadeia de fornecimento simplificada pelo simulador TAC SCM [1] em que apenas existem

fornecedores de 1º nível, produtores e clientes. No caso específico do TAC SCM os fornecedo-

res produzem componentes de computadores, os produtores transformam esses componentes

em computadores que por sua vez são vendidos aos clientes. O agente insere-se no produtor

tendo de gerir a aquisição de componentes, a sua fábrica e a venda de computadores. Este

documento encontra-se organizado da seguinte maneira: na secção 2 será definido o problema

a resolver por este trabalho, na secção 3 é exposto o simulador TAC SCM [1] como também a

extensão TAC-SCM Procuremente Challenge [2], na secção 4 é feito o levantamento do trabalho

relacionado, na secção 5 é documentada a implementação do agente a ser desenvolvido neste

trabalh e finalmente na secção 6 serão validados os resultados obtidos.

2Definição do Problema

Nesta secção será exposto o problema que este trabalho pretende resolver. O ambiente em que

este trabalho se insere é o de uma cadeia de fornecimento dinâmica em que os vários produ-

tores são automatizados por agentes inteligentes. O simulador usado [1] simula uma cadeia de

fornecimento simplificada onde é minimizado o número de entidades ao essencial, fornecedores,

produtores e clientes eliminando qualquer intermediário como pontos de venda e distribuidores.

Também não é considerada a interação humana entre os vários responsáveis de cada enti-

dade sendo os contratos de Business to Business de fornecedores e produtores e Business

to Customer de produtores e clientes, um dado adquirido no sistema simulado. Esta simplifi-

cação permite focar os problemas de compra de componentes, agendamento de produção e

venda de computadores com o objetivo de obter a maior margem de lucro possível. Os preços

praticados ao longo da cadeia de fornecimento são consequência do número de pedidos dos

clientes sendo que a abundância dum dado recurso determina o seu valor [Miguel Gonçalves,

TEDxYouth, Braga 2011]. No mercado de compra de componentes o agente deverá conseguir

reagir às rápidas flutuações dos preços de modo a conseguir os melhores negócios possíveis

e atempadamente. No mercado de venda de computadores o número de pedido dos clientes

também varia ao longo do tempo sendo necessária uma gestão eficiente por parte do agente

sobre que pedidos aceitar. Adicionalmente é o agente que propõe o preço para os pedidos

dos clientes sendo indeterminado se os mesmos aceitam ou não. A agendamento de produção

também é da responsabilidade do agente sendo necessário lidar com as limitações de capaci-

dade e de falta de componentes. O ambiente simulado conta com a presença de outros agentes

3

4 CAPÍTULO 2. DEFINIÇÃO DO PROBLEMA

que competem entre si, tendo acesso exactamente aos mesmos clientes e fornecedores. Todos

os competidores possuem o mesmo objectivo de obter a maior margem de lucro do universo

simulado.

2.1 Objetivos

O objectivo deste trabalho é desenvolver um agente eficiente num ambiente simulado, sendo ne-

cessário realizar o levantamento das técnicas usadas neste tipo de ambientes. O simulador a ter

em consideração é o TAC-SCM (Trading Agent Competition – Supply Chain Management), que

é usado desde 2002 em competições de agentes inteligentes de modo a promover uma Testbed

para o estudo do uso de técnicas de inteligência artificial. O TAC-SCM simula uma cadeia de

fornecimento com apenas 1 nível de fornecedores e 1 nível de clientes. O agente inteligente a

ser desenvolvido opera entre estas duas entidades, no produtor. Neste ambiente os fornece-

dores vendem componentes de computador, os produtores transformam-nos em computadores

que por fim são vendidos aos clientes finais. Neste trabalho o foco vai incidir sobre a aquisição

de componentes o que permite balizar o problema sendo possível obter conclusões mais claras

acerca da eficácia das técnicas usadas. Para esse efeito, e no âmbito deste trabalho, o simu-

lador a ser usado é o TAC-SCM-PC (Procurement Challenge), um spin-off do jogo base. Nesta

versão o universo do jogo é constituído por 3 produtores concorrentes, 3 clientes e 10 fornece-

dores, sendo a simulação executada ao longo de 100 dias (10 segungos por dia). É necessário

ter em conta que este ambiente apenas simula algumas variáveis do mundo real sendo este

demasiado complexo de modo a extrapolar um modelo matemático fidedigno. Existe também a

limitação temporal de 10 segundos por dia em que o agente deve balizar todos os seus cálculos

e acções. O estudo do trabalho relacionado vai incidir sobre as técnicas, nomeadamente de

forecast, usadas por agentes bem sucedidos em competições passadas de modo a desenvol-

ver competências para o desenvolvimento dum agente próprio. Ao longo da realização deste

trabalho o agente vai ser fortemente testado usando os registos gerados pelas simulações.

3Background

Nesta secção será apresentado o simulador TAC-SCM [1] e a sua extensão TAC-SCM-PC [6]

[2] que serve como base deste trabalho, representando o ambiente em que será desenvolvido o

agente.

3.1 Simulador TAC-SCM

Com o intuito de simular um ambiente duma cadeia de fornecimento dinâmica e simplificada, foi

desenvolvido o simulador TAC SCM, em que o panorama geral está representado na fig. 3.2.

O Jogo consiste numa competição de 6 agentes a nível do produtor, tendo de competir entre si

pela aquisição de componentes de computadores aos fornecedores, e também por ordens de

encomenda de computadores por parte dos clientes. Diariamente os clientes lançam pedidos

de orçamento a todos os produtores que daqui em diante serão denominados por Request for

Quotes (RFQ), dando assim início a um leilão. Os produtores respondem com uma oferta que

posteriormente é analisada pelo cliente, seleccionando o conjunto de ofertas que resultam num

maior proveito. Os produtores estão limitados pela capacidade das suas linhas de montagem,

e têm de adquirir componentes dum conjunto de oito fornecedores. O agente está inserido

no produtor, sendo as outras entidades (clientes, fornecedores, banca, produção e serviços de

armazém) simuladas pelo servidor de jogo. No fim do tempo de jogo é declarado vencedor

5

6 CAPÍTULO 3. BACKGROUND

o agente que acumulou a maior quantia na banca. Apesar da simplicidade do simulador, são

simuladas várias situações reais de cadeias de fornecimento, sendo também necessário ter em

conta que o produtor tem de lidar com vários segmentos de mercado podendo a partir daí definir

a sua estratégia.

Figura 3.2: Estrutura geral da cadeia de fornecimento.

3.1.1 Agentes

Sendo os agentes o núcleo do produtor as suas responsabilidades diárias são:

• Negociar contratos de fornecimento

• Responder aos RFQs dos clientes

• Gerir a linha de montagem

• Arquivar a encomenda enviando o produto final aos respetivos clientes

Analisando a transferência de informação (fig. 3.2), o agente recebe diariamente vários artefac-

tos das diversas entidades presentes no jogo:

Dos Clientes

• RFQs.

• Status Quo dos leilões em que está envolvido.

3.1. SIMULADOR TAC-SCM 7

• Penalizações e cancelamento de encomendas devido a atrasos

Dos Fornecedores

• Envio de ofertas aos agentes em resposta aos RFQs enviados pelos mesmos.

• Entrega de componentes. Esses componentes apenas podem ser usados em produção

no dia seguinte

Da Banca

• Extracto bancário

Da fábrica

• Inventário (componentes e computadores)

Atentando às responsabilidades dos agentes e usando os artefactos recebidos, os mesmos

terão de realizar durante o dia um determinado número de acções:

1. Escolher os RFQs dos clientes aos quais se envia uma oferta licitando assim no leilão

aberto.

2. Escolher os componentes a comprar, enviando RFQs aos fornecedores.

3. Que ofertas dos fornecedores escolher, enviando para isso uma ordem de encomenda.

4. Decisão do escalonamento da fábrica de modo a gerir a capacidade de produção e o

inventário enviando um cronograma à fábrica.

5. Que computadores enviar para entrega de modo a satisfazer os pedidos pendentes dos

clientes enviando uma ordem de despacho à fábrica.

Todos os agentes possuem condições idênticas de linha de montagem e de armazém, sendo

preciso para cada modelo de computador um número de ciclos de montagem específico. A

capacidade diária de cada linha de montagem é fixa. É enviado diariamente o alinhamento de

produção à fábrica, a qual trata esse alinhamento de forma sequencial, porém apenas serão pro-

cessadas as entradas para as quais existam componentes suficientes. Os computadores recém-

montados são enviados para o armazém estando prontos para entrega no dia seguinte. As en-

tregas são controladas por uma ordem de entrega que é distribuída diariamente pelo agente à

8 CAPÍTULO 3. BACKGROUND

fábrica. São realizadas através do inventário e processadas sequencialmente. Todos os produ-

tos do inventário vão ter associada uma taxa de armazenamento sendo esta taxa calculada no

início do jogo e é igual para todos os agentes. No início do jogo cada agente tem o saldo a zeros,

sendo transferidos fundos para a conta no momento da entrega de computadores. Aquando da

recepção de componentes por parte dos fornecedores é debitada a respectiva quantia, também

quando ocorrem penalizações devido a atrasos nas entregas. É permitido ao agente ter a conta

com um saldo negativo, sendo aplicada nessa situação uma taxa de juros segundo a seguinte

fórmula:

bd+1 = (1 +α

E)bd + creditsd − debitsd (3.1)

Sendo bd o balanço no dia d, α a taxa anual de empréstimo e E a duração do jogo. Quando

o saldo é positivo, o agente recebe juros segundo a fórmula 3.1, porém com um valor de α

ajustado.

3.1.2 Fornecedores

Numa instância de jogo existem 8 fornecedores diferentes, havendo 2 fornecedores para cada

tipo de componente necessário à produção de computadores. As acções diárias dos fornecedo-

res podem-se resumir a 3 pontos:

1. Gerir a produção de componentes.

2. Responder aos RFQs dos agentes com ofertas tendo em conta a capacidade futura.

3. Despacho de componentes.

Tendo uma natureza automática, os fornecedores regem-se segundo as seguintes suposições:

• Tirar o maior proveito nas encomendas.

• Reservar uma porção da capacidade a futuros negócios. Dar preferência a agentes que

possuam um histórico de ofertas aceites.

• Apenas serão produzidos componentes caso hajam encomendas, nunca serão produzidos

componentes com o objetivo de manter stock.

• Mesmo que uma encomenda demore vários dias a satisfazer, serão ignorados os custos

de armazém.

3.1. SIMULADOR TAC-SCM 9

• Apenas são enviadas as encomendas com a quantidade acordada, exceptuando no último

dia de jogo em que podem ser escoadas fracções de encomendas.

• Caso a capacidade de produção não esteja lotada, essa capacidade será usada para en-

comendas pendentes. Contudo as encomendas apenas serão enviadas na data acordada

previamente. Componentes que fazem parte de encomendas futuras podem ser desvi-

ados para encomendas a mais curto prazo, mas apenas se a capacidade disponível for

suficiente para cumprir com as condições dessas encomendas.

• A cada dia é calculada a capacidade efectiva de forma aleatória segundo uma distribuição

uniforme.

• Os negócios são feitos com base na capacidade futura esperada.

• Caso a capacidade não seja suficiente para cumprir uma encomenda, essa encomenda

terá prioridade acrescida em relação a uma encomenda a mais longo prazo.

• Existe um sistema de fidelização. Os agentes que possuam um histórico de aceitar uma

percentagem maior de ofertas terão preferência na atribuição de ofertas por parte do for-

necedor.

Cada agente pode enviar diariamente 5 RFQs para cada tipo de componente (total de 10 RFQs

por fornecedor). Um RFQ contém toda a informação relevante ao pedido de um dado com-

ponente por parte do agente: quantidade requerida (Qrfq), data de entrega, preço de reserva

(preço máximo por unidade, Preserva). Após processamento é gerada uma oferta correspondente

a cada RFQ com uma quantidade (Qoferta) menor ou igual que a quantidade pedida (Qrfq) de

modo a satisfazer o preço de reserva (Preserva). Caso seja impossível cumprir o preço de re-

serva (Preserva), a oferta é enviada na mesma mas com quantidade (Qoferta) nula, de forma

a notificar o produtor. O processamento dos RFQs recebidos durante o dia são processados

no fim do mesmo, e as ofertas geradas enviadas no dia seguinte. Pode dar-se o problema de

não ser possível satisfazer um pedido por completo na data pedida, sendo nessa situação ve-

rificado o preço de reserva (Preserva) correspondente. Se o preço de reserva (Preserva) for 0

(sem limitação) ou acima dum limiar (valor que oscila no intervalo [0.9...1.2] do preço base dum

componente Pbase,c) o fornecedor responde com até duas ofertas, uma que alivia a quantidade

pedida (Qrfq) e/ou outra que atrasa a data de entrega. Caso sejam emitidas ambas as ofertas o

agente apenas poderá optar por uma delas. Todas as ofertas têm um limite de validade de um

dia.

10 CAPÍTULO 3. BACKGROUND

Capacidade das linhas de produção. Para cada tipo de componente existe uma linha dedi-

cada tendo cada uma associado um valor Cnom que indica a capacidade nominal. A capacidade

efectiva para o dia d, ou seja o que o fornecedor vai produzir no dia d é calculada segundo a

equação 3.2.

Cacd,i = max(1, Cacd−1 + random(−0.05,+0.05)Cnom + 0.01(Cnom − Cacd−1)) (3.2)

No primeiro dia a capacidade efectiva do dia anterior Cacd−1 adopta um valor de ±35%

Podem ocorrer situações em que a capacidade é maior que a necessária, como o fornecedor

só produz para pedidos directos dos agentes, essa capacidade extra não será utilizada. Em

oposição a capacidade pode ser insuficiente para produzir todas as encomendas com data de

entrega no dia seguinte, sendo assim ocorrerão atrasos porém essas encomendas terão priori-

dade sobre as outras.

Planeamento da capacidade disponível. As ofertas em resposta aos RFQs dos produtores

são geradas com base na capacidade disponível e também no inventário transmissível a enco-

mendas com ordem de despacho mais próxima. Porém o fornecedor apenas está disposto a

alocar toda a sua capacidade até um certo dia no futuro, sendo que a partir do dia d+20 (sendo

d o dia corrente), o fornecedor aloca apenas uma porção da sua capacidade.

Reputação dos Agentes. À semelhança duma cadeia de fornecimento assente sobre o mundo

real onde a reputação dos vários actores é um factor determinante, no TAC SCM é implementado

um sistema de reputação que se baseia no rácio de ofertas (dos fornecedores) aceites pelo pro-

dutor pelo total de ofertas que o produtor recebeu. Posto isto, cada fornecedor detém um registo

da interacção entre ele próprio e os agentes, calculando o rácio com base na equação 3.3.

ζa =quantitityPurchasedaquantitityOffereda

(3.3)

Por defeito este rácio tem o valor unitário no início do jogo. O agente possui bastante controlo

sobre este valor tendo em conta que define um preço de reserva nos RFQs, pois os fornecedo-

res apenas respondem com uma oferta caso o preço não ultrapasse esse valor. Caso o preço

de reserva não possa ser cumprido, o fornecedor poderá processar uma oferta com uma quan-

tidade de componentes reduzida Q′r que possa respeitar o preço de reserva. Outra situação

extraordinária é quando o preço de reserva pode ser cumprido, mas por limitações de capa-

cidade a quantidade pedida não seja alcançada até à data pedida pelo agente sendo que irá

receber duas ofertas do fornecedor, uma oferta parcial e uma oferta com a quantidade pedida

mas sem limitações na data de entrega, apenas podendo escolher uma delas. Nestes casos,

3.1. SIMULADOR TAC-SCM 11

o processamento da reputação será um pouco diferente, a variável quantityOffereda será a

maior de um dos seguintes pontos:

1. Quantidade da oferta escolhida.

2. 20% da quantidade reduzida Q′r.

Com o intuito de controlar a tentativa de um agente inundar os fornecedores com RFQs, a

reputação é calculada da seguinte segundo a equação 3.4.

repa =min(apr, ζa)

apr(3.4)

apr tomará valores diferentes para fornecedores que detenham o monopólio do tipo de compo-

nentes e para fornecedores que estejam inseridos no mesmo mercado. Tendo em conta ζ, é

concluído que existe uma forte prevenção de um agente tentar controlar o mercado, evitando

que o mesmo peça grandes quantidades com o intuito de subir o preço dos componentes ou

mesmo bloquear o mercado.

Preço dos componentes. O preço dos componentes flutua ao longo do tempo de jogo, sendo

calculado a partir do rácio da procura pela oferta. Aquando do processamento do preço de com-

ponentes destinado a um determinado agente com repa = y , a procura corresponde ao total

de componentes nas ofertas do dia d enviadas aos agentes com repa ≥ y mais a quantidade

de componentes nas encomendas pendentes. O preço dum componente a ser enviado no dia

d+ i+ 1 é dado por:

Pd,i = P basec

(1− δ

(Cavld,i

iCacd

))(3.5)

Sendo δ um fator de desconto, P basec o preço base do componente em questão, a capacidade

efectiva da linha de montagem P acd (3.2),e a capacidade disponível Cavld,i .

Processamento das Ofertas. De modo a maximizar o lucro, os fornecedores têm em conside-

ração o conjunto de RFQs recebidos para cada tipo de componente. Para isso e como primeira

aproximação é necessário encontrar o majorante da seguinte função:

∑rεRc

q′rPd,ir (3.6)

Sendo Rc o conjunto de RFQs recebidos para o tipo de componente c, q′

r ≤ q a quantidade

12 CAPÍTULO 3. BACKGROUND

oferecida pelo RFQ r e ir o tempo de produção. São necessárias 3 operações de modo a gerar

o conjunto de ofertas a serem enviadas:

1. Seleccionar todos os RFQs vencedores, ou seja, que possam ser enderençados tendo em

conta o preço de reserva. Inerente ao anterior é o calculo do preço tendo em conta a

reputação de cada agente.

2. Caso existam limitações de capacidade, são geradas ofertas parciais dando preferência

aos agentes com reputação mais alta.

3. Para cada oferta parcial é gerada, se possível, uma oferta complementar com a quantidade

total pedida, mas numa data de entrega posterior.

Pagamento. Os agentes confirmam as ofertas respondendo com uma ordem de encomenda.

Alguns fornecedores podem pedir uma porção do pagamento como forma de sinal, tipicamente

10%, o restante é saldado na entrega.

3.1.3 Clientes

Os clientes encomendam computadores aos agentes seguindo um conjunto de regras. Os pe-

didos são feitos sobre a forma de RFQs tendo como campos o tipo de produto, a quantidade,

a data de entrega, o preço de reserva e o valor de penalização caso ocorram atrasos. Tanto a

preço de reserva, a data de entrega, e o valor de penalização são escolhidos pelo cliente se-

gundo uma distribuição uniforme porém a quantidade é escolhida segundo uma distribuição de

Poisson. Existem três gamas de mercado: gama alta, média e baixa. Para cada uma dessas

gamas os clientes vão calcular o número de RFQs que vão enviar aos produtores para cada

uma dessas gamas:

N = poisson(Qd) (3.7)

Qd representa a média de RFQs por segmento de mercado, sendo alterada em cada dia de jogo

segundo uma tendência τ :

Qd+1 = min(Qmax,max(Qmin, τdQd)) (3.8)

τd+1 = max(τ,min(τmax, τd + random(−0.01, 0.01)) (3.9)

3.2. EXTENSÃO TAC-SCM-PC 13

Processamento de Ofertas. Os RFQs são enviados a todos os produtores que podem ou não

responder aos mesmos sobre a forma de uma oferta. Essa oferta só será considerada pelo

cliente caso a quantidade, a data de entrega e o preço de reserva presentes no RFQ sejam

cumpridos. O critério do cliente é bastante simples, escolhe a oferta com o preço mais baixo.

Apenas o produtor vencedor receberá uma notificação no dia seguinte de modo a demonstrar o

interesse do cliente, sobre a forma de uma ordem de encomenda. No entanto todos os agentes

serão informados diariamente dos preços mínimos e máximos de cada computador praticados

no dia anterior.

Cumprimento das encomendas. Os produtos enviados no dia d apenas chegaram ao cliente

no dia d+1, dia esse em que é realizado o pagamento da encomenda, que será directamente

depositado na conta do produtor. As penalizações são processadas diariamente até um limite

de 5 dias. No término desse limite a encomenda é cancelada. No ultimo dia de jogo todas as

encomendas não penalizadas são penalizadas até ao 5º dia.

3.2 Extensão TAC-SCM-PC

O simulador que vai ser usado na implementação do agente é uma extensão do simulador TAC-

SCM [1]. Nesta extensão, TAC-SCM-PC [6] [2], é criada uma abstracção de toda a negociação

entre o agente produtor e os clientes, sendo o foco a negociação entre o agente produtor e os

fornecedores de componentes (fig. 3.3). São simulados 100 dias de operação em que 3 agentes

produtores competem entre si pelo maior lucro.

Nesta versão o simulador assume algumas das responsabilidades do agente produtor:

• Negociação entre o agente produtor e os clientes (mercado de venda de computadores).

• Agendamento de produção de computadores.

• Entrega de computadores aos clientes.

Diaramente todos os agentes recebem exactamente o mesmo conjunto de encomendas por

parte dos clientes. O simulador ordena as encomendas por ordem decrescente de preço, ten-

tando produzir PCs nessa ordem. Para cada encomenda na lista, caso o agente possua os

14 CAPÍTULO 3. BACKGROUND

Figura 3.3: Estrutura geral da cadeia de fornecimento.

componentes necessários para satisfazer a encomenda, a mesma é produzida e enviada ao

cliente.

São retirados da simulação os seguintes elementos:

• Sistema de reputação de agentes perante os fornecedores.

• Encomendas entregues após a data de entrega acordada.

• Penalizações de encomendas não entregues.

3.2.1 Negociação, produção e entrega entre os agentes produtores e os

clientes

O simulador está encarregue de toda a negociação necessária entre os agentes produtores e

os clientes, como também da produção de computadores e entrega dos mesmos. Diariamente

cada cliente calcula o número de encomendas a fazer aos agentes, de forma semelhante ao jogo

base (Eq. 3.7). Calculado o número total de encomendas N , cada agente receberá o mesmo

número de encomendas N/n, sendo n o número total de Produtores.

Cada encomenda é constituída por um tipo de PC escolhido aleatoriamente, preço por unidade

pc, prazo de entrega lt e a quantidade de PCs qc. O preço é escolhido uniformemente segundo

3.2. EXTENSÃO TAC-SCM-PC 15

Número médio de encomendas nossegmentos Alto e Baixo

[Qmin, Qmax] [12, 50]

Número médio de encomendas nosegmento Médio

[Qmin, Qmax] [12, 60]

Preço mínimo de um PC Pmin 75% do preço nominal dos com-ponentes

Preço máximo de um PC Pmax 125% do preço nominal doscomponentes

Prazo de entrega de computadores [ltmin, ltmax] [3, 12] dias a partir do dia da en-comenda

Quantidade de PCs por encomenda [qmin, qmax] [1, 20]

Tabela 3.1: Parâmetros do simulador TAC-SCM-PC

o intervalo [avgpricec − Pmin, avgpricec + Pmax] (o valor é truncando caso saia fora do intervalo

[Pmin, Pmax]) sendo avgpricec caracterizado pela equação 3.10.

avgpricec =N −Qmin

Qmax −Qmin.(Pmax − Pmin) + Pmin (3.10)

Desta forma é garantido que quanto maior a procura mais alto será o preço do componente.

Tanto o prazo de entrega lt e a quantidade de PCs por encomenda qc são calculados uniforme-

mente com base nos intervalos [ltmin, ltmax] e [qmin, qmax] respectivamente.

3.2.2 Negociação de Long-term Contracts

O jogo base TAC-SCM apenas possui um tipo de contratos, os Short-term Contracts, que são

elegíveis para uma única transacção. Na extensão TAC-SCM-PC são inseridos os Long-term-

Contracts. Estes contratos são negociados antes do início do jogo sendo válidos até ao ultimo

dia de jogo, sendo acordada a transacção duma quantidade dentro dum intervalo flexível numa

base semanal.

Factor de flexibilidade [αmin, αmax] [0.05, 0.30]Capacidade Nominal dos fornecedo-res (CPUs)

Cnom 137 componentes / dia

Capacidade Nominal dos fornecedo-res (motherboards, memorias e discosrígidos)

Cnom 275 componentes / dia

Tabela 3.2: Parâmetros de negociação de Long-term Contracts

Um Long-term-Contract entre um agente produtor e um fornecedor é definido por:

• Uma quantidade semanal mínima Qltsmin.

16 CAPÍTULO 3. BACKGROUND

• Uma quantidade semanal máxima Qltsmax = (1 + α) ∗ Qltsmin. O parâmetro α é escolhido

uniformemente num intervalo definido (tabela 3.2) antes do início do jogo.

• Um preço de reserva de contrato pres definido pelo fornecedor, de tal modo que semanal-

mente independentemente da quantidade transaccionada entre o produtor e o fornecedor,

o produtor terá de pagar Qltsmax ∗ pres.

• Um preço de execução pexec cujo o agente de produção terá de pagar por cada compo-

nente transaccionado e será no mínimo equivalente ao preço de reserva por unidade pmin.

Qltsmax ∗ pres + q ∗ pexec (3.11)

Em suma, semanalmente o agente produtor adquire q (Qltsmin ≤ q ≤ Qltsmax) componentes de um

dado produtor e terá de pagar a esse fornecedor o valor obtido através da equação 3.11.

Figura 3.4: Negociação de um Long-term Contract.

Para cada componente existente (figura 3.5) estão associados dois fornecedores. Um apenas

provem Long-term Contracts e em contraste o outro apenas provem Short-term Contracts. Desta

forma é assegurada a diversidade a nível da categoria de contratos. A negociação dos Long-

term Contracts (figura 3.4) inicia antes do jogo começar, sendo definidos a partida por cada

fornecedor (Long-term) os valores de α e um preço de reserva pmin por unidade. O preço de

reserva por unidade é o preço mínimo pelo qual o fornecedor está disposto a vender a unidade

(difere do preço de reserva de contrato). Estes parâmetros são enviados ao agente produtor.

Neste momento o agente produtor poderá proceder a uma licitação (uma por cada fornecedor de

Long-term Contracts) que assume o seguinte formato: < Qltsmax, pexec > (caso Qltsmax < 0 ou pexec

inferior ao preço de reserva por unidade, a licitação é ignorada). Tendo todos os agentes produ-

tores efectuado as suas licitações e ainda antes de o jogo começar, cada fornecedor analisa o

3.2. EXTENSÃO TAC-SCM-PC 17

conjunto de licitações de que foi alvo. O fornecedor aloca 100% da sua capacidade nominal se-

manal (5 dias) Cnom para o total de encomendas dos agentes produtores. Para isso vai ordenar

as licitações por ordem decrescente de pexec alocando para cada agente produtor a quantidade

máxima semanalQltsmax solicitada pelo produtor. No caso de não ser possível alocar a quantidade

requisitada, o valor final de Qltsmax será o restante da capacidade nominal do fornecedor. Este

leilão segue o modelo de Vickrey [William Vickrey, Columbia University, 1961], em que o preço

de execução final pexec será correspondente à licitação seguinte mais alta. Após este cálculo o

fornecedor retorna ao agente os valores a serem usados ao longo do jogo, celebrando assim o

contrato.

Figura 3.5: Fornecedores e componentes

3.2.3 Gameplay

No início de cada semana serão executadas as transacções relativamente aos Long-term Con-

tracts negociados no início do jogo. O agente produtor escolhe uma quantidade q tal que

Qltsmin ≤ q ≤ Qltsmax. Caso a quantidade total pedida pelo conjunto de produtores a um dado

fornecedor seja inferior à sua produção, todos os produtores são aprovisionados na totalidade.

Caso contrário, em que a produção total dum fornecedor não seja suficiente para aprovisionar

todos os pedidos, cada produtor receberá uma fracção q′= R ∗ q, sendo R o rácio entre pro-

dução e total de pedidos. Assim todos os produtores receberão a mesma fracção com base no

seu pedido.

3.2.4 Agente Padrão - Dummy

O desenvolvimento dum agente para o TAC-SCM-PC é realizado através do uso duma fra-

mework específica, sendo disponibilizada uma API para interagir com o simulador. É disponibi-

lizado um agente padrão que serve como ponto de partida para o desenvolvimento. O agente

18 CAPÍTULO 3. BACKGROUND

dummy tem como base o agente padrão e é usado por defeito caso não se preencham as 3

vagas na competição, no entanto as suas diferenças para com o agente padrão não são docu-

mentadas, assim sendo assume-se que o agente dummy é igual ao agente padrão.

O agente dummy usa heurísticas simples para tomar as suas decisões, começando pelo mer-

cado de vendas onde vai aceitar todas as encomendas elaboradas pelos clientes, registando a

quantidade necessária de cada componente num vector.

3.2.4.1 Long-term Contracts

A negociação dos Long-term Contracts é efectuada usando o par < Qltsmax, pexec >. No caso do

agente dummy, para cada fornecedor, o valor da quantidade máxima (Qltsmax) é fixado em 500.

Para o valor do preço de execução (pexec) é calculado um número aleatório no intervalo uniforme

[0, 100] ao qual é acrescido o preço de reserva de unidade pmin. Tanto na primeira semana como

no restante jogo, o agente opta por encomendar a quantidade máxima (Qmax) acordada com o

fornecedor.

Algorithm 1 Pseudocódigo da negociação de Long-term Contracts

Recebe do fornecedor: pmin, αpexec = pmin + random(100)Qmax ← 500enviaLicitacao(Qmax, pexec)

3.2.4.2 Short-term Contracts

Os Short-term Contracts são negociados diariamente pelo agente. Para cada fornecedor o

agente verifica quantas unidades são necessárias para um dado componente, enviando um

RFQ essa quantidade com uma data de entrega a 2 dias no futuro.

Algorithm 2 Pseudocódigo da negociação de Short-term Contracts

quantidadeEncomendar ← QuantidadeNecessria[componente]diaDeEntrega← diaCorrente+ 2enviaRFQ(quantidadeEncomendar, diaDeEntrega)

4Trabalho Relacionado

Nesta secção de trabalho relacionado será realizado um levantamento de várias contribuições

externas de modo a criar uma base sólida para este trabalho. Serão abordados e analisados

agentes referentes ao simulador TAC-SCM (Secção 3.1) de modo a aprofundar o modelo geral

da cadeia de fornecimento simulada. Serão de seguida documentados agentes implementados

especificamente para a extensão TAC-SCM-PC (Secção 3.1.3). Os agentes a serem documen-

tados no âmbito do simulador TAC-SCM são:

• TacTex

• CMieux

Os agentes a serem documentos no âmbito da extensão TAC-SCM-PC são:

• CrocodileAgent

• CMieux

Todos os agentes desenvolvidos tanto para o simulador TAC-SCM como para a extensão TAC-

SCM-PC partilham o objectivo principal de optimizar a cadeia de fornecimento onde estão inse-

ridos de modo a maximizar a margem de lucro. Apesar deste objectivo comum os trabalhos que

vão ser aqui apresentados possuem abordagens e implementações diferentes com o intuito de

superar os seus oponentes.

19

20 CAPÍTULO 4. TRABALHO RELACIONADO

4.1 CMieux

4.1.1 Introdução

O Agente CMieux foi desenvolvido no âmbito do simulador TAC SCM [1] com o intuito de re-

solver os problemas inerentes às cadeias de valor dinâmicas, tendo como principal objectivo a

obtenção da maior margem de lucro possível durante o tempo de jogo estipulado pelo simula-

dor. Para isso o agente divide as várias tarefas de forma modular e com coesão forte entre os

vários módulos constituintes, de forma a reavaliar a sua situação nos mercados de forma rápida

e eficaz. A arquitectura geral do agente CMieux é constituída por 5 módulos [7]. O módulo de

venda de computadores analisa os pedidos (RFQs) dos clientes, o módulo de compra de com-

ponentes gera os RFQs a enviar para os fornecedores e numa fase posterior analisa as ofertas

em resposta a esses RFQs. O módulo de escalonamento agenda a produção ao longo de vários

dias no futuro baseando-se nos recursos disponíveis e na previsão de inventário. O módulo de

estratégia visa tomar decisões de alto nível (e.g. decidir a quota de mercado para cada tipo de

componente). Por fim o módulo de previsão tem como objectivo prever os preços dos compo-

nentes e computadores como também é responsável por prever as quantidades pedidas.

Figura 4.6: Modelo Geral do Agente CMieux a) Business to Consumer b) Business to Business

Como já foi referido os vários módulos são coesos entre si. Na imagem 4.6 a) é possível ve-

rificar as operações Business to Consumer entre o agente e os vários clientes. O módulo de

previsão produz as previsões a serem usadas pelo módulo de estratégia com o intuito de cal-

cular as quotas de mercado. O módulo de vendas responde às ofertas dos clientes segundo a

quota de mercado calculada pelo módulo de estratégia e por sua vez os pedidos dos clientes

são observações úteis para o módulo de estratégia. Na imagem 4.6 b) é focada a interacção

Business to Business dos fornecedores com o agente. O módulo de estratégia volta a ser uma

4.1. CMIEUX 21

peça fundamental na arquitectura do agente pois os dados referentes às quotas de mercado são

usados pelo módulo de compra para gerar as encomendas a enviar aos fornecedores.

4.1.2 Módulo de Previsões

Sendo o ambiente simulado pelo TAC SCM uma cadeia de fornecimento dinâmica, é desejável

a obtenção de informação acerca das condições futuras de mercado. O módulo de previsão é

portanto uma peça essencial do agente pois elabora previsões acerca dos preços de compra

dos componentes e venda de computadores e também previsões da quantidade de pedidos dos

clientes [7].

Previsão de Pedidos dos Clientes. Uma das previsões elaboradas pelo módulo de previsão é a

quantidade de pedidos efetuados pelos clientes. Para isso o módulo gera um conjunto de RFQs

representativos da projecção futura de pedidos. Diariamente para cada segmento de mercado

são gerados pedidos segundo uma distribuição de Poisson (3) tendo para cada segmento um

parâmetro de quantidade Q que evolui ao longo do tempo segundo uma tendência τ . De modo a

elaborar a previsão dos pedidos efetuados o módulo prevê esses dois parâmetros responsáveis

pela geração estocástica de pedidos. Para extrapolar a progressão futura destes parâmetros

é usada uma técnica de regressão, linear least squares fit usando os logs de jogos passados

como dados de treino.

Previsão de Preços. Outra das responsabilidades do módulo é a previsão dos preços pratica-

dos em ambos os mercados (compra de componentes e venda de computadores), suportando

assim decisões sobre as condições futuras de mercado. À semelhança da previsão da quan-

tidade encomendas dos clientes, os preços dos componentes também são calculados usando

a técnica de regressão linear least squares fit. Para a previsão dos preços dos componentes

é usada a técnica k nearest-neighbours [8] que consiste em prever o preço de um pedido com

data de entrega usando K RFQs passados com data de entrega mais próxima de d. O agente

documentado neste trabalho (Secção 5) usa k nearest-neighbours para a previsão de preços

dos componentes para uma data de entrega d. O módulo de compra de componentes é respon-

sável por elaborar os pedidos de componentes (RFQs), sendo as respostas dos fornecedores

usadas como dados de treino para a função de previsão. Adicionalmente o módulo de previsão

é responsável por prever os atrasos de entrega de componentes, baseando-se em observações

passadas.

22 CAPÍTULO 4. TRABALHO RELACIONADO

4.1.3 Módulo de Estratégia

O módulo de estratégia funciona com base no módulo de previsões e afecta as decisões dos

módulos de compra, escalonamento e venda de componentes representando assim o módulo

central do agente CMieux. Concretamente é escolhido o subconjunto de pedidos dos clientes a

focar e também a fracção de computadores a vender num dado dia d [7].

Cálculo da Quota de Mercado. A primeira acção diária do módulo de estratégia é de deter-

minar a quota de mercado alvo (conjunto de itens e respectiva quantidade) baseando-se nas

previsões de pedidos dos clientes, priorizando o subconjunto que represente o maior proveito.

Este módulo depara-se com uma dualidade: ter como alvo uma quota de mercado mais alargada

obtendo um lucro distribuído ao longo de todo o tipo de produtos, ou ter como foco um nicho de

mercado obtendo um lucro maximizado dentro de um subconjunto de produtos. É necessário

ter em conta que o sistema simulado é composto por um número reduzido de actores (fornece-

dores, agentes, clientes). Adicionalmente e tendo em conta os limites de capacidade das linhas

de montagem, se as vendas estiverem numa fase de proveito positivo e se essa capacidade não

estiver totalmente aproveitada conclui-se que existe subaproveitamento dos recursos. É com

base nisto que é definida uma heurística que aloca a totalidade da capacidade caso se verifi-

quem essas condições.

Cálculo do Desired to Promise. Após computar a quota de mercado de cada tipo de compo-

nente é necessário obter um esboço do agendamento de fábrica para os dias futuros (scheduling

window). São usados como input a informação referente aos componentes presentes em inven-

tário, componentes esperados, e encomendas de clientes sendo que parte do agendamento

está reservado para encomendas de clientes e outra parte para satisfazer a fatia de mercado

de cada tipo de componente calculada anteriormente. Os itens produzidos que não perten-

cem a nenhuma encomenda passam a ser unidades constituintes do Available to promise (ATP)

schedule, que representa o número de unidades que o agente tem disponíveis para novas en-

comendas dentro do intervalo de dias da scheduling window. Tendo em conta o cenário em que

o demand é maior que o supply, o agente tem como base os dados que constituem a ATP com

o objectivo de encontrar o ponto de equilíbrio entre Lucro Vs Quantidade para o dia em questão,

definindo-se assim o Desire to promise (DTP) schedule que representa os dois primeiros dias

da ATP. A razão disto é que a DTP representa os computadores disponíveis e não associados a

nenhuma encomenda como também os computadores a serem produzidos no dia. Esta técnica

assegura que o agente nunca promete vender mais do que detém em inventário e do que produz

4.1. CMIEUX 23

diariamente permitindo ao módulo de venda de computadores operar em segurança.

4.1.4 Módulo de Escalonamento

O módulo de agendamento tem como objectivo ordenar as encomendas por ordem de priori-

dade e alocá-las às linhas de montagem da fábrica. É mantido um agendamento ao longo de

vários dias no futuro que conta com as encomendas correntes, as encomendas projectadas e

a projecção de inventário. As prioridades são calculadas segundo uma técnica que favorece as

encomendas com data de entrega mais próxima e penalidades elevadas por via dum parâmetro

α que representa o trade-off entre ambos. Obtida a probabilidade, o escalonador agenda pri-

meiro as encomendas com prioridade mais elevada seguido da verificação de capacidade para

o dia corrente. Caso não exista capacidade suficiente para satisfazer os requisitos de produção

duma dada encomenda é retirada da fila e considerada no dia seguinte [7].

4.1.5 Módulo de Venda de Computadores

O módulo de venda tem como finalidade responder aos pedidos dos clientes com base na DTP

produzida pelo módulo de estratégia [7].

Previsão de preços de licitação. Antes de tomar decisões sobre os RFQs recebidos por parte

dos clientes é necessário prever uma distribuição para cada pedido que permita especificar a

probabilidade do cliente aceitar uma oferta em função do preço. Estas distribuições são obtidas

usando uma distribution tree treinada com dados de jogos anteriores. A distribution tree tem

uma configuração semelhante a uma regression tree ou a uma decision tree, porém as folhas

da árvore em vez de representarem apenas um valor representam uma distribuição, neste caso

uma distribuição normal sobre a probabilidade do cliente aceitar uma oferta em função do preço

com base na data de entrega, penalidade, preço de reserva e condições de mercado.

Processo de licitação. Com as distribuições calculadas para cada RFQ recebido, é agora

possível responder aos pedidos dos clientes com o intuito de maximizar as receitas dentro dos

limites especificados pela DTP. O agente simplifica o problema da escolha de preços com a téc-

nica continuous knapsack problem (CKP) [9] que em termos genéricos e em modo de analogia,

dado o limite de peso duma mochila e um conjunto de itens com um dado peso e valor, que

fracções desses itens colocar na mochila de modo a maximizar o valor obtido. No caso concreto

do agente o limite de peso da mochila é análogo aos limites da DTP e o valor da fracção p é

24 CAPÍTULO 4. TRABALHO RELACIONADO

referente a probabilidade p de um dado preço ser aceite pelo cliente.

4.1.6 Módulo de Compra de Componentes

O módulo de compra de componentes executa os pedidos de componentes aos fornecedo-

res como também tem a responsabilidade de tomar decisões sobre as respostas dos clientes

a esses mesmos pedidos. Na tentativa de explorar o comportamento dos fornecedores são

elaborados RFQs com quantidades e datas de entrega variadas de modo a sondar o menor

preço possível, idealmente mais baixo que os preços atribuídos a pedidos de outros agentes. O

agente documentado neste trabalho (Secção 5), para além dos RFQs que envia aos fornece-

dores com uma determinada quantidade, envia também sondas dando prioridade aos dias com

menos informação. Sendo assim as principais entradas deste módulo são as recentes ofertas

dos fornecedores, a projecção do inventário, a quota de mercado correspondente a cada tipo de

componente e a projecção dos preços dos componentes [7].

Ofertas dos Fornecedores. De modo a escolher as ofertas a aceitar é definido um limite má-

ximo aceitável de preço. Também é tida em conta a reputação do agente pois é desejável

mantê-la o mais alto possível levando assim o agente a aceitar as encomendas que cumpram a

data de entrega e a quantidade.

Pedido de Componentes. O módulo de compra de componentes tem como objectivo a ob-

tenção de componentes com o intuito de manter os níveis alvo de produção e apontando para

os menores preços possíveis. Para perceber que pedidos fazer, é processada a variável I que

denota a diferença entre os componentes necessários para manter os níveis de produção es-

tabelecidos pelo módulo de escalonamento, pela projecção do inventário até ao último dia de

jogo. O agente não necessita de adquirir essa diferença diariamente pois divide a aquisição de

componentes ao longo de vários dias. A variável I tende linearmente para 0 após o intervalo

de dias da scheduling window de modo a permitir ao agente obter componentes desse intervalo

de dias de uma forma agressiva. Isto permite evitar penalizações em encomendas pendentes e

também que sejam adquiridos pelo preço mínimo local ao da scheduling window. No agente do-

cumentado neste trabalho (Secção 5), é usada uma scheduling window de 12 dias, coincidindo

com a data de entrega de uma encomenda de computadores.

4.2. TACTEX 25

4.2 TacTex

4.2.1 Introdução

Com base no objectivo primário dum agente no ambiente TAC SCM [1] de obter o maior proveito

possível face aos competidores, é necessário existir um alto nível de coordenação entre os vários

módulos constituintes do agente de modo a existir uma interacção eficaz entre fornecedores,

clientes e a fábrica.

Figura 4.7: Arquitetura geral do Agente TacTex.

A figura 4.7 representa o modelo geral do agente TacTex [10] em que se realça os dois elemen-

tos motrizes, o módulo de gestão de compra de componentes e o módulo de gestão de venda de

computadores. O gestor de compras é responsável por enviar os RFQs de pedido de componen-

tes aos fornecedores e também pela decisão de quais ofertas aceitar. Em contraste, o gestor de

vendas controla as tarefas de produção e venda de computadores. Estes dois módulos têm uma

coesão forte existindo assim trocas de informação entre ambos. O gestor de compras comu-

nica ao gestor de vendas a projecção de inventário e os custos de reposição dos componentes

usados, sendo recebido pelo gestor de compras a projecção de uso dos componentes. Os dois

módulos aqui expostos actuam em conjunto com o intuito de obter o maior proveito possível. As-

sim sendo, o módulo de gestão de compras tenta minimizar os preços dos componentes obtidos

e o módulo de gestão de vendas tenta maximizar as receitas obtidas por cada computador pro-

duzido. Para poder actuar de forma eficiente sobre ambos os mercados é necessário alimentar

ambos os gestores com previsões futuras de mercado. O modelo de compras observa todas

as encomendas com os respectivos preços de modo a produzir previsões acerca da disponibili-

dade e preços futuros dos vários componentes. O modelo de vendas observa a quantidade de

pedidos em cada segmento de mercado, usando essa informação para estimar os parâmetros

usados nas funções que geram esses pedidos (secção 3.1.3). Esta previsão é usada para o

gestor de vendas planear a produção futura de computadores. Para decidir em que RFQs dos

26 CAPÍTULO 4. TRABALHO RELACIONADO

clientes licitar é necessário existir um modelo de offer acceptance que associa cada RFQ a uma

função que tem como saída a probabilidade de um dado preço de licitação ser aceite pelo cliente.

4.2.2 Módulo de Gestão de Vendas

O gestor de vendas engloba todas as tarefas referentes à venda e produção de computadores

sendo nesta secção descrito o funcionamento do módulo e também dos Modelos de Previsão

que suportam as suas decisões [11]. Mais especificamente este módulo executa diariamente as

seguintes ações:

• Com base no modelo de vendas prever a quantidade futura de pedidos.

• Com base no modelo de offer acceptance gerar as funções de licitação para cada RFQ.

• Agendamento de produção futura das encomendas pendentes e das encomendas previs-

tas.

• Agendamento de produção para o dia seguinte.

• Actualizar a projecção de uso de componentes.

Previsão da quantidade futura de pedidos. Para elaborar o agendamento futuro de produção

é necessário ter como base a previsão da procura de computadores. Como descrito na secção

3.1.3 o mercado de vendas está dividido em 3 segmentos (alto, médio e baixo). A procura de

cada segmento é calculada de forma independente com base nos parâmetros quantidade média

Qd e tendência τd. O número de pedidos é gerado segundo uma função de Poisson com média

Qd. Qd+1 é obtido através de Qdτd sendo τd+1 calculado com base τd e num factor aleatório.

De modo a obter uma projecção futura destes parâmetros é adoptada uma técnica Bayesiana

usando como dados de treino logs de jogos passados.

Modelo de Offer Acceptance. Como a quantidade de pedidos é muito superior à capacidade

de fábrica, o objectivo do agente não é conseguir todas as encomendas mas sim encontrar o

subconjunto que maximiza a margem de lucro [11]. Assim sendo pode-se prever o preço máximo

a que cada leilão poderia ser ganho. Porém essa abordagem requer que sejam ganhas todas

as encomendas desse subconjunto, levando assim a uma abordagem mais sofisticada: realizar

licitações altas em vários leilões e esperar ganhar uma fracção dos mesmos. Para isso é ne-

cessário estimar a probabilidade de vencer o leilão em função do preço para cada RFQ e usar

4.2. TACTEX 27

essa estimativa para maximizar a margem de lucro do agente. O método usado pelo agente [12]

envolve discretizar o intervalo de preços dividindo-o em várias caixas, e estimar a probabilidade

em cada extremidade dessas caixas sendo a distribuição obtida por interpolação dos pontos

estimados. O treino dos vários estimadores é feito com base na competição que teve lugar em

Agosto de 2003 tendo acesso aos logs dos vários jogos. É criada uma instância de treino para

cada RFQ analisado sendo consideradas como features a data corrente, a quantidade pedida, a

penalidade, a data de entrega, o preço de reserva, e os máximo e o mínimo preço que o tipo de

computador em questão foi vendido nos últimos 5 dias. Para cada ponto x no intervalo discreto

de preços é treinado um estimador sendo atribuído o valor de 1 a um leilão cujo preço vencedor

seja maior que x e 0 caso contrário.

Algoritmo de Escalonamento. O agente tem um limite (imposto pelo próprio) de apenas aten-

der aos RFQs recebidos no dia corrente até um máximo de 12 dias no futuro, significando que o

agendamento deve ser cumprido no máximo em 10 dias (secção 3). O objectivo do escalonador

é maximizar o proveito segundo o número de ciclos, os componentes presentes e esperados

em inventário e os computadores completos em inventário. O proveito de uma encomenda é

a diferença do seu preço menos as penalidades de atraso e os custos de reposição. É usado

um greedy algorithm que tenta produzir as encomendas o mais tarde possível de modo a deixar

capacidade livre para encomendas mais recentes com datas de entrega mais próximas. O es-

calonador é actualizado ao início do dia com a informação transmitida pelo Gestor de Compras

a nível de recursos de fábrica, de seguida são agendadas as encomendas com data de entrega

de 1 dia no futuro. Após este processo são agendadas as restantes encomendas até lotar a

capacidade.

Licitação nos RFQs dos clientes. O foco é encontrar o subconjunto de RFQs a licitar de modo

a maximizar o proveito obtido pela venda de computadores tendo em conta os recursos dispo-

níveis para os próximos 10 dias e também agendar as encomendas previstas pois é necessário

reservar alguma capacidade para encomendas futuras usando assim as previsões de pedidos

dos clientes. De seguida são usadas as funções obtidas através do modelo de Offer Acceptance

para cada RFQ (reais e previstos) de modo a calcular o proveito de cada possível encomenda.

A licitação ideal para um subconjunto de RFQs, pondo de parte as limitações de recursos, pode

ser representado pelo majorante da seguinte função:

Expected profit =∑

i ε all RFQs

P (order|price) ∗ (price− cost) (4.12)

28 CAPÍTULO 4. TRABALHO RELACIONADO

Porém o problema é demasiado complexo para se poder calcular o proveito do subconjunto de

RFQs de forma independente pois não existem garantias que o agente consiga ganhar todas as

encomendas do subconjunto identificado. Para simplificar o sistema é aplicada uma heurística

de licitação que assume que é possível reter uma fracção da encomenda, ou seja, na realidade

existe uma probabilidade p de vencer um dado leilão com um dado preço, aplicando a heurística

a probabilidade de vencer o leilão é total mas apenas será considerada a fracção p da enco-

menda. Com esta abstracção a equação 4.12 é usada para calcular o proveito do subconjunto

considerado. Pode existir o problema do agente vencer demasiadas encomendas face à sua

capacidade porém como parte desses RFQs são gerados pelo Gestor de Vendas do Agente, é

possível alterar a política de licitação futura de modo a compensar este excesso. Assim sendo é

possível focar o problema de encontrar o subconjunto de RFQs cujas licitações resultaram num

maior proveito usando um greedy algorithm. Primeiro é estipulado um preço de licitação para

todos os RFQs acima do preço de reserva, de seguida é escolhido um RFQ e é escolhido o novo

preço de licitação segundo 4.12. Após este processo é simulado o agendamento da encomenda

sendo todo este processo repetido até lotar a capacidade da fábrica. O critério de selecção do

próximo RFQ é dinâmico e está relacionado com os recursos de fábrica (ciclos de produção e

componentes). No caso em que a fábrica esteja a operar a menos de 90% de capacidade o

critério de selecção é o maior proveito obtido, caso contrário é o proveito por ciclo de fábrica. No

termino deste processo é obtido um agendamento de fábrica ao longo de 10 dias. As licitações

calculadas para os RFQs reais são enviadas ao cliente em forma de oferta.

4.2.3 Módulo de Gestão de Compras

O gestor de compras (fig. 4.7) [10] tem como principal função a compra de componentes aos

fornecedores com base no agendamento produzido pelo módulo de gestão de vendas. Por sua

vez o gestor de compras informa o gestor de vendas da chegada e custos de reposição dos

componentes. À semelhança do mercado de venda de computadores, também no mercado de

compra de componentes é necessário elaborar projecções acerca da disponibilidade e preço dos

produtos. Também é da responsabilidade deste módulo a supervisão da reputação do agente

e também o uso de RFQ probes de modo a melhorar os modelos de previsão. Previsão dos

preços. O modelo de compras (fig. 4.7) assiste o gestor de compras prevendo o preço que

um dado fornecedor oferece em resposta a uma dada quantidade e data de entrega pedidas no

RFQ. Para isso é necessário manter uma estimativa dos compromissos existentes dos vários

fornecedores. Está definido pelo ambiente simulado (secção 3) que o preço oferecido em res-

posta a um RFQ é totalmente calculado pela fracção de capacidade que é alocada ao longo do

4.2. TACTEX 29

dia corrente. Adicionalmente é possível ao gestor de compras calcular essa fracção de capaci-

dade pelo preço oferecido por RFQ. O processo envolve comparar ofertas do mesmo fornecedor

com datas de entrega distintas, a subtracção das capacidades alocadas entre essas duas datas

resulta na capacidade alocada no período entre essas datas. Cada linha de fornecimento tem

uma instância deste estimador alocada, sendo actualizada diariamente com as ofertas que re-

cebe. Existe também a hipótese de usar alguns dos RFQs disponíveis diariamente como probes,

sendo escolhidas as datas que se carece de informação. Devido à grande flutuação dos preços

a curto prazo o agente não planeia RFQs com datas de entrega inferiores a 5 dias, salvo uma

excepção que será exposta posteriormente.

Reputação. O agente possui um mecanismo de defesa contra o declínio de reputação abaixo

dum certo limiar. Cada fornecedor tem um rácio mínimo (secção 3) de reputação. Assim sendo

o modelo de vendas segue as ofertas recebidas dos fornecedores e informa o gestor de vendas

da quantidade que se pode rejeitar até chegar ao mínimo aceitável.

Encomendas de Componentes. Para obter o maior lucro possível é necessário vender os com-

putadores ao maior preço possível e também obter os componentes ao menor preço possível.

O papel do gestor de compras é então responder às necessidades de produção do gestor de

vendas decidindo que componentes obter. Existe um threshold mínimo de componentes em

inventário sendo no caso do agente TacTex de 800 componentes (400 no caso dos CPUs) du-

rante praticamente o jogo inteiro sendo que no final decresce linearmente. Com base nisto é

calculado diariamente o número de componentes necessários a serem encomendados de modo

a respeitar o threshold. Este cálculo é feito para todos os dias futuros e tem em conta todos

os componentes esperados, o inventário actual e o agendamento de produção. Decididos os

componentes a obter, o gestor de compras tem agora de se focar em assegurar esses itens ao

menor preço possível. Esta tarefa é simplificada sendo que para cada tipo de componente e para

um dado dia de entrega d, a entrega desse tipo de componente será feita ao cargo de apenas

uma encomenda. Assim foca-se o problema na escolha do dia a enviar esse RFQ e para que

fornecedor. Relembrando a habilidade do agente de prever os preços para um RFQ enviando

no dia corrente d com data de entrega d + i, de modo a projetar essa previsão para qualquer

d+ x com data de entrega d+ x+ i, o agente supõe que o padrão previsto pode ser deslocado

para qualquer intervalo de dias visto os preços flutuarem de forma suave de dia para dia. Na

prática é estimado um preço para datas de entrega entre [5,40] dias no futuro. Caso o preço

do componente em questão seja o mais baixo até à data de entrega requerida, é formalizado o

envio dum RFQ ao fornecedor que apresentar o preço mais baixo. Existe uma situação em que

30 CAPÍTULO 4. TRABALHO RELACIONADO

é vantajoso enviar RFQs para encomendas a curto prazo (2 dias). Por norma o gestor de vendas

não espera até ao ultimo dia possível para enviar o seu interesse aos fornecedores pois essas

encomendas poderiam resultar em preços inflacionados. Porém se os preços oferecidos pelos

fornecedores para estes prazos forem inferiores aos preços oferecidos para RFQs em situação

normal, a oferta é aceite pelo agente. Tudo isto é feito tendo em conta a reputação do agente

perante o fornecedor em causa.

4.3 CMieux - Procurement Challenge

O agente CMieux - Procurement Challenge [6] foi desenvolvido com base na versão do simu-

lador base TAC-SCM com o foco no mercado de compra de componentes. Toda a estratégia

de compra relacionada com Short-term Contracts é importada do agente desenvolvido para o

simulador base (Secção 4.1), tal como o objectivo primário do jogo de deter a maior quantia em

banca no fim do jogo.

4.3.1 Negociação de Long-term contracts

Relembrando o processo de negociação de Long-term contracts especificado no capítulo de

Background da extensão TAC-SCM-PC (Secção 3.2), no início do jogo é negociado o par <

Qltsmax, pexec > (quantidade semanal máxima, preço de execução). Semanalmente o agente terá

de pagar a cada fornecedor com que celebrou um Long-term contract Qltsmax ∗ pres + q ∗ pexec.

O agente CMieux calcula (para cada componente) o preço de execução pexec com base no

preço médio do componente nos Short-Term contracts de dados recolhidos de jogos passados.

A quantidade máxima Qltsmax é um parâmetro que está associado ao risco que o agente está

disposto a assumir com o fornecedor de Long-Term contracts. Foi concluído que a perda de

lucro relacionado com o inventário que não serviu para produção durante o jogo pesa mais que

o ganho de lucro conseguido num jogo com mais procura por parte dos cliente. Este problema

advém do facto do intervalo de [Qltsmin, Qltsmax] não ser suficientemente flexível de modo a ter um

controlo aceitável sobre as quantidades semanais pedidas. Sendo assim o CMieux adopta uma

estratégia conservadora escolhendo um valor de Qltsmax com vista a uma simulação com baixa

procura de computadores por parte dos clientes.

4.4. CROCODILEAGENT - PROCUREMENT CHALLENGE 31

4.4 CrocodileAgent - Procurement Challenge

A equipa do agente CrocodileAgent - Procurement Challenge [13], à semelhança da equipa do

CMieux - Procurement Challenge [6], participou no jogo base TAC-SCM (Secção 3.1) e poste-

riormente na extensão TAC-SCM-PC. A equipa do CrocodileAgent provém do departamento de

telecomunicações da University of Zagreb, Croatia. Nesta secção serão abordadas as decisões

referentes à implementação do agente para o TAC-SCM-PC.

4.4.1 Negociação de Long-term contracts

Antes do começo dum jogo de Procurement Challenge são negociados os Long-term contracts

com duração até ao findar da simulação. A negociação é efectuada individualmente com cada

fornecedor de Long-term contracts. A primeira interacção é efectuada pelo fornecedor para

agente produtor, sendo enviado, entre outros, o preço de reserva por unidade pmin. O agente

deve proceder neste momento ao envio da sua licitação no formato < Qltsmax, pexec > (Quantidade

máxima por semana, Preço de execução). O valor de Qltsmax é calculado para cada fornecedor

com base no preço de reserva por unidade pmin anunciado. O valor de Qltsmax dos componentes

do tipo CPU assume o valor de 270 caso pmin = 0.5 ∗ pnominal decrescendo linearmente para

190 caso pmin = 0.75∗pnominal. Para os restantes componentes, Qltsmax oscila dentro do intervalo

[370, 250]. Quanto ao valor do preço de execução pexec, o CrocodileAgent assume uma estratégia

simples e conservadora, fixando o seu valor no preço de reserva (pexec = pmin). Esta estratégia

é adoptada pelo agente documentado neste trabalho (Secção 5).

No primeiro dia de jogo a decisão da quantidade semanal (Qweek) a adquirir será igual à quanti-

dade máxima (Qltsmax) desse contrato.

Nas restantes semanas a quantidade de cada componente a encomendar dependerá do inventá-

rio detido pela fábrica do agente produtor. Caso seja inferior a um certo Threshold, a quantidade

a encomendar (Qweek) será a quantidade máxima permitida (Qltsmax), caso contrário será uma

fracção de Qltsmax, tendo em conta que

Qweekε [Qltsmin, Q

ltsmax].

4.4.2 Negociação de Short-term contracts

O CrocodileAgent assume uma heurística para a negociação de Short-term contracts no início

do jogo: A compra de componentes no início do jogo (dia 0) pode resultar em componentes mais

32 CAPÍTULO 4. TRABALHO RELACIONADO

baratos, isto porque não existe procura prévia ao dia 0. Segundo a especificação do simulador

TAC-SCM (secção 3.1), o preço está relacionado com a procura (equação 3.5). Com base

no referido, o agente vai utilizar os 5 RFQs disponíveis para cada fornecedor de Short-term

contracts, com datas de entrega espaçadas ao longo do jogo, isto para obter componentes

potencialmente mais baratos ao longo da simulação. À semelhança da estratégia de negociação

de Long-term contracts do CrocodileAgent, as decisões de negociação de Short-term contracts

ao longo do jogo têm como base a análise duma série de thresholds de modo a controlar o

inventário detido a cada momento .O agente documentado neste trabalho também implementa

um threshold máximo (Secção 5). No caso do CrocodileAgent, os valores de threshold mínimo e

máximo (Nmin e Nmax) variam ao longo do jogo segundo um factor de dia. Este factor aumenta

linearmente do dia 0 ao 60, revertendo a partir desse ponto até ao dia 95. Diariamente o agente

verifica para componente se a equação 4.13 representa uma condição é verdadeira.

Ninv + evaluatedQuantity ≥ Nmax (4.13)

Ninv representa a quantidade desse componente existente em inventário e

evaluatedQuantity a quantidade desse componente encomendada ainda não entregue, tendo

aplicado um factor de distância com base no dia de entrega (o factor de distância tende line-

armente para zero até 30 dias de distância). Caso a equação 4.13 se verifique, o agente não

procede à negociação de encomendas. Caso a equação 4.13 não se verifique o agente procede

à validação da condição exposta na equação 4.14.

Ninv +Ntdy > Nmin (4.14)

Ntdy denota a quantidade diária do componente usada pela fábrica. Se a condição na equação

4.14 não for válida o agente procede à negociação de encomendas de uma forma mais agressiva

de modo a conseguir cumprir a quantidade mínima em inventário Nmin desse componente. Para

além destas condições o agente só compra componentes até um certo preço com excepção do

inventário cair abaixo do threshold Nmin.

5Implementação do Agente - Bull

Este trabalho visa o desenvolvimento de um agente no âmbito do simulador TAC SCM – Pro-

curement challenge (secção 3.2), com o intuito de o testar contra agentes de outras equipas

que participaram anteriormente na competição. Nesta secção é detalhado todo o racional do

mesmo, que daqui em diante será denominado por Bull.

O agente Bull assume uma estrutura modular (fig. 5.8) e coesa. O módulo de previsão consome

os dados do ambiente envolvente e consequentemente armazena-os. Posteriormente usa os

dados armazenados de forma a elaborar uma estimativa dos preços praticados ao longo da série

temporal. O módulo de estratégia define limites de inventário ao longo do jogo de modo a manter

o controlo do armazem. Os módulos de negociação de Long-term e Short-term contracts tomam

as suas decisões de forma coordenada e com base nos módulos de previsão e de estratégia.

5.1 Módulo de estratégia

O módulo de estratégia advém da necessidade de controlar o inventário detido pelo agente a

cada momento, garantido que ao longo do jogo a aquisição dos vários componentes seja o

mais uniforme possível. Para isso é implementado um threshold máximo que ao ser atingido,

notifica os módulos de negociação de Long-term e Short-term contracts influenciando assim

33

34 CAPÍTULO 5. IMPLEMENTAÇÃO DO AGENTE - BULL

Figura 5.8: Constituição modular do agente.

as suas decisões de compra. Adicionalmente é implentado um mecanismo de cutoff que tem

como objectivo minimizar a quantidade de componentes em armazém no final do jogo. Estes

componentes estão assim associados a um prejuízo pois não foram usados em produção. O

mecanismo de cutoff actua directamente sobre o limite de threshold, fazendo com que o mesmo

diminua linearmente a partir do dia 85 até ao último dia do jogo.

5.2 Módulo de previsão

Para suportar a decisão de compra de componentes no mercado de Short-term Contracts, é

feito um estudo de mercado de forma a prever o preço de cada componente com um alcance de

12 dias.

Inicialmente o preço previsto para cada componente é fixado no seu preço base para todos os

dias de jogo. A cada dia de jogo é usado um algoritmo de regressão k nearest neighbours (kNN)

[8] de modo a basear a previsão de preço de um dado componente num dado dia, nos k dias

5.3. MÓDULO DE NEGOCIAÇÃO DE LONG-TERM CONTRACTS 35

Figura 5.9: Constituição modular do agente.

mais próximos. A escolha deste algoritmo baseia-se no seu rácio de eficácia e processamento

e também porque o seu uso não requer a etapa de treino. Decidiu-se fixar k=3 com base em

n1/2 (sendo n a quantidade máxima de valores vizinhos a analisar) de modo a atingir um baixo

valor de processamento. O algoritmo kNN apenas será usado para prever o preço nos dias em

que ainda não tenham sido observadas nenhuma encomenda de componentes ou sido usada

uma sonda (RFQ com quantidade nula). Diariamente é usado o algoritmo (equação 5.15) para

calcular ou recalcular a previsão dos dias [t+2; t+12] sendo t o dia corrente. Para cada dia são

encontrados os 3 dias mais próximos em que tenha sido efectuada pelo menos uma observação

de encomenda ou sonda. Seguidamente é calculada uma média ponderada sendo o peso o

inverso da distância.

kNNprediction =

∑Priceday ∗ 1

distanceday∑1

distanceday

(5.15)

Para os dias em já tenha sido efectuada pelo menos uma observação de preço para um dado

componente, é usada uma média móvel [14] de modo a obter um valor previsto com base na

tendência de preços. São apenas guardadas as 3 últimas observações que servem de entrada

para o cálculo da média aritmética, cujo resultado representa o preço previsto para esse dia..

5.3 Módulo de negociação de Long-term Contracts

Os Long-term Contracts são contratos celebrados no início do jogo e que prevalecem até ao

ultimo dia. O agente negoceia com o fornecedor uma quantidade flexível e um preço unitário com

um período de entrega semanal. No começo do jogo (dia -1) o agente negoceia os contratos de

quantidade flexível com cada fornecedor de long-term contracts. Para cada fornecedor o agente

recebe o valor do preço de reserva (Pmin) e estabelece o preço de execução igual ao preço

de reserva estabelecido pelo fornecedor (Pmin = Pexec). Adicionalmente o valor de quantidade

máxima (Qmax) é fixado nos 200 para componentes do tipo CPU, e 400 para todos os outros.

36 CAPÍTULO 5. IMPLEMENTAÇÃO DO AGENTE - BULL

De seguida o par <Pexec Qmax> é enviado para os fornecedores de Long-term Contracts. O

valor estabelecido para Pexec (Pmin = Pexec) foi escolhido com o intuito de minimizar ao máximo

o preço semanal fixo a pagar ao fornecedor de Long-term Contracts. Os valores estabelecidos

para Qmax foram encontrados com base numa análise de sensibilidade detalhada no gráfico

representado na figura 5.10. No gráfico a quantidade máxima é referente aos componentes do

tipo diferente de CPU, dado que para os CPUs a quantidade é fixada a metade. Isto porque

existem 4 tipos de CPU no mercado ao invés dos 2 tipos para qualquer outra categoria de

componente. Isto assumindo como heurística que o agente necessita de aprovisionar todos

os tipos de componentes de igual forma. O valor de Qmax = 200 é descartado a partida pois

apresenta piores resultados que todos os outros. Analisando os restantes valores, todos eles

se sobrepõem, excepto os valores de Qmax = 250 e Qmax = 400. Sendo assimo valor da

quantidade máxima Qmax é 400.

Figura 5.10: Análise de sensibilidade do valor de Qmax.

No dia 0 os contratos são enviados dos fornecedores de Long-term Contracts para os agentes

produtores, indicando o preço de execução (Pexec), a quantidade máxima (Qmax), e o preço de

reserva de contrato (Pres). De modo a dar o impulso inicial, o agente submete todas as en-

comendas neste dia com quantidade encomendada igual à quantidade máxima (Qencomendada =

Qmax). Nas semanas seguintes, com o intuito de controlar o inventário de componentes, é usado

o threshold máximo de inventário que determina a quantidade semanal (Qweek) a ser encomen-

dada. Semanalmente, caso a quantidade em inventário de um dado componente se encontre

acima desse threshold, o agente vai encomendar a quantidade mínima possível (Qmin), caso

contrário encomenda a quantidade máxima (Qmax). Desta forma é possível manter o equilíbrio

evitando o armazenamento excessivo de componentes.

5.4. MÓDULO DE NEGOCIAÇÃO DE SHORT-TERM CONTRACTS 37

Algorithm 3 Pseudo-código da decisão de compra semanal por via de Long-term Contracts

if stock[componente] > threshold thenEncomenda(QuantidadeMnima)

elseEncomenda(QuantidadeMxima)

end if

5.4 Módulo de negociação de Short-term Contracts

Em contraste com os Long-term Contracts, os Short-term Contracts são contratos de curta du-

ração que contemplam apenas uma transacção. São negociados com o fornecedor de um dado

componente a quantidade, o preço por unidade e a data de entrega.

As encomendas de computadores por parte dos clientes têm associada uma data de entrega

compreendida num intervalo de [t+3,t+12] sendo t o dia corrente. Assim sendo e para simplificar

o desenvolvimento do agente, a cada momento apenas são considerados os 12 dias seguintes

para efeitos de aprovisionamento de inventário.

No decorrer do jogo é analisada diariamente a procura de cada computador por parte dos clien-

tes, sendo registadas num vector segmentado por dia, as quantidades de todos os componen-

tes necessários à produção desses computadores. Para cada tipo de componente é analisado

o threshold máximo, caso a quantidade em inventário seja superior ao valor do threshold, os

componentes não serão registados. O agente encontra-se programado para cobrir o número

máximo de encomendas possível o que o leva a considerar todas as propostas dos clientes para

efeitos de aprovisionamento.

5.4.1 Decisão de Compra

Relembrando a negociação entre fornecedores e o agente (secção 2) (fig. 5.11) de modo a

proceder a uma compra por via de um Short-term contract, o agente terá de elaborar um RFQ

contendo o preço de reserva (Preserva), a quantidade pretendida (Qrfq) e também a data de

entrega. O fornecedor poderá então emitir uma oferta onde vem descriminado o preço por

unidade (Poffer), a quantidade (Qoffer) e a data de entrega.

Diariamente o agente analisa o vector que contém os componentes necessários para cada dia de

forma a decidir o conjunto de encomendas a efectuar. Existe um limite diário de envio de 5 RFQs

associado a cada fornecedor, sendo que um RFQ pode tomar a forma de uma encomenda ou

de uma sonda (secção 2). É percorrido o vector que contém os componentes necessários para

38 CAPÍTULO 5. IMPLEMENTAÇÃO DO AGENTE - BULL

Figura 5.11: Diagrama de negociação de Short-term contracts

os dias [t+3;t+12] sendo t o dia corrente. As encomendas de componentes terão de chegar pelo

menos um dia antes de modo a conseguir garantir a produção e entrega do computador, sendo

assim para cada dia analisado verifica-se qual o dia anterior que tenha associada a previsão

de preço mais baixa. A quantidade a encomendar é registada numa lista que associa um dado

dia a uma dada quantidade. Após percorrer os dias [t+3;t+12] o agente inicia o processo de

envio de RFQs percorrendo a lista de encomendas resultante. Caso o dia em questão contenha

uma quantidade maior que 0, é enviado um RFQ com a quantidade respectiva. Caso contrário

o agente poderá enviar uma sonda. É primeiro verificado se no dia seguinte a quantidade é

também 0, caso afirmativo são comparados o número de sondas e encomendas observadas em

cada dia. O dia que contiver o menor número de observações é-lhe associado uma sonda, sendo

enviado um RFQ com quantidade 0. O objectivo é distribuir o mais uniformemente possível o

número de sondas enviadas para cada dia, favorecendo o envio para os dias que contenham

menos informações de mercado. Este processamento continua até ter sido atingido o limite de

RFQs, neste caso 5.

5.4.1.1 Pseudo-Código da Decisão de Compra de Short-term contracts

5.4. MÓDULO DE NEGOCIAÇÃO DE SHORT-TERM CONTRACTS 39

Algorithm 4 Pseudo-código da negociação de Short-term Contracts

quantidadeEncomendar[dia]← 0 (lista que relaciona um dado dia com uma dada quantidade)

contadorRFQs← 0DiaPrecoMaisBaixofor i=3;i <= 12;i++ do

for j=2;i < j;j++ doif Preco[dia+ j] < Preco[DiaPrecoMaisBaixo] thenDiaPrecoMaisBaixo← dia+ j/x

end ifend forQuantidadeEncomendar[dia + j] ← QuantidadeEncomendar[dia + j] +QuantidadeRequerida[dia+ i]

end forfor h=2;h <= 11 || contadorRFQs = 5;h++ dodiaDeEntrega← dia+ hif QuantidadeEncomendar[dia+ h] > 0 thenEnviaRFQ(QuantidadeEncomendar[dia+ h], diaDeEntrega)contadorRFQs++

elseif QuantidadeEncomendar[dia+ h+ 1] > 0 thenContinua

elseenviaSonda(diaDeEntrega)contadorRFQs++

end ifend if

end for

6Análise dos resultados

Neste capítulo serão analisados os resultados da performance do agente Bull, documentado

neste trabalho (capítulo 5). Para obter uma leitura eficiente dos dados foram escolhidos um

conjunto de indicadores de performance (KPI) que representam no seu todo o comportamento

do agente permitindo também a comparação com os seus oponentes. O conjunto de KPIs

utilizados nestas análises são:

• Lucro total.

• Percentagem de uso da capacidade da fábrica.

• Percentagem de encomendas entregues ao cliente face às encomendas realizadas.

• Componentes em inventário no fim do jogo.

Adicionalmente é também medida a performance dos mecanismos de previsão usados pelo

agente Bull.

A validação dos resultados obtidos será efectuada em várias fases, sendo primeiro abordada a

evolução do agente Bull ao longo do seu desenvolvimento, tendo nesta fase como oponentes

os agentes dummy (secção 3.2.4). Posteriormente o Bull será posto à prova contra os agentes

Warrior [13], Crocodile [13] e CMieux [6]. Os dados foram retirados das simulações corridas

usando o simulador TAC-SCM-PC, e analisados com base numa API. Para cada fase serão re-

alizadas n simulações, segundo o teorema do limite central [8] se n (n = 35) for suficientemente

41

42 CAPÍTULO 6. ANÁLISE DOS RESULTADOS

alto (n = 30), a amostra de dados tende para uma representação de uma distribuição normal.

Com base nisto, serão calculados os intervalos de confiança a 95% para a amostra.

6.1 Análise do agente ao longo da implementação

Nesta secção serão analisadas 3 versões chave no desenvolvimento do agente.

6.1.1 Versão 1 - Implementação da estratégia de Long-term Contracts

A primeira versão foca a implementação da estratégia de negociação dos Long-term Contracts

(secção 5.3), mantendo a estratégia de base de negociação de Short-term Contracts (sec-

ção 3.2.4).

Figura 6.12: Lucro no final do jogo.

Figura 6.13: Percentagem de uso da capacidade de fábrica.

6.1. ANÁLISE DO AGENTE AO LONGO DA IMPLEMENTAÇÃO 43

Figura 6.14: Percentagem de encomendas entregues.

Figura 6.15: Stock em inventário no final do jogo.

Nesta fase o agente Bull obteve resultados no geral negativos. O lucro obtido (figura 6.12) pelo

agente cai para valores negativos na ordem dos milhões, face aos dummy que se encontram em

valores positivos. Em contraste as percentagens de uso da capacidade da fábrica (figura 6.13)

e de encomendas entregues (figura 6.14) são superiores às dos agentes dummy. O lucro (fi-

gura 6.12) negativo é reflexo do inventário (figura 6.15) retido no final do jogo pelo agente Bull,

representando itens comprados pelo agente que não serviram para produção. É possível tam-

bém observar que o inventário detido para os componentes do tipo CPU (100, 101, 110 e 111)

é em geral inferior ao dos agentes dummy, isto porque tendo em conta que existem o dobro das

categorias deste tipo de produto face aos restantes produtos, os contratos são negociados com

metade da quantidade.

44 CAPÍTULO 6. ANÁLISE DOS RESULTADOS

6.1.2 Versão 2 - Implementação dos mecanismos Threshold e cutoff de

inventário

Nesta versão foi identificada a necessidade de aplicar um Threshold (secção 5.1) máximo em

cada componente do inventário, que tende para 0 na fase final do jogo. Isto porque a acumulação

de stock no final do jogo leva a uma perda considerável no lucro do agente. Adicionalmente

nesta fase, é usado um vector (secção 5.4) que regista por dia a quantidade necessária de

cada componente de modo a satisfazer as ordens de compra dos clientes. Em contraste com o

agente dummy, o agente Bull passa a usar a quantidade máxima de RFQs (secção 5.4) que tem

disponível para cada fornecedor de Short-term contracts, aumentado assim o seu potencial de

aquisição.

Figura 6.16: Lucro no final do jogo.

Figura 6.17: Percentagem de uso da capacidade de fábrica.

Analisando os dados recolhidos é possível concluir que o lucro (figura 6.16) do Bull é superior

ao dos dummy. Um factor importante para a obtenção deste resultado é a gestão de inven-

tário (figura 6.19) levando a um stock final bastante reduzido, o que representa uma melhoria

6.1. ANÁLISE DO AGENTE AO LONGO DA IMPLEMENTAÇÃO 45

Figura 6.18: Percentagem de encomendas entregues.

Figura 6.19: Stock em inventário no final do jogo.

relativamente à versão 1. Com isto a maioria dos componentes adquiridos são usados para

produzir PCs, o que leva a um aumento do lucro. Adicionalmente as percentagens de uso da

capacidade da fábrica (figura 6.17) e de encomendas entregues (figura 6.18) são mais elevadas

que na versão 1 (figuras 6.13 e 6.14) , podendo resultar do aumento do potencial de compra de

compontentes (secção 5.4).

6.1.3 Versão Final - Implementação dos mecanismos de previsão

Nesta fase final são adicionados os mecanismos de previsão de preços de componentes usa-

dos pelo agente Bull, com o intuito de diminuir o preço de aquisição dos componentes. Os

mecanismos adicionados são o k Nearest Neighbours e a média móvel.

46 CAPÍTULO 6. ANÁLISE DOS RESULTADOS

Figura 6.20: Lucro no final do jogo.

Figura 6.21: Percentagem de uso da capacidade de fábrica.

Figura 6.22: Percentagem de encomendas entregues.

6.1. ANÁLISE DO AGENTE AO LONGO DA IMPLEMENTAÇÃO 47

Figura 6.23: Stock em inventário no final do jogo.

Numa primeira aproximação é de notar que o lucro (figura 6.20) obtido é superior ao das fases

anteriores, sendo assim possível inferir que apesar das incertezas inerentes ao mercado de

componentes, os mecanismos de previsão permitem ao agente a aquisição de componentes

a um preço mais baixo, resultando numa margem de lucro superior. Na tabela 6.3 é possível

observar a performance dos mecanismos implementados. Nesta tabela estão representados os

erros relativos (equação 6.16) do uso das duas técnicas de previsão usadas, kNN e média móvel.

O erro de cada técnica foi obtido de forma isolada sendo Pobservado correspondente ao preço

calculado através de uma das duas técnicas e Preal o preço real de compra de componentes

nesse mesmo dia. É de reforçar que quando não existem informações de mercado acerca dum

determinado dia, é usado o preço base do componente para extrapolar o preço para esse dia.

No entanto o erro associado ao uso do preço base como forma de previsão é bastante elevado

devido às flutuações de preço inerentes ao mercado de componentes. Conclui-se que o uso dos

mecanismos de previsão é abonatório, pois o erro obtido é bastante inferior em relação ao uso

exclusivo do preço base.

Preço Base 59,44%Moving Average 6,91%

kNN 10,11%

Tabela 6.3: Erro dos mecanismos de previsão

δ =Pobservado − Preal

Preal∗ 100 (6.16)

48 CAPÍTULO 6. ANÁLISE DOS RESULTADOS

6.2 Análise da performance do agente

Nesta secção são apresentados os resultados e respectivas análises da performance do agente

Bull quando posto à prova contra agentes de outras equipas. Cada uma destas análises terá

como concorrentes o agente Bull, um agente de outra equipa e um dummy.

6.2.1 Versus Warrior

A primeira análise recai quando o oponente é o agente Warrior [13]. Este agente foi desenvolvido

por uma equipa da University of Michigan tendo participado na competição de 2007 do TAC-

SCM-PC.

Figura 6.24: Lucro no warrior do jogo.

Figura 6.25: Percentagem de uso da capacidade de fábrica.

6.2. ANÁLISE DA PERFORMANCE DO AGENTE 49

Figura 6.26: Percentagem de encomendas entregues.

Figura 6.27: Stock em inventário no warrior do jogo.

Numa primeira aproximação, analisando o gráfico (figura 6.24), o agente Bull obtém uma mar-

gem de lucro bastante superior relativamente ao seu competidor. O mesmo é verdade para as

percentagens de uso da capacidade da fábrica (figura 6.25) e de encomendas entregues (fi-

gura 6.26). Porém analisando o inventário detido no fim do jogo (figura 6.27), o agente Warrior

é no geral superior. O lucro superior do agente documentado neste trabalho (capítulo 5) é ex-

plicado pela aquisição duma quantidade mais elevada de componentes, mantendo a fábrica a

produzir a um ritmo mais elevado, o que resulta numa percentagem maior de encomendas entre-

gues. Adicionalmente o agente Bull consegue uma maior margem de lucro devido aos sistemas

de previsão implementados (secção 5.2).

6.2.2 Versus CrocodileAgent

De seguida são analisados os dados resultantes das simulações corridas contra o agente Cro-

codile [13] (secção 4.4). A equipa que desenvolveu o agente CrocodileAgent provém do depar-

tamento de telecomunicações da Universidade de Zabreb, Croácia. Este agente participou na

competição de 2007 do TAC-SCM-PC.

50 CAPÍTULO 6. ANÁLISE DOS RESULTADOS

Figura 6.28: Lucro no crocodile do jogo.

Figura 6.29: Percentagem de uso da capacidade de fábrica.

O lucro (figura 6.28) dos agentes Bull e Crocodile sobrepõem-se tendo em conta os intervalos de

confiança cálculados, não sendo assim possível averiguar qual o mais eficiente. No entanto ana-

lisando os outros KPIs é possível perceber que o agente Crocodile é ligeiramente mais eficiente

no tocante às percentagens de uso da capacidade da fábrica (figura 6.29) e de encomendas

entregues (figura 6.30). Em contrapartida o Crocodile acumula uma maior quantidade de inven-

tário no final do jogo comparando com o Bull, isto devido à estratégia de cutoff (secção 5.1)

do threshold máximo de invetário permitido por componente. É de notar que tanto o agente

Bull como o agente Crocodile têm ambos uma melhor performance que o dummy em todos os

aspectos analisados.

6.2. ANÁLISE DA PERFORMANCE DO AGENTE 51

Figura 6.30: Percentagem de encomendas entregues.

Figura 6.31: Stock em inventário no crocodile do jogo.

6.2.3 Versus CMieux

Por fim é analisada a performance do agente Bull contra o agente CMieux [6] (secções 4.1 e 4.3).

O CMieux foi desenvolvido por uma equipa da Carnagie Mellon University, tendo participado na

competição de 2007 do TAC-SCM-PC.

Analisando os dados recolhidos é possível observar que o agente CMieux tem uma melhor

performance a nível de lucro obtido (figura 6.32). Quanto aos restantes KPIs os dois agentes

encontram-se equilibrados, sendo que ambos são superiores ao agente dummy. O CMieux pos-

sui algumas características que o colocam à frente do agente Bull, como a selecção da quota de

mercado em que vai focar as suas decisões de compra de componentes, maximizando assim o

seu lucro. Adicionalmente produz previsões do escalonamento das suas linhas de montagem,

dos níveis de stock em inventário e também do mercado de vendas de computadores, essenci-

ais nas decisões a tomar a nível de aprovisionamento de componentes. É também um agente

bastante selectivo a nível do preço de aquisição dos componentes, não aceitando a transacção

caso o preço se encontre acima de um dado limiar. Em contrapartida o agente Bull implementa

52 CAPÍTULO 6. ANÁLISE DOS RESULTADOS

Figura 6.32: Lucro no cmieux do jogo.

Figura 6.33: Percentagem de uso da capacidade de fábrica.

estratégias de controlo do threshold (secção 5.1) que permitem manter o mesmo nível de in-

ventário final que o CMieux (figura 6.35). As percentagens de uso da capacidade da fábrica

(figura 6.33) e de encomendas entregues (figura 6.34) são muito próximas entre os dois agentes

não sendo possível inferir qual dos dois é superior nestes campos, devendo-se este resultado

aos módulos de negociação de Long-term (secção 5.3) e Short-term (secção 5.4) contracts.

Mesmo o lucro do CMieux sendo superior ao do Bull, os dois agentes não estão muito distantes

neste KPI específico.

6.2. ANÁLISE DA PERFORMANCE DO AGENTE 53

Figura 6.34: Percentagem de encomendas entregues.

Figura 6.35: Stock em inventário no cmieux do jogo.

7Conclusão

O estabelecimento da era digital revolucionou para sempre o mundo em que vivemos, desenca-

deando a massificação de informação, passando a ser o bem mais valioso e tornando-se assim

a base da economia mundial. Os sistemas de informação têm um papel fulcral no suporte aos

negócios hoje em dia, permitindo a análise de grandes volumes de informação. Mais concre-

tamente no caso das cadeias de fornecimento, estes sistemas são essenciais para a análise

da tendência de mercado. Da necessidade de estudar técnicas inteligentes de gestão das ca-

deias de valor nasce em 2002 a competição TAC-SCM (secção 3.1) que coloca à prova agentes

numa cadeia de fornecimento simulada. Mais tarde em 2007 dá-se o aparecimento do TAC-

SCM Procurement Challenge (secção 3.2). Foi neste panorama que foi desenvolvido o agente

documentado neste trabalho (secção 5). O agente Bull foi testado contra agentes que competi-

ram na competição TAC-SCM-PC de 2007 obtendo resultados positivos (secção 6) ao longo das

várias simulações, conseguindo superar alguns dos agentes. Todas as decisões tomadas ao

longo do seu desenvolvimento tiveram o foco de aumentar a margem de lucro obtida. O agente

tenta aprovisionar-se com os componentes necessários a satisfazer o maior número possível de

encomendas (secções 5.3 e 5.4) dos clientes o que faz com que as percentagens de uso da

capacidade de fábrica e de encomendas entregues tenha subido ao longo do seu desenvolvi-

mento. A decisão de implementar um threshold e uma estratégia de cutoff permite ao agente

ter um maior controlo sobre o seu inventário (secção 5.1), permitindo terminar o jogo com uma

quantidade reduzida de componentes. Os mecanismos de previsão (secção 5.2) permitem ao

agente a aquisição de componentes a preços mais baixos, aumentando assim a margem de

lucro na venda de cada computador.

55

56 CAPÍTULO 7. CONCLUSÃO

7.1 Trabalho futuro

Como trabalho futuro propõe-se a extensão do módulo de estratégia do agente documentado

neste trabalho (secção 5.1), de modo a incluir um threshold mínimo de componentes em inven-

tário. Quando um certo componente se encontrar abaixo desse threshold o agente activa um

modo mais agressivo de aprovisionamento com o intuito de respeitar os níveis de quantidade

mínimos. Em relação ao módulo de previsão (secção 5.2), a sua extensão implica realizar previ-

sões de pedidos por parte dos clientes com o objectivo de reagir mais rápidamente às flutuações

de mercado. Adicionalmente seria interessante treinar o agente com dados de jogos passados

de forma a melhorar a capacidade de previsão do mesmo. No módulo de Long-term contracts

(secção 5.3) poderá ser realizada uma análise mais detalhada de forma a elaborar uma licitação

mais eficiente na negociação dos mesmos. Por fim no módulo de Short-term contracts (sec-

ção 5.4) deverá ser imposto um limite de preço máximo que guiará o agente na aceitação de

ofertas dos fornecedores, com o objectivo de manter uma elevanda margem de lucro.

Bibliografia

[1] Collins, J., Arunachalam, R., Sadeh, N., Eriksson, J., Finne, N., Janson, S.: The Supply

Chain Management Game for the 2007 Trading Agent Competition. Supply Chain Manage-

ment (December 2006) (2007)

[2] Alberto Sardinha, Michael Benisch, J.A.N.S.: The 2007 Supply Chain Trading Agent Com-

petition - Procurement Challenge. Supply Chain Management (June 2007) (2007)

[3] Laudon, K.C., Laudon, J.P.: Management Information Systems. Twelfth ed edn. (2012)

[4] Senge, P.: The Fifth Discipline: The Art and Practice of the Learning Organization. (1990)

[5] Lo, W.S., Hong, T.P., Jeng, R., Liu, J.P.: Intelligent Agents in Supply Chain Management as

an Early Warning Mechanism. 2006 IEEE International Conference on Systems, Man and

Cybernetics (October 2006) 2161–2166

[6] Sardinha, A., Benisch, M., Sadeh, N., Ravichandran, R., Podobnik, V., Stan, M.: The 2007

procurement challenge: A competition to evaluate mixed procurement strategies. Electronic

Commerce Research and Applications (2009)

[7] Benisch, M., Sardinha, A., Andrews, J., Ravichandran, R., Sadeh, N.: CMieux: Adaptive

strategies for competitive supply chain trading. Electronic Commerce Research and Appli-

cations 8(2) (March 2009) 78–90

[8] Mitchell, T.M.: Machine Learning. International edn. (1997)

[9] Benisch, M., Andrews, J., Sadeh, N.: Pricing for Customers with Probabilistic Valuations as

a Continuous Knapsack Problem. Work

[10] Pardoe, D., Stone, P.: An Autonomous Agent for Supply Chain Management. Information

Systems (May) (2007)

[11] Pardoe, D., Stone, P.: Bidding for Customer Orders in TAC SCM. (2005)

57

58 BIBLIOGRAFIA

[12] Schapire, R.E., Stone, P., Cs, M., Edu, D.: Modeling Auction Price Uncertainty Using

Boosting-based Conditional Density Estimation. (2002)

[13] Milivic, T., Podobnik, V., Petric, A., Jezic, G.: The CrocodileAgent: A Software Agent for

SCM Procurement Gaming

[14] Chopra, S., Meindl., P.: MSupply Chain Management - Strategy, Planning, and Operations.

Second ed edn. (2004)