dva-1 num ++

import React from 'react';
import dva, { connect } from 'dva';
import './style.css';

// 1. Initialize
const app = dva();

console.log(2);

// 2. Model
app.model({
  namespace: 'count',
  state: 0,
  reducers: {
    add  (count) { return count + 1 },
    minus(count) { return count - 1 },
  },
});

class TestError extends React.Component {
  componentDidCatch(e) {
    alert(e.message);
  }
  componentDidMount() {
    // throw new Error('a');
  }
  render() {
    return <div>TestError</div>
  }
}

// 3. View
const App = connect(({ count }) => ({
  count
}))(function(props) {
  return (
    <div>
      <TestError />
      <h2>{ props.count }</h2>
      <button key="add" onClick={() => { props.dispatch({type: 'count/add'})}}>+</button>
      <button key="minus" onClick={() => { props.dispatch({type: 'count/minus'})}}>-</button>
    </div>
  );
});

// 4. Router
app.router(() => <App />);

// 5. Start
app.start('#root');
MOEA-DVA是一种多目标优化算法,它基于向量评分函数和动态变异策略,可以用于解决多目标优化问题。以下是一个Python实现的MOEA-DVA算法的代码示例: ```python import numpy as np def moea_dva(pop_size, num_obj, num_var, max_gen, f, g, xl, xu): # 初始化种群 pop = np.random.rand(pop_size, num_var) * (xu - xl) + xl # 初始化权重向量 w = np.random.rand(pop_size, num_obj) w = w / np.tile(np.sum(w, axis=1)[:, None], (1, num_obj)) # 初始化参考点 z = np.min(f(pop), axis=0) # 开始迭代 for gen in range(max_gen): # 计算适应度 fit = np.sum(w * (f(pop) - z), axis=1) # 计算变异概率 p = np.exp(-fit) p = p / np.sum(p) # 选择父代 idx = np.random.choice(pop_size, 2, p=p) p1 = pop[idx[0], :] p2 = pop[idx[1], :] # 变异 beta = 0.5 * (1 + 2 * np.random.rand(num_var)) beta[beta > 1] = 2 - beta[beta > 1] beta[beta < 0] = 0 c1 = 0.5 * ((1 + beta) * p1 + (1 - beta) * p2) c2 = 0.5 * ((1 - beta) * p1 + (1 + beta) * p2) # 交叉 cr = 0.5 * (1 + np.random.rand(num_var)) cr[cr > 1] = 2 - cr[cr > 1] cr[cr < 0] = 0 c = np.zeros((2, num_var)) c[0, :] = cr * c1 + (1 - cr) * c2 c[1, :] = (1 - cr) * c1 + cr * c2 # 修剪 c[c < xl] = xl[c < xl] c[c > xu] = xu[c > xu] # 更新参考点 z = np.min(np.vstack((z, f(c))), axis=0) # 更新种群 pop = np.vstack((pop, c)) w = np.vstack((w, np.random.rand(2, num_obj))) w = w / np.tile(np.sum(w, axis=1)[:, None], (1, num_obj)) idx = np.argsort(np.sum(w, axis=0)) pop = pop[idx[:pop_size], :] w = w[idx[:pop_size], :] # 返回最终种群 return pop ``` 其中,pop_size是种群大小,num_obj是目标函数个数,num_var是决策变量个数,max_gen是最大迭代次数,f是目标函数,g是约束函数,xl和xu是决策变量的上下界。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值