- 🔭 I’m currently working at Promptly Health
goncaloacteixeira / feup-iart-proj1 Goto Github PK
View Code? Open in Web Editor NEWArtificial Intelligence - First Project - 2020/21
Artificial Intelligence - First Project - 2020/21
O SA pode ter diferentes funções de cooling que modificam a forma como a temperatura baixa. Temos estas roubada dos amegos:
def exponential_cooling(self, T0, t):
return T0 * 0.8 ** t
def log_cooling(self, T0, t):
return T0 / (1 + log(1 + t))
def linear_cooling(self, T0, t):
return T0 / (1 + t)
def quadratic_cooling(self, T0, t):
return T0 / (1 + t ** 2)
e podemos ir procurar mais, isto vai dar jeito para encher o relatório/apresentação
Usar apenas mutações que causam poucas penalizações (trocar drone, crossover*) se a nova solução tiver penalizações, faz mutação de novo.
Vai assim aceitar cromossomas de score mais baixo, mas não com penaizações
Link do amigo para SA: https://machinelearningmastery.com/simulated-annealing-from-scratch-in-python/
Link do amigo para HC: https://machinelearningmastery.com/stochastic-hill-climbing-in-python-from-scratch/
Temos 2 opções para aqui.
Pegar no algoritmo Scala 1/2 e escolher as soluções que não têm o melhor score para gerar as outras soluções
Necessário implementar o algoritmo roubado do outro grupo de amiguinhos e da primeira solução do kaggle, esta é a versão simplificada
Coisas a melhorar neste algortitmo:
- Em Shipment, Drone pode ficar com espaço livre, já que só tem em conta 1 order (e.g. ultimo item da order)
- Só aceita caminhos _ -> WH -> Order.
-------------------------------------
Greedy:
Termina quando não há mais orders ou não é possível fazer shipments (falta de produtos maybe)
Para cada Drone:
BestShipment()
BestShipment():
Para Cada Order que não esteja completa:
Faz para cada warehouse:
new Shipment()
Escolhe shipment com melhor score
shipment.execute()
Shipment():
Para cada produto da order:
busca quantidade disponivel de produto
append a lista
criada lista de produtos que esse WH tem da Order
Da lista de produtos criada, vai adicionando a drone até não caber mais, so mais pesado para o mais leve (possível aplicar knapsack aqui)
Score()
Score():
percent = carga_drone / carga_order
turns = Soma das 2 distâncias mais 1's por pick up's e drop's
score = percent / turns
Shipment.execute():
- remove produtos do armazém
- remove produtos da orders
- atualiza posição do drone
- adiciona shipment ao drone
- adiciona turnos ao drone
Acho que os shipments não precisam de ser uma class necessáriamente, podem ser uma estrutura de dados apenas usada lá no meio. Se implementarmos a parte 2 é que pode dar jeito passar para classe
4 DataSets
A apontar:
Algoritmos a testar
Para além da criação de populações referenciada em #8, temos de tratar dos passos restantes:
Não esquecer o nosso amigo dos tutoriais: https://machinelearningmastery.com/simple-genetic-algorithm-from-scratch-in-python/
A partir do código acima comentado podemos fazer a segunda parte do algoritmo.
O tempo de execução aumenta substancialmente, mas as soluções terão sempre melhor pontuação que o algoritmo simplificado
Falar comigo para ter a explicação do algoritmo antes de tentar entender sozinho pelos comentários (aproveitar tempo)
Kaggle:
Info de Scala:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.