Солвер Глюк?Excel VBA - PullRequest
       17

Солвер Глюк?Excel VBA

0 голосов
/ 10 декабря 2018

Я работаю над задачей оптимизации с использованием решателя, и каждый раз, когда я открываю параметры решателя, он добавляет дополнительные ограничения, которые я сам не добавлял.

Например.У меня есть три ограничения, которые я хочу использовать для этой проблемы.

$H$14 <= $H$13
$K$14 <= $K$13
$N$14 <= $N$13

Когда я сохраняю и закрываю решатель и запускаю его, он работает отлично.Затем, когда я снова открываю параметры решателя, нажимая кнопку решателя на вкладке «Данные» в Excel, чтобы просмотреть существующие ограничения, существует более 20 ограничений, которые не имеют смысла добавлять к ограничениям.Эти добавленные ограничения приводят к неправильному ответу решателя.

Дополнительные ограничения меняются каждый раз, когда я открываю решатель.Вот пример нескольких из них.

$K$14 <= $R$33
$K$14 <= $R$33
$K$14 <= $R$33
$K$14 <= $R$33
$K$14 <= $R$33
$H$14 <= $O$33
$H$14 <= $O$33
$H$14 <= $O$33
$H$14 <= $O$33
$P$21 <= $W$40
$P$21 <= $W$40
$P$21 <= $W$40
$P$21 <= $W$40

Он добавляет несколько повторов каждого добавленного ограничения, и все эти ячейки пусты, поэтому он полностью разрушает мое решение.Я разрабатываю эту программу для проекта, и мне нужно, чтобы она не мешала каждый раз, когда мой профессор открывает ограничения для наблюдения за тем, что я сделал.Я попытался открыть файл на разных компьютерах, и он делает то же самое.Кто-нибудь еще сталкивался с этим?Я делаю что-то не так, что приводит к этим дополнительным ограничениям?Любая помощь приветствуется.Я могу отправить файл, если кто-то захочет на него посмотреть.

Спасибо!

1 Ответ

0 голосов
/ 10 декабря 2018

не уверен, поможет ли это, но оно того стоит ...

У меня были похожие проблемы с моим Солвером (он запоминал мои предыдущие настройки и ограничения).Вы заметите, что Excel запоминает настройки (сценарии) вашего Солвера, сохраняя их как скрытые имена.Во-первых, вам нужно запустить код VBA, чтобы отобразить все имена:

Sub UnhideNames()
    Dim nme As Excel.Name

    For Each nme In Excel.Names
        nme.Visible = True
    Next nme
End Sub

После того, как вы запустите его, вернитесь в Формулы> «Диспетчер имен», и вы должны заметить набор определенных для Солвера диапазонов, которые выможно вручную удалить.Надеюсь, это решит ваши проблемы ... скрестив пальцы!

...