def evaluatePoint(self, sol): criterion = MyLossReg(self.regCoe, self.costs, self.xhat, self.budget) sol = torch.tensor(sol, dtype=torch.float) y = self.model(sol) y = y.squeeze() self.loss, self.actualCost = criterion(y, self.us, self.x) return self.loss
def evaluateSolution(self, trueGame): true_model = trueGame.f criterion = MyLossReg(self.regCoe, self.costs, self.xhat, self.budget) y = true_model(self.xalter) y = y.squeeze() self.trueoptVal, self.trueActualCost = criterion(y, self.us, self.xalter) self.trueoptVal = self.trueoptVal.item() return self.trueoptVal
def evaluateSolution(self, trueGame): true_model = trueGame.f self.regCoe = 1 criterion = MyLossReg(self.regCoe, torch.tensor(self.costs, dtype=torch.float), torch.tensor(self.xhat, dtype=torch.float) , torch.tensor(self.budget, dtype=torch.float)) self.xsol = torch.tensor(self.xsol, dtype=torch.float) y = true_model(self.xsol) y = y.squeeze() self.trueoptVal, self.trueActualCost = criterion(y, torch.tensor(self.us, dtype=torch.float), self.xsol) self.trueoptVal = self.trueoptVal.item() return self.trueoptVal
def evaluateSolution(self, trueGame): true_model = copy.deepcopy(trueGame.f) criterion = MyLossReg(self.regCoe, self.costs, self.xhat, self.budget) y = true_model(self.x) y = y.squeeze() self.trueoptVal, self.trueActualCost = criterion(y, self.us, self.x) self.trueoptVal = self.trueoptVal.item() y = true_model(self.xhat) y = y.squeeze() self.trueoriVal, self.trueoriCost = criterion(y, self.us, self.xhat) self.trueoriVal = self.trueoriVal.item() print('optimized loss: ', self.trueoptVal, ', initial loss: ', self.trueoriVal) return self.trueoptVal
def solve(self): self.solveStart = time.time() criterion = MyLossReg(self.regCoe, self.costs, self.xhat, self.budget) optimizer = torch.optim.RMSprop([self.x], lr=self.lr) for t in range(10000): y = self.model(self.x) y = y.squeeze() self.loss, self.actualCost = criterion(y, self.us, self.x) optimizer.zero_grad() self.loss.backward() optimizer.step() self.x.data.clamp_(min=0, max=1) self.extractSolution() self.solveTime = time.time() - self.solveStart self.optVal = self.loss.item() return self.optVal
def solve(self): criterion = MyLossReg(self.regCoe, self.costs, self.xhat, self.budget) optimizer = torch.optim.RMSprop([self.x], lr=self.lr) for t in range(10000): y = self.model(self.x) y = y.squeeze() self.loss, self.actualCost = criterion(y, self.us, self.x) if t % 1000 == 0: print("t = ", t, self.loss.item(), self.actualCost, self.budget) optimizer.zero_grad() self.loss.backward() optimizer.step() self.x.data.clamp_(min=0, max=1) self.extractSolution() return self.loss.data