2016-07-11 6 views
-1

Я разработал макрос excel, который запускает решатель на сайте поставщика, а другой на клиенте. Условия ограничения создаются «на лету» на основе пользовательского ввода. Однако для более чем одного решения я получаю другой ответ.Как сделать решателя excel одинаковым образом выдавать каждый раз, когда есть несколько решений

enter image description hereenter image description here

Что я могу получить то, что решатель уравнения связей получить упорядочены по имени ячейки, которые отличаются в двух листах? Если я могу остановить упорядочение ограничений, это может быть решено. Как это сделать? enter image description hereenter image description here

Редактировать У меня есть ограничения, в том порядке, хотя это было глупо подходить к проблеме, но даже после того, что решения приходят разные в разных рабочих книгах Excel. enter image description here

+0

Solver не гарантирует одинаковое решение каждый раз, просто ** a ** решение. – SeanC

ответ

0

Если вы даете каждому из ваших ограничений клеток имени через Formulas > Define Name, вы можете использовать это имя для ограничения, введя его в ячейках справочного поля диалогового окна Add Constraint:

Add Constraint dialog

ограничения затем будут отображаться и упорядочены по имени, а не по адресу, в окне Solver:

Solver window (crop)

Вы можете сделать то же самое, если вы настройки решателя из VBA кода и т.д .:

SolverAdd CellRef:="cell1", Relation:=1, FormulaText:="60" 

я не уверен, является ли это хорошее решение вашей проблемы, хотя. Если система уравнений, которую вы пытаетесь решить, имеет несколько разных решений, результат выполнения Solver может зависеть не только от настроек ограничения и начальных значений, но и от предпочтений Solver, версий Excel и Solver и, вполне возможно, других свойств две системы, над которыми вы не контролируете. Некоторые вещи, которые вы могли бы попробовать, включают:

  • убедившись, что вы предварительно загрузить ваши переменные ячейки электронной таблицы с одинаковыми начальными значениями перед каждым Solver перспективе, и эксперимент с тем, что эти ценности должны быть
  • перестраивая систему уравнений одобрять конкретный результат. Например, вместо решения A + B = 100, который имеет бесконечно много одинаково хороших решений, решите максимизировать A * B при ограничении C = 100, где C = A + B.
  • , написание собственного алгоритма для поиска решение ваших уравнений в соответствии с введенными пользователем ограничениями. Если вам нужно было объяснить кому-то, как найти правильное решение, что бы вы им сказали, можете ли вы преобразовать его в код VBA?
+0

Я получил право на заказ, изменив свой код ... хотя и не совсем на вашем пути, но все же значения отличаются друг от друга в двух превосходных ... как сделать два одинаковым решением. Я использую «GRG Nonlinear». Несмотря на то, что любое оптимальное решение в порядке, но как его можно использовать в двух excel-книгах – norbdum

+0

См. Отредактированный ответ для предложений ... – nekomatic

+0

это не решает проблему, может быть, мне нужно написать собственный алгоритм;) – norbdum