コード例 #1
0
 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
コード例 #2
0
 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
コード例 #3
0
 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
コード例 #4
0
    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
コード例 #5
0
 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
コード例 #6
0
 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