Esempio n. 1
0
def simulate(controller: MemorylessController, exclude=None, drop=0):

    from lunar_lander import LunarLanderContinuous
    env = LunarLanderContinuous()
    env.seed(1337)

    try:

        # Simulate and control
        import funcy as fn

        state = fn.first(
            fn.drop(drop, controller.winning_states(exclude=exclude)))
        state = {k: .5 * (v[0] + v[1]) for k, v in state.items()}
        env.reset([state[v] for v in states])

        statehist = None
        for step in range(20):
            u = fn.first(controller.allows(state))
            if u is None:
                print("No safe control inputs for state {}".format(state))
                env.close()
                f.children[0].mgr.configure(
                    reordering=False
                )  # Needed because mgr.pick_iter toggles reordering to True
                return statehist
            picked_u = {'t': u['t'], 's': u['s']}

            state.update(picked_u)
            print("Step: ", step, state)

            for _ in range(T):
                s, _, _, _ = env.step(np.array([picked_u['t'], picked_u['s']]))
                env.render()
                time.sleep(.03)

            if step == 0:
                statehist = s
            else:
                statehist = np.vstack([statehist, s])

            state = {v: s[idx] for idx, v in enumerate(states)}

    except OutOfDomainError:
        print("Out of system domain")
        env.close()
        return statehist

    except:
        env.close()
        raise

    env.close()
    return statehist
Esempio n. 2
0
def correct_text_HTML(from_text, to_text, insert_between=''):
    differences = unified_diff(from_text.split(), to_text.split())
    differences = drop(3, differences)
    differences = group_differences(differences)
    res = []
    for diff in differences:
        type_, text = diff[0], diff[1:]
        if type_ is '-':
            res += ['<del>' + text + '</del>']
            res += insert_between
        elif type_ is '+':
            res += ['<ins>' + text + '</ins>']
        else:
            res += [text]
    return ' '.join(res)
Esempio n. 3
0
def correct_text_msg(from_text, to_text, insert_between=''):
    differences = unified_diff(from_text.split(), to_text.split())
    differences = drop(3, differences)
    differences = group_differences(differences)
    res = []
    for diff in differences:
        type_, text = diff[0], diff[1:]
        if type_ is '-':
            res += [walk(strike, text)]
            res += insert_between
        elif type_ is '+':
            res += [embolden(text)]
        else:
            res += [text]
    return ' '.join(res)
Esempio n. 4
0
 def get_statistical_data(self, drug: str) -> Optional[Tuple[float, float]]:
     # print(list(self.blood_level_factors.keys()))
     # print(drug)
     if drug not in self.blood_level_factors:
         return None
     blood_levels = list(
         drop(
             7 * 24,
             take(
                 self.real_duration,
                 map(
                     lambda x: x[0] * x[1][0],
                     zip(self.drugs_timeline[drug],
                         self.factor_timeline[drug])))))
     levels_avg = sum(blood_levels) / len(blood_levels)
     sq_delta = list(map(lambda x: (x - levels_avg)**2, blood_levels))
     levels_std_dev = math.sqrt(sum(sq_delta) / len(blood_levels))
     return levels_avg, levels_std_dev
Esempio n. 5
0
def covariance(expr1, expr2):
    c1 = fn.pluck(1, coeffs(expr1))
    c2 = fn.pluck(1, coeffs(expr2))
    return sum(x * y for x, y in fn.drop(1, zip(c1, c2)))
Esempio n. 6
0
def variance(expr):
    return sum(fn.drop(1, weights(expr)))