Ejemplo n.º 1
0
    def build_dual_from_max_primal(self) -> LinearModel:
        # Building FO
        variables = []
        fo_coefficients = [i[0] for i in self.primal.b]
        fo_coefficients_variables = []
        for index, c in enumerate(self.primal.constraints):
            var = None
            if c.equality_operator == '<=':
                var = Variable(name='y{0}'.format(index + 1),
                               initial_index=index)
            elif c.equality_operator == '>=':
                var = Variable(name='y{0}'.format(index + 1),
                               initial_index=index,
                               constraint=VariableConstraint.Negative)
            elif c.equality_operator == '=':
                var = Variable(name='y{0}'.format(index + 1),
                               initial_index=index,
                               constraint=VariableConstraint.Unrestricted)
            variables.append(var)
            fo_coefficients_variables.append((fo_coefficients[index], var))

        fo = ObjectiveFunction('min', fo_coefficients_variables)

        # Building Constraints
        constraints_inequalities = []
        for v in self.primal.fo.variables:
            if v.non_positive:
                constraints_inequalities.append('<=')
            elif v.free:
                constraints_inequalities.append('=')
            else:
                constraints_inequalities.append('>=')

        constraints = []
        At = self.primal.A.transpose()
        right_side = self.primal.fo.coefficients
        _i = 0
        for row in At:
            const_coefficients_variables = []
            for index, v in enumerate(variables):
                const_coefficients_variables.append((row[index], v))
            constraint = Constraint(
                name='R{0}'.format(_i + 1),
                coefficients_variables=const_coefficients_variables,
                equality_operator=constraints_inequalities[_i],
                right_side=right_side[_i])
            constraints.append(constraint)
            _i = _i + 1

        return LinearModel(objective_function=fo,
                           constraints_list=constraints,
                           name=self.primal.name + '- Dual')
Ejemplo n.º 2
0
def variable_edit(name=None, scope=None):
  from models.variable import Variable
  
  if name and scope:
    variable = Variable.query.filter_by(name=urllib.unquote_plus(name), scope=urllib.unquote_plus(scope)).first_or_404()
  else:
    variable = Variable()
  
  errors = []
  
  if request.method == 'POST' and request.values.get( 'csrf_token', None ):
    variable.scope = request.form.get('variable_scope')
    variable.name = request.form.get('variable_name')
    variable.raw_value = request.form.get('variable_raw_value')
    errors = variable.validate()
    if not len(errors):
      variable.save()
      flash( g._t('variable submit success'))
      return redirect(url_for('variable_index'))
  
  if name:
    title = g._t('edit')
  else:
    title = g._t('add')
  breadcrumbs = (
    (g._t('administration'), url_for('administration_index')),
    (g._t('variables'), url_for('variable_index')),
    (title, "#")
  )
  
  return render_template('administration/variable/edit.html', title=title, breadcrumbs=breadcrumbs, variable=variable, errors=errors)
Ejemplo n.º 3
0
def install_common_holidays():
  """Define all the required holidays"""
  from models.variable import Variable
  
  newValue = {
    'weekdays': [5, 6],
    'monthdays': [],
    'dates': {
      '2014-01-01': 'holiday:new year',
      '2014-01-07': 'holiday:christmass',
      '2014-03-08': 'holiday:international womens day',
      '2014-03-10': 'holiday:international womens day (saturday)',
      '2014-04-20': 'holiday:easter',
      '2014-04-21': 'holiday:easter (sunday)',
      '2014-05-01': 'holiday:international workers day',
      '2014-05-02': 'holiday:international workers day',
      '2014-05-09': 'holiday:victory day',
      '2014-06-08': 'holiday:trinity',
      '2014-06-09': 'holiday:trinity (sunday)',
      '2014-06-28': 'holiday:ukrainian constitution day',
      '2014-06-30': 'holiday:ukrainian constitution day (saturday)',
      '2014-08-24': 'holiday:ukrainian independence day',
      '2014-08-25': 'holiday:ukrainian independence day (sunday)',
      },
    }
  
  variable = Variable.query.filter_by(scope='date', name='holidays').first()
  if not variable:
    variable = Variable()
    variable.scope = 'date'
    variable.name = 'holidays'
  
  variable.value = newValue
  
  variable.save()
Ejemplo n.º 4
0
def update_variable_data_add_maintainer_feedback():
  """Create all the required variables if not defined"""
  from application import db
  from models.variable import Variable
  
  itemList = [
    {'scope': 'general', 'name': 'feedback', 'raw_value': json.dumps('*****@*****.**')},
    {'scope': 'general', 'name': 'maintainer', 'raw_value': json.dumps('Timur Glushan')},
    {'scope': 'general', 'name': 'thanks_to', 'raw_value': json.dumps(['Lana Glushan', 'Nadya Mezenina', 'Gleb Dzyba', 'Leonid Usov'])}
  ]
  
  for item in itemList:
    variable = Variable.query.filter_by(scope=item['scope'], name=item['name']).first()
    if not variable:
      variable = Variable()
      variable.scope = item['scope']
      variable.name = item['name']
      variable.raw_value = item['raw_value']
      variable.save()
    else:
      variable.raw_value = item['raw_value']
      variable.save()
Ejemplo n.º 5
0
    def CreateVariable(self, variableText):
        name = variableText\
            .split(" ")[0]\
            .strip()

        # maybe a bit overzealous, but I can see how [A, B, Alpha, Beta] makes sense
        tuple = variableText\
            .split(" ", 1)[-1]\
            .replace("[", "")\
            .replace("]", "")\
            .strip()

        if "," not in tuple:
            tuple = tuple\
                .replace(" ", ",")

        evalTuple = eval(tuple)

        return Variable(name, evalTuple)
Ejemplo n.º 6
0
        min_step = min(steps_excluding_negative)
        variable_leave_B_index = steps.index(min_step)

        # Updating Base and Non Base
        variable_leave_B = solver.B_variables[variable_leave_B_index]
        variable_join_N = solver.N_variables[variable_join_N_index]

        solver.B_variables[variable_leave_B_index] = variable_join_N
        solver.N_variables[variable_join_N_index] = variable_leave_B
        self.current_iteration = self.current_iteration + 1

        self.__solve_lp__(__solver__=solver)


if __name__ == '__main__':
    x1 = Variable(name='x1')
    x2 = Variable(name='x2')
    x3 = Variable(name='x3')
    fo = ObjectiveFunction('min', [(1, x1), (-1, x2), (2, x3)])
    c1 = Constraint([(1, x1), (1, x2), (1, x3)], '=', 3)
    c2 = Constraint([(2, x1), (-1, x2), (3, x3)], '<=', 4)
    model = LinearModel(objective_function=fo, constraints_list=[c1, c2])
    p1 = Phase1(linear_model=model)
    initial_base = p1.find_base()
    p2 = Phase2(linear_model=model, base_indexes=p1.base_variables)
    p2.solve()

    print('Phase1 unit test passed')


Ejemplo n.º 7
0
    def __init__(self, solver: SimplexSolver):
        self.model = solver
        self.A = solver.model.A
        self.b = solver.model.b
        self.fo_value = solver.fo_value

        self.decision_variables = []
        self.support_variables = []
        self.variables = []

        if any([type(i) == FreeVariable for i in solver.model.fo.variables]):
            print(
                '[WARNING]: We have found unrestricted variables. [Xi = Xip-Xin]. '
                '\nXi values, are saved on .decision_variables. '
                '\nXip and Xin, are saved on both .support_variables and .variables'
            )

        already_solved_free_vars = []
        for index, v in enumerate(solver.model.fo.variables):
            value = 0
            if v.id in self.model.B_variables:
                position_index = self.model.B_variables.index(v.id)
                value = solver.xb[position_index][0]
                # Free Variables
                un_value = 0
                if type(
                        v
                ) == FreeVariable and v.id not in already_solved_free_vars:
                    if v.positive:
                        un_value = solver.xb[position_index][0]
                    else:
                        un_value = -1 * solver.xb[position_index][0]
                    already_solved_free_vars.append(v.id)

                    for _v in solver.model.fo.variables:
                        if type(
                                _v
                        ) == FreeVariable and _v.parent_index == v.parent_index and _v.id != v.id:
                            if _v in self.model.B_variables:
                                n_index = self.model.B_variables.index(_v.id)
                                if v.positive:
                                    un_value = un_value + solver.xb[n_index][0]
                                else:
                                    un_value = un_value - solver.xb[n_index][0]
                            already_solved_free_vars.append(_v.id)

                    decision_var = Variable(name='x{0}'.format(v.parent_index +
                                                               1),
                                            initial_index=v.parent_index)
                    self.decision_variables.append((un_value, decision_var))

            if type(v) == Variable:  # Decision Variables
                if v.non_positive:
                    print(
                        "[WARNING]: {0} is required to be non_positive, but solver only deals with positive values."
                        "\nThe solution value can be found in solution.decision_variables"
                        "\nThe solver value can be find in solution.variables".
                        format(v.name))
                    self.decision_variables.append((-1 * value, v))
                else:
                    self.decision_variables.append((value, v))
            else:
                self.support_variables.append((value, v))

            self.variables.append((value, v))
Ejemplo n.º 8
0
        _i = 0
        for row in At:
            const_coefficients_variables = []
            for index, v in enumerate(variables):
                const_coefficients_variables.append((row[index], v))
            constraint = Constraint(
                name='R{0}'.format(_i + 1),
                coefficients_variables=const_coefficients_variables,
                equality_operator=constraints_inequalities[_i],
                right_side=right_side[_i])
            constraints.append(constraint)
            _i = _i + 1

        return LinearModel(objective_function=fo,
                           constraints_list=constraints,
                           name=self.primal.name + '- Dual')


if __name__ == '__main__':
    x1 = Variable(name='x1')
    x2 = Variable(name='x2', constraint=VariableConstraint.Unrestricted)
    x3 = Variable(name='x3', constraint=VariableConstraint.Negative)
    fo = ObjectiveFunction('max', [(1, x1), (2, x2), (0, x3)])
    c1 = Constraint([(-2, x1), (1, x2), (1, x3)], '>=', 3)
    c2 = Constraint([(3, x1), (4, x2)], '<=', 5)

    primal = LinearModel(objective_function=fo, constraints_list=[c1, c2])
    dual_transformation = DualTransformation(primal=primal)
    dual = dual_transformation.dual
    print('Dual unit test passed')
Ejemplo n.º 9
0
def install_variable_data():
  """Create all the required variables if not defined"""
  from application import db
  from models.variable import Variable
  
  itemList = [
    {'scope': 'translation', 'name': 'languages', 'raw_value': json.dumps(["en", "ru", "uk"])},
    {'scope': 'preference', 'name': 'language', 'raw_value': json.dumps("uk")},
    {'scope': 'preference', 'name': 'report_time_format', 'raw_value': json.dumps("float")},
    {'scope': 'preference', 'name': 'show_deleted_reports', 'raw_value': json.dumps(0)},
    {'scope': 'preference', 'name': 'datepicker_multiple_days', 'raw_value': json.dumps(1)},
    {'scope': 'date', 'name': 'holidays', 'raw_value': json.dumps({
      'weekdays':[5,6],
      'monthdays':[],
      'dates':{
        '2014-01-01': 'holiday:new year', 
        '2014-01-07': 'holiday:christmass', 
        '2014-03-08': 'holiday:international womens day', 
        '2014-03-10': 'holiday:international womens day (saturday)', 
        '2014-04-20': 'holiday:easter', 
        '2014-04-21': 'holiday:easter (sunday)', 
        '2014-05-01': 'holiday:international workers day', 
        '2014-05-02': 'holiday:international workers day', 
        '2014-05-09': 'holiday:victory day',  
        '2014-06-08': 'holiday:trinity', 
        '2014-06-09': 'holiday:trinity (sunday)', 
        '2014-06-28': 'holiday:ukrainian constitution day', 
        '2014-06-30': 'holiday:ukrainian constitution day (saturday)', 
        '2014-08-24': 'holiday:ukrainian independence day',
        '2014-08-25': 'holiday:ukrainian independence day (sunday)',
      }
      })
    },
    {'scope': 'common', 'name': 'chinese_cookie_data', 'raw_value': json.dumps({
      "en": [
        "A warm smile is testimony of a generous nature.",
        "A secret admirer will soon send you a sign of affection.",
        "Love asks me no questions, and gives me endless support. Shakespeare",
        "In the end there are three things that last: faith, hope and love; and the greatest of these is love.",
        "Don't forget, you are always on our minds.",
        "Love is for the lucky and the brave.",
        "If you continually give, you will continually have.",
        "If you want the rainbow, you must put up with the rain. D. Parton",
        "If you would be loved, love and be lovable.",
        "The one you love is closer than you think.",
        "Love always and deeply.",
        "Your heart will always make itself known through your words.",
        "Love begets love.",
        "We cannot do great things; only small things with great love. Mother Teresa",
        "Love is like wildflowers...it is often found in the most unlikely places.",
        "Love is the only medicine for a broken heart.",
        "Love is the triumph of imagination over intelligence. H.L. Mencken",
        "Much more grows in the garden than that which is planted there.",
        "One who admires you greatly is hidden before your eyes.",
        "Only love lets us see normal things in an extraordinary way.",
        "The greatest gift is love.",
        "The time is right to make new friends.",
        "There is no limit to love's forbearance, to its trust, its hope, its power to endure.",
        "Those who have love, have wealth beyond measure.",
        "To love is to forgive.",
        "Hearts are not to be had as a gift, hearts are to be earned. W.B. Yeats",
        "Your heart is a place to draw true happiness.",
        "Love conquers all.",
        "Count your blessings by thinking of those whom you love.",
        "There is a true and sincere friendship between you and your friends.",
        "You find beauty in ordinary things, do not lose this ability.",
        "Ideas are like children; there are none so wonderful as your own.",
        "It takes more than good memory to have good memories.",
        "A thrilling time is in your immediate future.",
        "Your blessing is no more than being safe and sound for the whole lifetime.",
        "Plan for many pleasures ahead.",
        "The joyfulness of a man prolongeth his days.",
        "Your everlasting patience will be rewarded sooner or later.",
        "Make two grins grow where there was only a grouch before.",
        "Something you lost will soon turn up.",
        "Your heart is pure, and your mind clear, and your soul devout.",
        "Excitement and intrigue follow you closely wherever you go!",
        "A pleasant surprise is in store for you.",
        "May life throw you a pleasant curve.",
        "As the purse is emptied the heart is filled.",
        "Be mischievous and you will not be lonesome.",
        "You have a deep appreciation of the arts and music.",
        "Your flair for the creative takes an important place in your life.",
        "Your artistic talents win the approval and applause of others.",
        "Pray for what you want, but work for the things you need.",
        "Your many hidden talents will become obvious to those around you.",
        "Don't forget, you are always on our minds.",
        "Your greatest fortune is the large number of friends you have.",
        "A firm friendship will prove the foundation on your success in life.",
        "Don't ask, don't say. Everything lies in silence.",
        "Look for new outlets for your own creative abilities.",
        "Be prepared to accept a wondrous opportunity in the days ahead!",
        "Fame, riches and romance are yours for the asking.",
        "Good luck is the result of good planning.",
        "Good things are being said about you.",
        "Smiling often can make you look and feel younger.",
        "Someone is speaking well of you.",
        "The time is right to make new friends.",
        "You will inherit some money or a small piece of land.",
        "Your life will be happy and peaceful.",
        "A friend is a present you give yourself.",
        "A member of your family will soon do something that will make you proud.",
        "A quiet evening with friends is the best tonic for a long day.",
        "A single kind word will keep one warm for years.",
        "Anger begins with folly, and ends with regret.",
        "Generosity and perfection are your everlasting goals.",
        "Happy news is on its way to you.",
        "He who laughs at himself never runs out of things to laugh at.",
        "If your desires are not extravagant they will be granted.",
        "Let there be magic in your smile and firmness in your handshake.",
        "If you want the rainbow, you must to put up with the rain. D. Parton",
        "Nature, time and patience are the three best physicians.",
        "Strong and bitter words indicate a weak cause.",
        "The beginning of wisdom is to desire it.",
        "You will have a very pleasant experience.",
        "You will inherit some money or a small piece of land.",
        "You will live a long, happy life.",
        "You will spend old age in comfort and material wealth.",
        "You will step on the soil of many countries.",
        "You will take a chance in something in the near future.",
        "You will witness a special ceremony.",
        "Your everlasting patience will be rewarded sooner or later.",
        "Your great attention to detail is both a blessing and a curse.",
        "Your heart is a place to draw true happiness.",
        "Your ability to juggle many tasks will take you far.",
        "A friend asks only for your time, not your money.",
        "You will be invited to an exciting event.",
        "Little and often makes much.",
        "The days you work are the best days.",
        "Today is a lucky day for those who remain cheerful and optimistic.",
        "If you continually give, you will continually have.",
        "You were born with the skill to communicate with people easily.",
        "The hard times will begin to fade, joy will take their place.",
        "The first step to better times is to imagine them.",
        "Ideas are like children; there are none so wonderful as your own.",
        "When you speak honestly and openly, others truly listen to you.",
        "Trust your intuition. The universe is guiding your life.",
        "It doesn't matter. Who is without a flaw?",
        "It is much wiser to take advice than to give it.",
        "Many a false step is made by standing still.",
        "A thrilling time is in your immediate future.",
        "You should be able to make money and hold on to it.",
        "The skills you have gathered will one day come in handy.",
        "Every excess becomes a vice.",
        "Be direct, usually one can accomplish more that way.",
        "Keep in close touch with what your competition is doing.",
        "Your skill will accomplish what the force of many cannot.",
        "Your talents will be recognized and suitably rewarded.",
        "You can always find happiness at work on Friday.",
        "All your hard work will soon pay off.",
        "The secret of getting ahead is getting started.",
        "Do not mistake temptation for opportunity.",
        "You will be fortunate in everything you put your hands to.",
        "Decide what you want and go for it.",
        "You will have gold pieces by the bushel.",
        "Put the data you have uncovered to beneficial use.",
        "Your past success will be overshadowed by your future success.",
        "Skill comes from diligence.",
        "Don't forget to do good deeds as you accumulate wealth.",
        "Keep your plans secret for now.",
        "Your money worries are over! Your new job will bring you a huge increase in income.",
        "A good time to finish up old tasks.",
        "Avert misunderstanding by calm, poise and balance.",
        "Consolidate rather than expand business projects in the near future.",
        "Delay is the antidote for anger.",
        "Get ready! Good fortune comes in bunches.",
        "None of the secrets of success will work unless you do.",
        "You will be wise not to seek too much from others.",
        "If you want the rainbow, you must to put up with the rain. D. Parton",
        "Our first and last love...is self love.",
        "None of the secrets of success will work unless you do.",
        "Today is a lucky day for those who remain cheerful and optimistic.",
        "You were born with the skill to communicate with people easily.",
        "The first step to better times is to imagine them.",
        "Trust your intuition. The universe is guiding your life.",
        "It doesn't matter. Who is without a flaw?",
        "Your happiness is intertwined with your outlook on life.",
        "The secret of getting ahead is getting started.",
        "Make two grins grow where there was only a grouch before.",
        "Decide what you want and go for it.",
        "Your past success will be overshadowed by your future success.",
        "You are talented in many ways.",
        "Any rough times are behind you.",
        "Grand adventures await those who are willing to turn the corner.",
        "None of the secrets of success will work unless you do.",
        "The smart thing is to prepare for the unexpected.",
        "There is yet time enough for you to take a different path.",
        "You are very expressive and positive in words, act and feeling.",
        "You should be able to undertake and complete anything.",
        "A journey of a thousand miles begins with a single step. Lao Tzu",
        "A scholars ink lasts longer than a martyrs blood.",
        "Funny thing about humility. Just when you think you've got it, you've lost it.",
        "If you want the rainbow, you must to put up with the rain. D. Parton",
        "He who throws dirt is losing ground.",
        "You can always find happiness at work on Friday.",
        "Do not mistake temptation for opportunity.",
        "A woman who seeks to be equal with men lacks ambition. Ouch!!!",
        "The greatest danger could be your stupidity.",
        "He who laughs at himself never runs out of things to laugh at.",
        "He who laughs last is laughing at you.",
        "A closed mouth gathers no feet.",
        "A conclusion is simply the place where you got tired of thinking.",
        "A cynic is only a frustrated optimist.",
        "A fanatic is one who can't change his mind, and won't change the subject.",
        "It doesn't matter. Who is without a flaw?",
        "The world may be your oyster, but it doesn't mean you'll get its pearl.",
        "Flattery will go far tonight."
      ],
      "ru": [
        "Если хотите иметь успех, вы должны выглядеть так, как будто вы его имеете.",
        "Лучшее - враг хорошего.",
        "Самое смешное желание - это нравиться всем.",
        "О чем молимся, то и получаем.",
        "Победитель от побежденного отличается только тем, что поднимается на один раз больше, чем падает.",
        "Помни, что каждый день - первый в оставшейся части жизни.",
        "В жизни есть главное и не главное, а мы часто тратим силы на пустяки.",
        "Не так хорошо, как хотелось, но и не так плохо, как могло было быть!",
        "Делай что должен, и будь что будет.",
        "Обратная сторона кризиса - новые возможности.",
        "Не каждый может быть твоим другом, но каждый может быть твоим учителем.",
        "Если истинно желаешь быть счастливым - научись властвовать своими мыслями.",
        "Каждому причитается столько счастья, сколько сам в силах подарить.",
        "Когда Бог закрывает дверь, он открывает окно",
        "Дорога в тысячу миль начинается с первого шага.",
        "Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы строили Титаник!",
        "Лучше жалеть о том, что сделал, а не о том, что не сделал.",
        "Кто стоит на месте, тот идёт назад.",
        "Что не делается, всё к лучшему.",
        "Никто не побежден до тех пор, пока не признает себя побежденным.",
        "Борьба всегда оправдана, если знаешь к чему стремишься.",
        "Главное - не забыть главное. А то забудешь главное, а это главное!",
        "Не рвись в герои, пока не позовут.",
        "Эти люди и эти события твоей жизни оказались здесь потому, что ты сам их сюда привел. То, что будет сними дальше, зависит от тебя.",
        "Никогда ни у кого ничего не проси, особенно у тех, кто сильнее тебя - сами придут и всё дадут.",
        "Один раз везет только дуракам. Умным везет всегда.",
        "Зло не в том, что входит в уста человека, а в том, что выходит из них.",
        "Делайте, что можете, используя то, что есть, там, где вы сейчас.",
        "Если в себя не веришь, то ничего и не начнешь. А если ничего не начинать, то ничего и не произойдет.",
        "Люди любят побеждать. Если вы не определились с окончательной целью, шансов на победу у вас нет.",
        "Цель определяет успех.",
        "Цель - основная точка отсчета для инвестиций энергии и времени.",
        "Успех женщины- не много мужчин, а один.",
        "Секрет успешного продвижения - это начало.",
        "Секрет начала - это разбиение ваших сложносочиненных дел на мелкие, легко выполнимые задачи и выполнение их, начиная с первой.",
        "Не важно, насколько большая и сложная проблема перед вами -сделайте маленький шажок к её решению.",
        "Из безвыходной ситуации всегда найдётся выход.",
        "Никогда не отказывайся от своей мечты.",
        "Когда ты чего-нибудь хочешь, вся Вселенная будет способствовать тому, чтобы желание твоё сбылось.",
        "Сегодня как раз наступило то завтра, о котором вы беспокоились вчера.",
        "Нет безвыходных ситуаций: даже если вас съели, у вас, по крайней мере, есть два выхода.",
        "Если ты родился без крыльев - не мешай им расти.",
        "У собаки столько друзей потому, что она виляет хвостом, а не болтает языком",
        "Ты уникален, так же, как и все остальные.",
        "Любите врагов ваших... это точно приведёт их в бешенство!",
        "Нет безвыходных ситуаций. Обыкновенно выход есть там же где и вход.",
        "Мало знать себе цену - надо еще пользоваться спросом.",
        "Вы будете очень успешны в бизнесе.",
        "Вас ожидают перемены.",
        "Если Вы еще не встретили свою любовь, то в этом году обязательно встретите.",
        "Не позволяйте никому стоять на Вашем пути к счастью.",
        "Не осуждайте никого, чтобы не осуждали Вас.",
        "Жизнь - это чудо, дарованное нам свыше.",
        "Зависть разрушает душу человека.",
        "Вас обдувает ветер странствий.",
        "Тише едешь, дальше будешь.",
        "Будьте бдительны!",
        "Ждите перемен.",
        "Новая весна, новая любовь.",
        "Не пропустите важные новости.",
        "Ждите пополнения бюджета.",
        "На этой неделе вы рискуете влюбиться.",
        "Осторожно на дороге.",
        "Звезды к вам благосклонны.",
        "Уделите время своему дому.",
        "Вас ждет встреча с важным человеком.",
        "Если Вы проявите инициативу, успех не заставит себя ждать.",
        "Ваши надежды и планы сбудутся сверх всяких ожиданий.",
        "Кто-то старается помешать или навредить Вам.",
        "Очень скоро придет важное известие.",
        "На все воля Божья: повлиять на ситуацию не в Вашей власти!",
        "Ответ на Ваш вопрос связан с каким-то мужчиной, воз можно, хорошо Вам известным.",
        "В Вашу жизнь войдет нечто новое, что значительно повлияет на Вашу личность.",
        "Будьте осторожны: Вас хотят обмануть!",
        "Внимательно присмотритесь к своему окружению: кто-то может подвести Вас в самый решающий момент.",
        "Вы надеетесь не напрасно!",
        "Проверьте все замки и запоры: Вас могут обокрасть.",
        "Проблема внутри Вас!",
        "Результат Ваших действий может оказаться неожиданным.",
        "Время осушит все слезы и исцелит все раны.",
        "Вы — на верном пути!",
        "Вам, наконец, удастся отпереть заржавевший замок.",
        "Вас ожидают тревоги и беспокойства.",
        "То, к чему Вы стремитесь, не стоит ваших усилий.",
        "Главная характеристика сложившейся ситуации — невежество.",
        "Результаты дела, которое Вы задумали, сильно разочаруют Вас.",
        "Проблема не там, где Вам кажется.",
        "Предложение, которое Вам сделают, Вас не устроит.",
        "Вперед и только вперед: дело, о котором Вы думаете, — правое!",
        "Ваша цель достижима.",
        "В одиночку Вам не справиться с вашими проблемами.",
        "Успех придет, если Вы не будете слушать ничьих советов.",
        "Для Вас наступило время сомнений и колебаний.",
        "От посева зерна до жатвы должно пройти время.",
        "Тьма, в которой Вы жили до сих пор, рассеялась.",
        "Разрыв в личных отношениях сейчас более вероятен, чем примирение.",
        "Ведите обычную жизнь необычным способом.",
        "Не ищите внешних врагов: чтобы понять, что мешает Вашему развитию, загляните внутрь себя.",
        "Помните, что истинное партнерство может существовать только между цельными личностями.",
        "Будьте внимательны к подсказкам судьбы.",
        "Если колодец засорен, то самое время его очистить.",
        "Выигрыш исходит от того, с чем Вы должны расстаться.",
        "Действуйте в соответствии не со старыми авторитетами, а с тем, что Вы считаете правильным для Вас.",
        "Пришло время закончить старое и начать новое.",
        "Если не хотите серьезных потрясений, проанализируйте Ваше отношение к собственной личности.",
        "Отпустите свое прошлое: оно исчерпало себя.",
        "Не ожидайте слишком многого и не думайте о конечном результате.",
        "Изучайте Ваши теневые стороны; поймите, что притягивает в Вашу жизнь несчастья.",
        "Завершите то, что начали.",
        "Будьте терпеливы, и если решение Ваше правильно, Вселенная поддержит его.",
        "Не поддавайтесь эмоциям.",
        "Присмотритесь к своему здоровью.",
        "Наслаждайтесь удачей и делитесь ею с окружающими Вас людьми.",
        "Сосредоточьтесь на настоящем.",
        "Не ладите быстрых результатов.",
        "Смиритесь: Ваши возможности ограничены.",
        "Будьте настойчивы в битве с собственным эгоизмом.",
        "Ваша энергия утекает из-за необдуманного или несвоевременного действия.",
        "Плывите по течению жизни без оценок и попыток понять ее.",
        "Не переоценивайте свои силы: это может привести к перенапряжению.",
        "События полностью вне Вашего контроля.",
        "Доверяйте тому, что с Вами происходит.",
        "Размышляйте и не спешите с действиями.",
        "Пришло время действовать, даже если от Вас требуется прыгнуть в пустоту.",
        "Не пытайтесь упрямо проявлять свою ВОЛЮ.",
        "Раскройтесь и пропустите свет в ту часть своей жизни, которая до сих пор была тайной.",
        "Твой кошелек не будет пуст: знать будет ежедневно денег хруст!",
        "Ты будешь жить легко весь год, есть, пить и петь, не знать тревог.",
        "В Новом году нужно серьезно подумать о продолжении рода!",
        "Меньше злоупотребляйте спиртным в Новом году, а то разбудите дракона в супруге.",
        "В Новом году выполняй любые прихоти своей половинки, и будет тебе счастье!",
        "Покорив одну гору, начинай штурмовать другую...",
        "Прилив энергии поможет Вам справиться с большим объемом незапланированных работ.",
        "Примите то, что вы не можете изменить, и вы будете чувствовать себя лучше.",
        "Природа, время и терпение - три великих врача.",
        "Пришло время действовать!",
        "Пришло время закончить старое и начать новое.",
        "Пусть мир наполнится спокойствием и доброжелательностью.",
        "Работа с новыми партнерами будет очень выгодным.",
        "Работайте над дипломатическими способностями - они очень пригодятся для реализации идей.",
        "Размышляйте и не спешите с действиями.",
        "Разрешите состраданию направлять ваши решения.",
        "Результат Ваших действий может оказаться неожиданным.",
        "Романтика переместит вас в новом направлении.",
        "С этого момента ваша доброта приведет вас к успеху.",
        "Сегодня у вас будет красивый день.",
        "Семь раз отмерьте, один раз отрежьте!",
        "Слушайте каждого. Идеи приходят отовсюду.",
        "Соловья баснями не кормят.",
        "Сосредоточьтесь на семье и гармонии с окружающим миром.",
        "Счастливая жизнь прямо перед вами.",
        "Теперь настало время попробовать что-то новое.",
        "Терпение! Вы почти у цели.",
        "Удача проводит Вас через все трудные времена.",
        "Уделите особое внимание старой дружбе.",
        "Хорошее время, чтобы закончить старые начинания.",
        "Хорошие новости придут к вам по почте.",
        "Хорошо сделанное лучше, чем хорошо сказанное.",
        "Хоть некоторые и пытаются вам помешать, вы все равно достигнете поставленных целей.",
        "Человек никогда не стар, чтобы учиться. Новые знания принесут Вам успех.",
        "Что ни делается - все к лучшему.",
        "Это время, чтобы двигаться. Ваше настроение улучшится.",
        "Вам предстоит рассмотреть неожиданное предложение",
        "Делайте то, чего просит душа и тело",
        "Не оставляйте усилий и получите желаемое",
        "Кто-то нуждается в вашей поддержке",
        "Не ищите внешних врагов: чтобы понять, что мешает Вашему развитию, загляните внутрь себя.",
        "Помните, что истинное партнерство может существовать только между цельными личностями.",
        "Будьте внимательны к подсказкам судьбы.",
        "Если колодец засорен, то самое время его очистить.",
        "Выигрыш исходит от того, с чем Вы должны расстаться.",
        "Действуйте в соответствии не со старыми авторитетами, а с тем, что Вы считаете правильным для Вас.",
        "Пришло время закончить старое и начать новое.",
        "Если не хотите серьезных потрясений, проанализируйте Ваше отношение к собственной личности.",
        "Завершите то, что начали.",
        "Будьте терпеливы, и если решение Ваше правильно, Вселенная поддержит его.",
        "Не поддавайтесь эмоциям.",
        "Наслаждайтесь удачей и делитесь ею с окружающими Вас людьми.",
        "Сосредоточьтесь на настоящем.",
        "Не переоценивайте свои силы: это может привести к перенапряжению.",
        "Размышляйте и не спешите с действиями."
      ],
      "uk": [
        "Якщо хочете мати успіх, ви повинні виглядати так, як ніби ви його маєте.",
        "Найраще - ворог хорошого.",
        "Найсмішніше бажання - це подобатися всім.",
        "Про що молимося, то і отримуємо.",
        "Переможець від переможеного відрізняється тільки тим, що піднімається на один раз більше, ніж падає.",
        "Пам'ятай, що кожен день - перший в решти твого життя.",
        "У житті є головне і не головне, а ми часто витрачаємо сили на дрібниці.",
        "Не так добре, як хотілося, але й не так погано, як могло було бути!",
        "Роби що повинен, і будь що буде.",
        "Зворотний бік кризи - нові можливості.",
        "Не кожен може бути твоїм другом, але кожен може бути твоїм учителем.",
        "Якщо істинно бажаєш бути щасливим - навчися панувати своїми думками.",
        "Кожному прочитується стільки щастя, скільки сам в силах подарувати.",
        "Коли Бог закриває двері, він відкриває вікно",
        "Дорога в тисячу миль починається з першого кроку.",
        "Ніколи не бійся робити те, що ти не вмієш. Пам'ятай, ковчег був побудований аматором. Професіонали будували Титанік!",
        "Краще шкодувати про те, що зробив, а не про те, що не зробив.",
        "Хто стоїть на місці, той іде назад.",
        "Що не робиться, все на краще.",
        "Ніхто не переможений до тих пір, поки не визнає себе переможеним.",
        "Боротьба завжди виправдана, якщо знаєш до чого прагнеш.",
        "Головне - не забути головне. А то забудеш головне, а це головне!",
        "Чи не рвись в герої, поки не покличуть.",
        "Ці люди і ці події твого життя виявилися тут тому, що ти сам їх сюди привів. Те, що буде зніми далі, залежить від тебе.",
        "Ніколи ні в кого нічого не проси, особливо у тих, хто сильніший за тебе - самі прийдуть і все дадуть.",
        "Один раз везе тільки дурням. Розумним везе завжди.",
        "Зло не в тому, що входить в уста людини, а в тому, що виходить з них.",
        "Робіть, що можете, використовуючи те, що є, там, де ви зараз.",
        "Якщо в себе не віриш, то нічого і не почнеш. А якщо нічого не починати, то нічого й не станеться.",
        "Люди люблять перемагати. Якщо ви не визначилися з остаточною метою, шансів на перемогу у вас немає.",
        "Мета визначає успіх.",
        "Мета - основна точка відліку для інвестицій енергії і часу.",
        "Успіх жінки- не багато чоловіків, а один.",
        "Секрет успішного просування - це початок.",
        "Секрет початку - це розбиття ваших складносурядних справ на дрібні, легко здійсненні завдання і виконання їх, починаючи з першої.",
        "Не важливо, наскільки велика і складна проблема перед вами -Зробіть маленький крок до її вирішення.",
        "З безвихідної ситуації завжди знайдеться вихід.",
        "Ніколи не відмовляйся від своєї мрії.",
        "Коли ти чогось хочеш, увесь Всесвіт буде сприяти тому, щоб бажання твоє збулося.",
        "Сьогодні якраз настав той завтра, про який ви турбувалися вчора.",
        "Немає безвихідних ситуацій: навіть якщо вас з'їли, у вас, по крайней мере, є два виходи.",
        "Якщо ти народився без крил - не заважай їм рости.",
        "У собаки стільки друзів тому, що вона виляє хвостом, а не базікає мовою",
        "Ти унікальний, так само, як і всі інші.",
        "Любіть ворогів ваших ... це точно приведе їх до сказу!",
        "Немає безвихідних ситуацій. Зазвичай вихід є там же де й вхід.",
        "Мало знати собі ціну - треба ще користуватися попитом.",
        "Ви будете дуже успішні в бізнесі.",
        "Вас очікують зміни.",
        "Якщо Ви ще не зустріли свою любов, то цього року обов'язково зустрінете.",
        "Не дозволяйте нікому стояти на Вашому шляху до щастя.",
        "Не засуджуйте нікого, щоб не засуджували Вас.",
        "Життя - це диво, дароване нам згори.",
        "Заздрість руйнує душу людини.",
        "Вас обдуває вітер мандрів.",
        "Тихіше їдеш, далі будеш.",
        "Будьте пильні!",
        "Чекайте змін.",
        "Нова весна, нове кохання.",
        "Не пропустіть важливі новини.",
        "Чекайте поповнення бюджету.",
        "На цьому тижні ви ризикуєте закохатися.",
        "Обережно на дорозі.",
        "Зірки до вас прихильні.",
        "Приділіть час свого дому.",
        "Вас чекає зустріч з важливою людиною.",
        "Якщо Ви проявите ініціативу, успіх не змусить себе чекати.",
        "Ваші надії і плани збудуться понад всякі очікування.",
        "Хтось намагається перешкодити або нашкодити Вам.",
        "Дуже скоро прийде важливу звістку.",
        "На все воля Божа: вплинути на ситуацію не в Вашій владі!",
        "Відповідь на Ваше запитання пов'язаний з якимось чоловіком, віз можна, добре Вам відомим.",
        "В Ваше життя ввійде щось нове, що значно вплине на Вашу особу.",
        "Будьте обережні: Вас хочуть обдурити!",
        "Уважно придивіться до свого оточення: хтось може підвести Вас в самий вирішальний момент.",
        "Ви сподіваєтеся недаремно!",
        "Перевірте всі замки і запори: Вас можуть обікрасти.",
        "Проблема всередині Вас!",
        "Результат Ваших дій може виявитися несподіваним.",
        "Час осушить всі сльози і зцілить всі рани.",
        "Ви - на вірному шляху!",
        "Вам, нарешті, вдасться відімкнути заржавілий замок.",
        "Вас очікують тривоги і занепокоєння.",
        "Те, до чого Ви прагнете, не варто ваших зусиль.",
        "Головна характеристика ситуації, що склалася - невігластво.",
        "Результати справи, яку Ви задумали, сильно розчарують Вас.",
        "Проблема не там, де Вам здається.",
        "Пропозиція, яку Вам зроблять, Вас не влаштує.",
        "Вперед і тільки вперед: справа, про яку Ви думаєте, - праве!",
        "Ваша мета досяжна.",
        "Поодинці Вам не впоратися з вашими проблемами.",
        "Успіх прийде, якщо Ви не будете слухати нічиїх порад.",
        "Для Вас настав час сумнівів і коливань.",
        "Від посіву зерна до жнив має пройти час.",
        "Тьма, в якій Ви жили до сих пір, розсіялася.",
        "Розрив в особистих стосунках зараз більш ймовірний, ніж примирення.",
        "Ведіть звичайне життя незвичайним способом.",
        "Не шукайте зовнішніх ворогів: щоб зрозуміти, що заважає Вашому розвитку, загляньте всередину себе.",
        "Пам'ятайте, що справжнє партнерство може існувати тільки між цільними особистостями.",
        "Будьте уважні до підказок долі.",
        "Якщо колодязь засмічений, то саме час його очистити.",
        "Виграш виходить від того, з чим Ви повинні розлучитися.",
        "Дійте у відповідності не зі старими авторитетами, а з тим, що Ви вважаєте правильним для Вас.",
        "Прийшов час закінчити старе і почати нове.",
        "Якщо не хочете серйозних потрясінь, проаналізуйте Ваше ставлення до власної особистості.",
        "Відпустіть своє минуле: воно вичерпало себе.",
        "Не очікуйте занадто багато чого і не думайте про кінцевий результат.",
        "Вивчайте Ваші тіньові сторони; зрозумійте, що притягує у Ваше життя нещастя.",
        "Завершіть те, що почали.",
        "Будьте терплячі, і якщо рішення Ваше правильно, Всесвіт підтримає його.",
        "Не піддавайтеся емоціям.",
        "Придивіться до свого здоров'я.",
        "Насолоджуйтесь удачею і діліться нею з оточуючими Вас людьми.",
        "Зосередьтеся на сьогоденні.",
        "Чи не ладите швидких результатів.",
        "Змиріться: Ваші можливості обмежені.",
        "Будьте наполегливі в битві з власним егоїзмом.",
        "Ваша енергія витікає через необдумане або несвоєчасного дії.",
        "Пливіть за течією життя без оцінок і спроб зрозуміти її.",
        "Чи не переоцінюйте свої сили: це може привести до перенапруження.",
        "Події повністю поза Вашим контролем.",
        "Довіряйте тому, що з Вами відбувається.",
        "Розмірковуйте і не поспішайте з діями.",
        "Настав час діяти, навіть якщо від Вас потрібно стрибнути в порожнечу.",
        "Не намагайтеся вперто проявляти свою ВОЛЮ.",
        "Розкрийтеся і пропустіть світло в ту частину свого життя, яка до цих пір була таємницею.",
        "Твій гаманець не буде порожній: знати буде щодня грошей хрускіт!",
        "Ти будеш жити легко весь рік, їсти, пити і співати, не знати тривог.",
        "У Новому році потрібно серйозно подумати про продовження роду!",
        "Менше зловживайте спиртним у Новому році, а то розбудіть дракона в дружині.",
        "У Новому році виконуй будь-які забаганки своєї половинки, і буде тобі щастя!",
        "Підкоривши одну гору, починай штурмувати іншу ...",
        "Приплив енергії допоможе Вам впоратися з великим обсягом незапланованих робіт.",
        "Прийміть те, що ви не можете змінити, і ви будете почувати себе краще.",
        "Природа, час і терпіння - три великих лікаря.",
        "Настав час діяти!",
        "Прийшов час закінчити старе і почати нове.",
        "Нехай мир наповниться спокоєм і доброзичливістю.",
        "Робота з новими партнерами буде дуже вигідним.",
        "Працюйте над дипломатичними здібностями - вони дуже знадобляться для реалізації ідей.",
        "Розмірковуйте і не поспішайте з діями.",
        "Дозвольте співчуттю направляти ваші рішення.",
        "Результат Ваших дій може виявитися несподіваним.",
        "Романтика перемістить вас в новому напрямку.",
        "З цього моменту ваша доброта приведе вас до успіху.",
        "Сьогодні у вас буде красивий день.",
        "Сім разів відміряйте, один раз відріжте!",
        "Слухайте кожного. Ідеї ​​приходять звідусіль.",
        "Солов'я байками не годують.",
        "Зосередьтеся на родині і гармонії з навколишнім світом.",
        "Щасливе життя прямо перед вами.",
        "Тепер настав час спробувати щось нове.",
        "Терпіння! Ви майже у мети.",
        "Удача проводить Вас через всі важкі часи.",
        "Приділіть особливу увагу старій дружбі.",
        "Гарний час, щоб закінчити старі починання.",
        "Хороші новини прийдуть до вас поштою.",
        "Добре зроблене краще, ніж добре сказане.",
        "Хоч деякі і намагаються вам перешкодити, ви все одно досягнете поставлених цілей.",
        "Людина ніколи не старий, щоб вчитися. Нові знання принесуть Вам успіх.",
        "Що не робиться - все на краще.",
        "Це час, щоб рухатися. Ваш настрій поліпшиться.",
        "Вам належить розглянути несподівана пропозиція",
        "Робіть те, чого просить душа і тіло",
        "Не залишайте зусиль і отримаєте бажане",
        "Хтось потребує вашої підтримки",
        "Не шукайте зовнішніх ворогів: щоб зрозуміти, що заважає Вашому розвитку, загляньте всередину себе.",
        "Пам'ятайте, що справжнє партнерство може існувати тільки між цільними особистостями.",
        "Будьте уважні до підказок долі.",
        "Якщо колодязь засмічений, то саме час його очистити.",
        "Виграш виходить від того, з чим Ви повинні розлучитися.",
        "Дійте у відповідності не зі старими авторитетами, а з тим, що Ви вважаєте правильним для Вас.",
        "Прийшов час закінчити старе і почати нове.",
        "Якщо не хочете серйозних потрясінь, проаналізуйте Ваше ставлення до власної особистості.",
        "Завершіть те, що почали.",
        "Будьте терплячі, і якщо рішення Ваше правильно, Всесвіт підтримає його.",
        "Не піддавайтеся емоціям.",
        "Насолоджуйтесь удачею і діліться нею з оточуючими Вас людьми.",
        "Зосередьтеся на сьогоденні.",
        "Чи не переоцінюйте свої сили: це може привести до перенапруження.",
        "Розмірковуйте і не поспішайте з діями."
      ]
    })}
  ]
  
  for item in itemList:
    variable = Variable.query.filter_by(scope=item['scope'], name=item['name']).first()
    if not variable:
      variable = Variable()
      variable.scope = item['scope']
      variable.name = item['name']
      variable.raw_value = item['raw_value']
      variable.save()
    else:
      variable.raw_value = item['raw_value']
      variable.save()
Ejemplo n.º 10
0
    @property
    def b(self):
        _b = np.zeros(shape=(self.m, 1))
        for index, c in enumerate(self.constraints):
            _b[index] = c.right_side
        return _b

    def __repr__(self):
        m = '\nModel {0}:\n'.format(self.name)
        m = m + 'min Fo(x)= '
        for index, v in enumerate(self.fo.variables):
            m = m + str(self.fo.coefficients[index]) + '*' + str(v) + ' '
        m = m + '\n\n'
        for r in self.constraints:
            m = m + str(r) + '\n'
        return m


if __name__ == '__main__':
    x1 = Variable(name='x1')
    x2 = Variable(name='x2', negative=True)
    x3 = Variable(name='x3', free=True)
    x4 = Variable(name='x4', free=True)
    fo = ObjectiveFunction('max', [(3, x1), (2, x2), (-1, x3), (1, x4)])
    c1 = Constraint([(1, x1), (2, x2), (1, x3), (-1, x4)], '<=', 5)
    c2 = Constraint([(-2, x1), (-4, x2), (1, x3), (1, x4)], '<=', -1)
    model = LinearModel(objective_function=fo, constraints_list=[c1, c2])
    model.standard_form()
    print('Linear Model unit test passed')
Ejemplo n.º 11
0
                raise TypeError("Coefficient must be a number")
            if not isinstance(v, Variable):
                raise TypeError("Variable must be a Variable() object")
            self.coefficients.append(c)
            self.variables.append(v)

    def __repr__(self):
        f_rep = '{0}:'.format(self.name)

        for index, c in enumerate(self.coefficients):
            if c >= 0:
                f_rep = f_rep + ' + {0}*{1}'.format(
                    str(c), self.variables[index].internal_name)
            else:
                f_rep = f_rep + ' {0}*{1}'.format(
                    str(c), self.variables[index].internal_name)

        f_rep = f_rep + ' {0} {1}'.format(self.equality_operator,
                                          self.right_side)

        return f_rep


if __name__ == '__main__':
    x1 = Variable()
    x2 = Variable()
    x3 = Variable()

    fo = ObjectiveFunction('min', [(1, x1), (2, x2)])
    c1 = Constraint([(-1, x1), (-2, x2)], '>=', -4)
    print('Function unit test passed')
Ejemplo n.º 12
0
from models.variable import Variable, VariableConstraint
from models.function import ObjectiveFunction, Constraint
from models.linear_model import LinearModel
from models.solver import LinearSolver

# Problem setup Branch and Bound
x1 = Variable(name='x1', integer=True)
x2 = Variable(name='x2', integer=True)

fo = ObjectiveFunction('max', [(3, x1), (5, x2)])
c1 = Constraint([(2, x1), (4, x2)], '<=', 25)
c2 = Constraint([(1, x1)], '<=', 8)
c3 = Constraint([(2, x2)], '<=', 10)

model = LinearModel(objective_function=fo, constraints_list=[c1, c2, c3])
solver = LinearSolver(linear_model=model)
print(solver.best_solution)
"""
# Problem setup (Branch and Bound with degeneracy
x1 = Variable(name='x1', integer=True)
x2 = Variable(name='x2', integer=True)

fo = ObjectiveFunction('max', [(3, x1), (7, x2)])
c1 = Constraint([(1, x1)], '<=', 3.5)
c2 = Constraint([(5, x1), (-4, x2)], '<=', 10)
c3 = Constraint([(4/7, x1), (2, x2)], '<=', 9)

model = LinearModel(objective_function=fo, constraints_list=[c1, c2, c3])
solver = LinearSolver(linear_model=model)
print(solver.best_solution)
"""