public bool CheckPlanB(Agent a) { if (this.matrix[a.quadrant[0],a.quadrant[1]]+a.quantum > this.val) { return true; } return false; }
/** *1 Inicializar propuestas en ambos agentes *2 Buscar el maximo de la matriz *3 Guardar el cuadrante del maximo (para presentar en la propuesta) *4 Enviar la propuesta A (inicializar con mi maximo) (cuadrante y compensacion) *5 Comparar (revisa 2 cosas: la informacion que me enviaron ( si es menor que mi maximo, se rechaza; si es mayor Aceptar) revisar la siguiente propuesta anterior con la posible siguiente * (si la segunda propuesta es menor que mi segundo maximo, cambiar a segundo maximo y comenzar agente local de nuevo) * * si la propuesta del Agente A es mayor que la propuesta del Agente B, yo envío compensacion (quantum) * sino , si B > A, entonces yo acepto propuesta, identifico el valor de la garantia (propia) y lo envio * * esperar que responda. Recibir garantía * * al recibir la garantía responder EEEEExito. * * si responde No */ public bool SendProposalto(Agent a) { //1. check for the best quadrant //1.5 check for the second best quadrant //2. before sending, check for similar quadrants, y que siempre sea mayor que los demas (el que stas enviando) //3. send wanted quadrant to agent 2 with quantum //4. // this.prevOffers.Add(new Proposal(a.quadrant[0],a.quadrant[1],a.quantum)); Proposal p = new Proposal(a.quadrant[0], a.quadrant[1], a.quantum); bool accept = false; if ((this.matrix[p.x,p.y]+p.n) < this.matrix[this.quadrant[0],this.quadrant[1]]) { accept = false; if (CheckPlanB(a)) { Console.WriteLine("Enviar warranty"); //send warranty }else { //armar new proposal; Console.WriteLine("Armar nueva propuesta"); this.quantum += 1; accept = false; Console.WriteLine("Plan B, Agente 1:" + matrix[this.x1, this.x2] + "val:" + this.val); } } return accept; }