Взгляните на Microsoft Solver Foundation .
С его помощью вы можете написать такой код:
SolverContext context = SolverContext.GetContext();
Model model = context.CreateModel();
Decision a = new Decision(Domain.Real, "a");
Decision b = new Decision(Domain.Real, "b");
Decision c = new Decision(Domain.Real, "c");
model.AddDecisions(a,b,c);
model.AddConstraint("eqA", -44.3940 == 50*a + 37*b + c);
model.AddConstraint("eqB", -45.3049 == 43*a + 39*b + c);
model.AddConstraint("eqC", -44.9594 == 52*a + 41*b + c);
Solution solution = context.Solve();
string results = solution.GetReport().ToString();
Console.WriteLine(results);
Вот результат:
=== Отчет службы поддержки Solver ===
Дата и время: 20.04.2009 23:29:55
Название модели: по умолчанию
Запрошенные возможности: LP
Время решения (мс): 1027
Общее время (мс): 1414
Статус завершения решения: оптимальный
Выбранный решатель: Microsoft.SolverFoundation.Solvers.SimplexSolver
Директивы:
Microsoft.SolverFoundation.Services.Directive
Алгоритм: Первичный
Арифметика: Гибрид
Цены (точные): По умолчанию
Цены (двойные) : SteepestEdge
Основа: Slack
Pivot Count: 3
=== Детали решения ===
Цели:
Решения:
a: 0.0785250000000004
b: -0.180612500000001
c: -41.6375875
Метод setInterval
будет запущен в области видимости окна, поэтому функция кроссфейда там не существует. Вы должны создать анонимную функцию, чтобы было создано закрытие, содержащее ссылку на функцию:
cInterval = window.setInterval(function() { crossfade(); }, 5000);
Когда setInterval
передается строка, строка оценивается в глобальной области. Это объясняет, почему перекрестное затухание
не отображается при срабатывании setInterval
.
setInterval
также можно передать ссылку на функцию:
setInterval(crossfade, 5000);
, и в этом случае ваш код будет работать должным образом , поскольку кроссфейд
виден в точке, где вы вызываете setInterval
.
Используя setInterval ('crossfade ()', 5000);
не 'не создает замыкание - он создает строку как eval ()
d. Вместо этого вы должны использовать функцию:
setInterval(function() { crossfade(); }, 5000);
Чтобы избежать загрязнения глобальной области, вы можете сделать несколько вещей: