Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel解算器:有没有一种方法可以迭代2个变化的变量?_Excel_Solver - Fatal编程技术网

Excel解算器:有没有一种方法可以迭代2个变化的变量?

Excel解算器:有没有一种方法可以迭代2个变化的变量?,excel,solver,Excel,Solver,我对solver有一个问题,简化版本如下: 所以我有一个嵌套的If语句,它描述了2个可变变量x,y的条件。例如: 在一个单元格中:IFANDx=0.5,y=5,1,0 它下面的单元格:IFANDx=1.9,y=9,1,0 目标函数是这两个变量的总和 解算器或目标搜索,除非我给它,否则awnser似乎不能得到除0,0以外的awnser。 我的实际问题是,我有6个IF单元,我试图找到一个x,y,使我的目标函数最大化。我希望excel尽可能多地进行组合 有什么想法或其他方法可以做到这一点吗?谢谢 解算

我对solver有一个问题,简化版本如下: 所以我有一个嵌套的If语句,它描述了2个可变变量x,y的条件。例如: 在一个单元格中:IFANDx=0.5,y=5,1,0 它下面的单元格:IFANDx=1.9,y=9,1,0 目标函数是这两个变量的总和 解算器或目标搜索,除非我给它,否则awnser似乎不能得到除0,0以外的awnser。 我的实际问题是,我有6个IF单元,我试图找到一个x,y,使我的目标函数最大化。我希望excel尽可能多地进行组合

有什么想法或其他方法可以做到这一点吗?谢谢

解算器在这个玩具问题中找不到最优解的原因是使用IF和and语句使问题非凸。对于非凸问题,解算器默认使用的GRG非线性解方法不能保证最优解,因为它可能被困在非最优的局部最优解中

话虽如此,有一种方法可以将你的问题表述为一个混合整数规划,尽管它仍然是非凸的,但可以用求解器的单纯形LP方法来求解,并给出一个保证的最大值

模型设置

以下是电子表格设置的屏幕截图:

为了方便起见,我对几个数量使用了命名范围。 特别是:

 - B2 --> x_var
 - C2 --> x_UB1
 - D2 --> x_LB1
 - E2 --> x_UB2
 - F2 --> x_LB2
对于第3行,我使用相同的约定,但是我们没有x,而是y

红细胞B4和E4具有您描述的条件,蓝细胞B5具有它们的总和

例如,B4的条件为

然后z=1==>LB_x
 =IF(AND(x_var<=x_UB1,x_var>=x_LB1,y_var<=y_UB1,y_var>=y_LB1),1,0)
LB_x * z <= x <= UB_x * z
LB_y * z <= y <= UB_y * z
z is binary
J2: =x_var-cond1_true*x_UB1
J3: =y_var-cond1_true*y_UB1
K2: =x_LB1*cond1_true-x_var
K3: =y_LB1*cond1_true-y_var