Optimización usando el algoritmo codicioso en Python

Python | Optimización usando el algoritmo codicioso : Aquí, vamos a aprender la optimización con el algoritmo voraz en Python.

En el mundo real, la elección de la mejor opción es un problema de optimización y, como resultado, tenemos la mejor solución con nosotros. En matemáticas, la optimización es un tema muy amplio que tiene como objetivo encontrar el mejor ajuste de los datos class / problema. Tales problemas de optimización pueden ser resueltos mediante el algoritmo codicioso ( “Un algoritmo voraz es un algoritmo que sigue la heurística para resolver problemas de hacer la elección óptima localmente en cada etapa con la intención de encontrar un óptimo global” ). Esta es la definición de Wikipedia y nos encontramos con una de las soluciones óptimas, manteniendo las limitaciones en mente. Este es uno de los algoritmos más simples utilizados for optimización.

Consideremos un problema en el que se pone Hareus 1.500 € como dinero de bolsillo. Es un mozo de cuadra y necesita comprar lo esencial for mes. Así pues, él se reserva 1.000 € esenciales for y ahora tiene el resto de los 500 € for su gasto. Él fue al supermercado y no tuvo que decidir qué comprar en función del valor (una medida de cada punto relacionado con la productividad) y también tienen una restricción de 500 €. Este es uno de los problemas de optimización y el siguiente es el código de for la elección de los artículos en una de las mejores maneras.

Idea Clave: Productividad máxima con 500 €.

Python Implementación:

# Greedy Algorithm for a Optimisation Problem
# Defined a class for item,
# with its name, value and cost
class Itm(object):
def __init__(self, name, val, cost):
self.name = name
self.val = val
self.cost = cost
def getvalue(self):
return self.val
def getcost(self):
return self.cost
def __str__(self):
return self.name
# Defining a function for building a List
# which generates list of items that are
# available at supermart
def buildlist(names, values, costs):
menu = []
for i in range(len(names)):
menu.append(Itm(names[i], values[i], costs[i]))
return menu
# Implementation of greedy algorithm
# to choose one of the optimum choice
def greedy(items, maxcal, keyfunction):
itemscopy = sorted(items, key = keyfunction, reverse = True)
result = []
totalval = 0
totalcal = 0
for i in range(len(items)):
if (totalcal + itemscopy[i].getcost() <= maxcal):
result.append(itemscopy[i])
totalval = totalval + itemscopy[i].getvalue()
totalcal = totalcal + itemscopy[i].getcost()
return (result, totalval)
# Main Function
# All values are random
names = ['Ball', 'Gloves', 'Notebook', 'Bagpack', 'Charger', 'Pillow', 'Cakes', 'Pencil']
values = [89,90,95,100,90,79,50,10]
costs = [123,154,25,145,365,150,95,195]
Itemrs = buildlist(names, values, costs)
maxcost = 500 # maximum money he have to spend
taken, totvalue = greedy(Itemrs, maxcost, Itm.getvalue)
print('Total vaule taken : ', totvalue)
# Printing the list of item slected for optimum value
for i in range(len(taken)):
print(' ', taken[i])

salida

Total vaule taken :  374
Bagpack
Notebook
Gloves
Ball


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *