Решатель Excel с операторами if - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь решить проблему оптимизации с помощью решателя.Одно из условий должно быть:

if A=1 then B and or C = 1

Я стараюсь избегать конкретной комбинации, в которой выполняются все следующие условия:

  • A=1
  • B=0
  • C=0

Я пытался A*10+B+C /= 10, но у решателя также нет неравных ограничений.

Может кто-нибудь указать мне направильное направление?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Если вы представите таблицу истинности для вашей функции, вы получите что-то вроде этого:

ABC f

0 0 0 0

...

1 0 0 1

...

1 1 1 0

Таким образом, мы можем использовать булевы логические операторы и создать следующее эквивалентное представление:

Истинно для f = A и Not (B) и Not (C)

Эта формула возвращает истину, только если A = 1, B = 0, C = 0 и ложь любым другим способом.Переведите его в двоичное представление:

Истина равна 1, ложь равна 0 и равна * или равна +, а не L равна (1-L)

И вы получите:

f = A * (1-B) * (1-C)

Если вы столкнетесь с некоторыми более сложными условиями, вы можете сделать сложное выражение.Нарисуйте свою таблицу истинности, составьте аналогичное выражение «ands» для каждой строки, где f = 1, и поставьте между ними «или».Как это: (A и не (B) и C) или (не (A), не (B), C) или ....

Есть более эффективные способы сделать это, эффективные в смысле создания более коротких логических выражений.Если это важно для вас, вы должны взглянуть на технику карт Карно.https://en.m.wikipedia.org/wiki/Karnaugh_map (я думаю, что статья вики слишком сложна для этой простой операции. Может быть, пример YouTube продемонстрирует это лучше)

В противном случае она действительно должна охватывать все, что вам нужно:)

0 голосов
/ 22 ноября 2018

Иметь ячейку D с вычислением B + C, установить в решателе ограничение, что эта ячейка должна быть равна 1. Или больше или равна 1 - не уверен, так как вы не проясните все состоянияb & c ...

Затем добавьте ограничение, что A должно быть меньше или равно D.

...