Example #1
0
def search_path_with_waypoints(waypoints):
    if waypoints and len(waypoints) > 1:
        initial_state = waypoints[0]

        for i in range(len(waypoints)-1):
            print(initial_state)

            final_state = waypoints[i+1]
            MapPathProblemWaypoints=probee.ProblemaEspacioEstados(actions,initial_state,[final_state])

            solution=busqee.BúsquedaÓptima().buscar(MapPathProblemWaypoints)
            if solution:
                print(solution)
                initial_state=waypoints[i+1]
            else:
                print("No solution found")
Example #2
0
        start_time1 = time()

        statusChange = auxiliar.Auxiliar.adjacent_triplet(status)
        statusChangeTras = [[
            statusChange[j][i] for j in range(len(statusChange))
        ] for i in range(len(statusChange[0]))]
        #    statuschange2 = auxiliar.Auxiliar.pair_induction(statusChange, statusChangeTras)
        statusTry2Next = auxiliar.Auxiliar.twoNext(statusChange)
        #    newStateMultipleCopy = copy.deepcopy(statusTry2Next)

        res = auxiliar.Auxiliar.multipleCero(statusTry2Next)
        while res:
            res = auxiliar.Auxiliar.multipleCero(statusTry2Next)

        pom = hitori(statusTry2Next)
        hitori_resolver = probee.ProblemaEspacioEstados(
            pom.acciones, pom.estado_inicial)

        numberRepeats = 0
        numberRepeats = auxiliar.Auxiliar.repeatsNumber(statusTry2Next)

        finish_time1 = time()
        execute_time1 = finish_time1 - start_time1

        #    print(statusChange)
        #    print(statusChangeTras)
        #    print(statuschange2)
        #    print(statusTry2Next)
        #    print(newStateMultipleCopy)
        #    print(len(pom.acciones))
        #    print(pom.acciones)
        #    print("numberRepeats")
Example #3
0
desplazamientoArriba = probe.Acción(
    "Moverse hacia arriba", puedeArriba, mueveArriba, suma
)  #Comprueba que puede moverse a la izquierda, se mueve y obtiene el valor de la casilla


#-----------------------------------------------------------
def puedeIzquierda(
    estado
):  #Devuelve true si al moverse a la izquierda no se sale del mapa y a la izquierda no hay una casilla de agua.
    return estado[1] > 0 and mapaEjemplo.tipoCelda(
        estado[0],
        estado[1] - 1) != 0  #Ponemos un "-" pues va hacia la izquierda


def mueveIzquierda(estado):  #nuevo estado
    return estado[0], estado[1] - 1  # Se pone "-" por la misma razón


desplazamientoIzquierda = probe.Acción(
    "Moverse hacia la izquierda", puedeIzquierda, mueveIzquierda, suma
)  #Comprueba que puede moverse a la izquierda, se mueve y obtiene el valor de la casilla

problemaEstados = probe.ProblemaEspacioEstados([
    desplazamientoAbajo, desplazamientoDerecha, desplazamientoArriba,
    desplazamientoIzquierda
], posInicial, [posFinal])

solucionOptima = buse.BúsquedaÓptima()
print("\n")
print(solucionOptima.buscar(problemaEstados))
Example #4
0
    def poner_disco(self, estado, varilla, disco):
        estado[varilla - 1].add(disco)

    def aplicar(self, estado):
        nuevo_estado = copy.deepcopy(estado)
        disco = self.quitar_disco(nuevo_estado, self.varilla_de)
        self.poner_disco(nuevo_estado, self.varilla_a, disco)
        return nuevo_estado


acciones = [
    MoverDisco(i, j) for i in range(1, 4) for j in range(1, 4) if i != j
]
estado_inicial = [{1, 2}, set(), set()]
estado_final = [set(), set(), {1, 2}]
Torres_Hanoi_2 = probee.ProblemaEspacioEstados(acciones, estado_inicial,
                                               [estado_final])
pathAnchura = busqee.BúsquedaEnAnchura(detallado=True).buscar(Torres_Hanoi_2)
print(pathAnchura)


class TorresHanoi(probee.ProblemaEspacioEstados):
    def __init__(self, n):
        acciones = [
            MoverDisco(i, j) for i in range(1, 4) for j in range(1, 4)
            if i != j
        ]
        estado_inicial = [set(range(1, n + 1)), set(), set()]
        super().__init__(acciones, estado_inicial)
        self.n = n

    def es_estado_final(self, estado):
Example #5
0
moveLeft = probee.Acción("Left", applicabilityL, applyL, cost)

def applicabilityR(state):
    (i, j) = state
    return (j < map.tamaño_hor()-1) and map.tipo_celda(i, j+1) != 0

def applyR(state):
    (i, j) = state
    return (i, j+1)

moveRight = probee.Acción("Right", applicabilityR, applyR, cost)

actions=[moveUp,moveDown,moveLeft,moveRight]

MapPathProblem = probee.ProblemaEspacioEstados(actions,e_ini,[e_fin])

import math

def h(node): #Basic heuristic
    res=None
    (i,j)=node.estado

    for final_state in [e_fin]:
        aux=math.sqrt((i-final_state[0])**2 + (j-final_state[1])**2)

        if res == None:
            res = aux
        elif aux < res:
            res = aux