Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import gurobipy as gp
- from gurobipy import GRB
- from pynverse import inversefunc
- import copy
- def f(wi):
- y = wi**2
- return y
- def g(wi):
- y = 2*wi
- return y
- model = gp.Model("qp")
- model.setParam("PSDTol", float('Inf'))
- w = model.addVar(lb=-5, ub=5, name="w", vtype=GRB.CONTINUOUS)
- v = model.addVar(lb=-5, ub=5, name="v", vtype=GRB.CONTINUOUS)
- model.setObjective(v,GRB.MINIMIZE)#si deve minimizzare v
- wi=-1
- for i in range(20):
- #calcolo f(w) e g(w) con i pesi iniziali e poi quelli aggiornati
- fwi=f(wi)
- gwi=g(wi)
- #aggiunta vincolo quindi aggiornamento dei bundle
- contr = v >= gwi*(w-wi)+fwi
- model.addConstr(contr, str(i))
- model.optimize()
- for v in model.getVars():
- #print variabili
- print('%s %g' % (v.varName, v.x))
- #aggiornamento pesi
- if(v.varName=="w"):
- wi=v.x
- #print funzione
- print('Obj: %g' % model.getObjective().getValue())
- #wi punto di minimo trovato nel bundle
- min_val=f(wi)
- print("Valore di minimo finale")
- print(min_val)
- #######################################################################################
- '''PRIMA PROVA
- wi1=-1
- fwi1=f(wi1)
- gwi1=g(wi1)
- partcontr = v >= gwi1*(w-wi1)+fwi1
- model.addConstr(partcontr, "sa")
- wi2=5
- fwi2=f(wi2)
- gwi2=g(wi2)
- partcontr = v >= gwi2*(w-wi2)+fwi2
- model.addConstr(partcontr, "s")
- model.optimize()
- for v in model.getVars():
- print('%s %g' % (v.varName, v.w))
- print('Obj: %g' % model.getObjective().getValue())
- '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement