2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3
 
 Re: Задача квадратичной оптимизации (практический случай)
Сообщение04.02.2019, 14:21 


16/08/05
1146
Если действительные, то

(моделька)

Код:
var x;
var y;
var z;
var u;

s.t. st1 : x+y+z+u <= 2;
s.t. st2 : y*z <= 0;

minimize F : (x-1/2)^2 + (y-3/10)^2 + (z-7/10)^2 + (u-2/5)^2;

#option solver cplex;
#option cplex_options 'timing=1 threads=3 display=1 mipdisplay=4 mipinterval=10000';

#option solver gurobi;
#option gurobi_options 'logfreq=10 outlev=1 timing=1 threads=3';

option solver scip;

solve;

printf ("\nF = " & F & "\n");
printf ("{x,y,z,u} = {" & x & "," & y & "," & z & "," & u & "}");
printf ("\n");

и

(сиплех и гуроби не будут решать)

Код:
CPLEX 12.8.0.0: QP Hessian is not positive semi-definite.
Gurobi 8.1.0: quadratic objective or constraint is not positive definite

но

(сцип решает)

Код:
SCIP version 6.0.0 [precision: 8 byte] [memory: block] [mode: optimized] [LP solver: SoP
lex 4.0.0] [GitHash: 77d3bc8]
Copyright (C) 2002-2018 Konrad-Zuse-Zentrum fuer Informationstechnik Berlin (ZIB)

External codes:
  SoPlex 4.0.0         Linear Programming Solver developed at Zuse Institute Berlin (sop
lex.zib.de) [GitHash: 82cab95]
  CppAD 20180000.0     Algorithmic Differentiation of C++ algorithms developed by B. Bel
l (www.coin-or.org/CppAD)
  Ipopt 3.12.12        Interior Point Optimizer developed by A. Waechter et.al. (www.coi
n-or.org/Ipopt)
  ASL                  AMPL Solver Library developed by D. Gay (www.netlib.com/ampl)


number of parameters = 2428
non-default parameter settings:
display/headerfreq = 32
lp/threads = 3


read problem <C:\Users\User\AppData\Local\Temp\at3728.nl>
============

original problem has 5 variables (0 bin, 0 int, 0 impl, 5 cont) and 3 constraints

feasible solution found by trysol heuristic after 0.0 seconds, objective value 9.900000e
-01
presolving:
(round 1, fast)       0 del vars, 0 del conss, 1 add conss, 1 chg bounds, 0 chg sides, 0
chg coeffs, 1 upgd conss, 0 impls, 0 clqs
(round 2, fast)       0 del vars, 0 del conss, 1 add conss, 10 chg bounds, 0 chg sides,
0 chg coeffs, 1 upgd conss, 0 impls, 0 clqs
presolving (3 rounds: 3 fast, 1 medium, 1 exhaustive):
0 deleted vars, 0 deleted constraints, 1 added constraints, 10 tightened bounds, 0 adde
d holes, 0 changed sides, 0 changed coefficients
0 implications, 0 cliques
presolved problem has 5 variables (0 bin, 0 int, 0 impl, 5 cont) and 4 constraints
      1 constraints of type <linear>
      2 constraints of type <bounddisjunction>
      1 constraints of type <quadratic>
Presolving Time: 0.00
transformed 1/2 original solutions to the transformed problem space

time | node  | left  |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |c
onfs|strbr|  dualbound   | primalbound  |  gap
  0.0s|     1 |     0 |     2 |     - | 581k|   0 |   0 |   5 |   4 |   5 |   5 |   0 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf

******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt
******************************************************************************

  0.0s|     1 |     0 |     3 |     - | 585k|   0 |   0 |   5 |   4 |   5 |   6 |   1 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf
  0.0s|     1 |     0 |     4 |     - | 585k|   0 |   0 |   5 |   4 |   5 |   7 |   2 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf
  0.0s|     1 |     0 |     5 |     - | 585k|   0 |   0 |   5 |   4 |   5 |   8 |   3 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf
  0.0s|     1 |     0 |     6 |     - | 585k|   0 |   0 |   5 |   4 |   5 |   9 |   4 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf
  0.0s|     1 |     0 |     7 |     - | 589k|   0 |   0 |   5 |   4 |   5 |  10 |   5 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf
  0.0s|     1 |     0 |     8 |     - | 589k|   0 |   0 |   5 |   4 |   5 |  11 |   6 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf
  0.0s|     1 |     0 |     9 |     - | 589k|   0 |   0 |   5 |   4 |   5 |  12 |   7 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf
  0.0s|     1 |     0 |    10 |     - | 589k|   0 |   0 |   5 |   4 |   5 |  13 |   8 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf
  0.0s|     1 |     0 |    11 |     - | 591k|   0 |   0 |   5 |   4 |   5 |  14 |   9 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf
  0.0s|     1 |     0 |    12 |     - | 591k|   0 |   0 |   5 |   4 |   5 |  15 |  10 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf
  0.0s|     1 |     0 |    13 |     - | 591k|   0 |   0 |   5 |   4 |   5 |  12 |  11 |
  0 |   0 |-1.000000e-09 | 9.900000e-01 |    Inf
L 0.1s|     1 |     0 |    38 |     - | 591k|   0 |   0 |   5 |   4 |   5 |  12 |  11 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    38 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  12 |  11 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    41 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  13 |  12 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    44 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  14 |  13 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    45 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  15 |  14 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    46 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  11 |  15 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    47 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  12 |  16 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    48 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  13 |  17 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    49 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  14 |  18 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    50 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  15 |  19 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    51 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  16 |  20 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    52 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  11 |  21 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    53 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  12 |  22 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    54 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  13 |  23 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    55 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  14 |  24 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    56 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  15 |  25 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    57 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  16 |  26 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    58 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  14 |  27 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    59 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  15 |  28 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    60 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  16 |  29 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
time | node  | left  |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |c
onfs|strbr|  dualbound   | primalbound  |  gap
  0.1s|     1 |     0 |    61 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  17 |  30 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    62 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  18 |  31 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    63 |     - | 634k|   0 |   0 |   5 |   4 |   5 |  19 |  32 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    64 |     - | 635k|   0 |   0 |   5 |   4 |   5 |  17 |  33 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    65 |     - | 635k|   0 |   0 |   5 |   4 |   5 |  18 |  34 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    66 |     - | 635k|   0 |   0 |   5 |   4 |   5 |  19 |  35 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    67 |     - | 635k|   0 |   0 |   5 |   4 |   5 |  20 |  36 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    68 |     - | 646k|   0 |   0 |   5 |   4 |   5 |  21 |  37 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    69 |     - | 650k|   0 |   0 |   5 |   4 |   5 |  22 |  38 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    70 |     - | 650k|   0 |   0 |   5 |   4 |   5 |  20 |  39 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    71 |     - | 650k|   0 |   0 |   5 |   4 |   5 |  21 |  40 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    72 |     - | 650k|   0 |   0 |   5 |   4 |   5 |  22 |  41 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    73 |     - | 650k|   0 |   0 |   5 |   4 |   5 |  23 |  42 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    74 |     - | 650k|   0 |   0 |   5 |   4 |   5 |  24 |  43 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    75 |     - | 650k|   0 |   0 |   5 |   4 |   5 |  25 |  44 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    76 |     - | 650k|   0 |   0 |   5 |   4 |   5 |  23 |  45 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    77 |     - | 650k|   0 |   0 |   5 |   4 |   5 |  24 |  46 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    78 |     - | 650k|   0 |   0 |   5 |   4 |   5 |  25 |  47 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    79 |     - | 650k|   0 |   0 |   5 |   4 |   5 |  26 |  48 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    80 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  27 |  49 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    81 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  28 |  50 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    82 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  26 |  51 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    83 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  27 |  52 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    84 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  28 |  53 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    85 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  29 |  54 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    86 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  30 |  55 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    87 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  31 |  56 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    88 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  29 |  57 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    89 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  30 |  58 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    90 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  31 |  59 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    91 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  32 |  60 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    92 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  33 |  61 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
time | node  | left  |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |c
onfs|strbr|  dualbound   | primalbound  |  gap
  0.1s|     1 |     0 |    93 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  34 |  62 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    94 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  32 |  63 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    95 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  33 |  64 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    96 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  34 |  65 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     0 |    97 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  35 |  66 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
  0.1s|     1 |     2 |    97 |     - | 656k|   0 |   0 |   5 |   4 |   5 |  35 |  66 |
  0 |   0 |-1.000000e-09 | 9.801000e-01 |    Inf
* 0.1s|     4 |     3 |   139 |  22.3 | 659k|   3 |   - |   5 |   4 |   5 |  30 | 103 |
  0 |   0 |-1.000000e-09 | 4.900000e-01 |    Inf
* 0.1s|     5 |     2 |   176 |  26.0 | 659k|   3 |   - |   5 |   4 |   5 |  26 | 135 |
  0 |   0 |-1.000000e-09 | 9.000000e-02 |    Inf

SCIP Status        : problem is solved [optimal solution found]
Solving Time (sec) : 0.11
Solving Nodes      : 5
Primal Bound       : +8.99999989999999e-02 (5 solutions)
Dual Bound         : +8.99999989999999e-02
Gap                : 0.00 %

optimal solution found

optimal solution found

F = 0.09000072024651419
{x,y,z,u} = {0.5002169481274188,0,0.7003793013180546,0.40072753730785526}


-- Пн фев 04, 2019 16:27:14 --

MiniZinc + SCIP - свободны.

 Профиль  
                  
 
 Re: Задача квадратичной оптимизации (практический случай)
Сообщение04.02.2019, 14:36 
Аватара пользователя


12/03/11
688
SCIP дает правильный ответ на данной задаче. Но в целом гарантируется ли что находится именно глобальный минимум?

 Профиль  
                  
 
 Re: Задача квадратичной оптимизации (практический случай)
Сообщение04.02.2019, 14:47 


16/08/05
1146
Вроде бы cplex и gurobi гарантировано получают глобальный оптимум (если хватит мощности и времени дождаться результата), т.к. заточены чисто под симплекс методы. Но scip - сложно сказать, надо читать его документацию.

 Профиль  
                  
 
 Re: Задача квадратичной оптимизации (практический случай)
Сообщение04.02.2019, 16:10 


14/01/11
2919
Попробовал загнать в z3. Похоже, с нелинейной оптимизацией всё плохо.

(Оффтоп)

Код:
(declare-const x Real)
(declare-const y Real)
(declare-const z Real)
(declare-const u Real)

(assert (<= (+ x y z u) 2 ))
(assert (<= x 1))
(assert (<= y 1))
(assert (<= z 1))
(assert (<= u 1))
(assert(= (* y z) 0))
(minimize (+(* (- x 0.5)(- x 0.5)) (* (- y 0.3)(- y 0.3)) (* (- z 0.7)(- z 0.7)) (* (- u 0.4)(- u 0.4)) ))
(check-sat)
(get-model)
(get-objectives)

Выдаёт:
Код:
unknown

С другой стороны, если спросить, есть ли решение, не превосходящее $0.09$, получается следующее:

(Оффтоп)

Код:
(declare-const x Real)
(declare-const y Real)
(declare-const z Real)
(declare-const u Real)
(declare-const F Real)
(assert (= F (+(* (- x 0.5)(- x 0.5)) (* (- y 0.3)(- y 0.3)) (* (- z 0.7)(- z 0.7)) (* (- u 0.4)(- u 0.4)) )))
(assert (<= (+ x y z u) 2 ))
(assert (<= x 1))
(assert (<= y 1))
(assert (<= z 1))
(assert (<= u 1))
(assert(= (* y z) 0))
(assert (<= F 0.09))
(check-sat)
(get-model)

Ответ:
Код:
sat
(model
  (define-fun x () Real
    (/ 1.0 2.0))
  (define-fun y () Real
    0.0)
  (define-fun z () Real
    (/ 7.0 10.0))
  (define-fun u () Real
    (/ 2.0 5.0))
  (define-fun F () Real
    (/ 9.0 100.0))
)
)

Если неравенство заменить на строгое, ответа не находит.

 Профиль  
                  
 
 Re: Задача квадратичной оптимизации (практический случай)
Сообщение04.02.2019, 17:09 
Заслуженный участник
Аватара пользователя


01/08/06
3054
Уфа
DLL в сообщении #1374065 писал(а):
SCIP дает правильный ответ на данной задаче. Но в целом гарантируется ли что находится именно глобальный минимум?
Да как же он может хоть что-то гарантировать, если невооружённым глазом видно, что решение находится численно, с погрешностью?

 Профиль  
                  
 
 Re: Задача квадратичной оптимизации (практический случай)
Сообщение04.02.2019, 18:53 


16/08/05
1146
Если целевая функция реальной задачи подобна тестовой, т.е. та же сумма $m$ квадратов, то задача больше похожа на бинарную для SAT-солверов или LocalSearch-солверов. LocalSearch точно не гарантирует обнаружение глобального оптимума, SAT - не знаю. Т.е. $x_i$ - не переменные, а параметры. Тогда новые булевы переменные - пары параметров $x_i$, для каждой пары нужно найти, кого из двух в паре обнулить. Пусть $n$ - количество пар, $n<\frac{m(m-1)}{2}$. Тогда полный перебор будет $2^n$ вариантов.

QP методы гарантируют сходимость к глобальному оптимуму, но вроде бы полиномиальность времени решения не обещают.

 Профиль  
                  
 
 Re: Задача квадратичной оптимизации (практический случай)
Сообщение05.02.2019, 01:09 
Аватара пользователя


12/03/11
688
worm2 в сообщении #1374110 писал(а):
DLL в сообщении #1374065 писал(а):
SCIP дает правильный ответ на данной задаче. Но в целом гарантируется ли что находится именно глобальный минимум?
Да как же он может хоть что-то гарантировать, если невооружённым глазом видно, что решение находится численно, с погрешностью?

Одно к другому отношения не имеет. Например, в алгебраической геометрии вполне законно поставить вопрос найти все решения системы полиномиальных уравнений (нульмерного идеала) с определенной точностью. Здесь, я хочу тоже самое. Найти глобальный минимум приближенно :-)

 Профиль  
                  
 
 Re: Задача квадратичной оптимизации (практический случай)
Сообщение05.02.2019, 01:39 


17/10/08

1313
Глобальный оптимум, с оговорками на приближенность вычислений, найти можно.

Один из подходов, как уже говорилось, переход к частично-целочисленной выпуклой квадратичной задаче. Решение такой задачи должно привести к глобальному оптимуму, т.к. выпуклая задача решается «точно», а если пседобулевы переменные оказываются нецелыми, то с ними борются с помощью ветвлений. С высокой степенью вероятности можно утверждать, если пакет «ест» такие задачи, то он, гипотетически, может найти глобальный оптимум.

Если оставить задачу не выпуклой, то тушите свет при сколь-нибудь больших размерностях. Хотя некоторые системы моделирования или даже решатели, в принципе, сами могут переформулировать задачи к стандартным «формам» (выпуклым/линейным) – есть набор приемов.

Другой подход применим, если все квадратичные члены критерия – чистые квадраты. Насколько я понял, так оно и есть. В этом случае можно вообще избавиться от нелинейности, заменив квадраты ломанными - есть такой прием приближенной линеаризации. Точность критерия, конечно, несколько пострадает, но на практике такое часто приемлемо.

В силу выпуклости функции квадрата, появятся только непрерывные дополнительные переменные по одной штуке на один отрезок ломанной – число переменных значительно вырастет. Но сильно переживать на счет этот не стоит, так как основную проблему решения таких задач составляют целочисленные переменные (здесь – пседобулевы). Итого, получим приближенную частично-целочисленную линейную задачу. Такие задачи неплохо решает бесплатный пакет CBC, а также условно-бесплатный SCIP. Упомянутые выше коммерческие решатели делают это очень хорошо.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2, 3

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: B@R5uk


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group